Products

Ubiquitous QuickBoot
High-Speed System Boot Solution


Ubiquitous QuickBoot enables Android to be launched and restored to application execution state just in one second, the world’s fastest time

In recent years, the use of the Android and Linux for digital home electronics and mobile devices is on the rise as features become ever more complex. The time it takes for such devices to cold boot, however, can take more than a minute; this is something that manufacturer are working on to improve.

Ubiquitous QuickBoot is an independently developed solution based on a cutting edge technology that addresses such issues dramatically.

By preferentially restoring memory area necessary for booting system from nonvolatile storage to the RAM, the boot time has become overwhelmingly quick compared to other methods. In the implementation example of Android (*1), it has taken only one second (*2) to restore from the moment power is turned on to application execution state. This is the fastest in the world (*3) for booting Android. It should also be noted that instant booting is not dependent on the amount of memory being used by the application as the remaining memory areas are read sequentially only after booting thereby barely affecting user operations.

By utilizing this solution, manufacturers can develop digital home electronics and mobile devices with systems that can be instantly launched from near-zero standby power without compromising user operability.

The difference between hibernation and QuickBoot mechanisms
Fig 1: The difference between hibernation and QuickBoot mechanisms

Relationship between system state memory size and boot time
Fig.2: Relationship between system state memory size and boot time

Notes:

1. A mobile device platform offered by the Open Handset Alliance established by Google and others.
   Android is attracting increasing interest for use in a wide range of digital network devices in addition to mobile phones.

2. Measured by stopwatch using the following environment:

 ・Android / Armadillo-500FX (Atmark Techno, Inc., with no hardware modification)

 ・RAM size: 105 - 110 MB

 ・RAM image size: 128 MB (uncompressed, no XIP)

 ・Boot time from power-on to the following processes or operation-ready state:

  GlobalTime Approx. 1.3 second boot time

  GLSurfaceView Approx. 1.4 second boot time

  AnimateDrawables Approx. 1.4 second boot time

3. As of November 2010 according to Ubiquitous Corporation research

(Reference) Existing technologies for speeding up launch time

Up until now, basically two different methods for speeding up the launch time of Linux have been attempted.

 ・Speeding up through tuning

 ・Speeding up by applying hibernation


Speeding up through tuning has been studied by Linux distributors, the Linux community and CELF among others. The Linux kernel alone has reached a level where it can be launched in approximately 500ms. The launch time of the application itself, however, has not been improved to a level that can meet expectations as the application continues to enlarge although some considerable improvements have been made with the development of technologies such as prelink and ReadAhead.

On the other hand, speeding up by applying hibernation is starting to get adopted in some devices. With this method, the system state deployed in the RAM during operation of application is stored in a nonvolatile storage medium such as a flash memory, and then restored to the RAM after turning on the power. This method, however, has a drawback in the sense that launch time is delayed due to the increase in time it takes to read and deploy the state from the storage to the RAM in proportion to the increase in memory space used by the system or application.

QuickBoot SDK

Ubiquitous is offering components necessary for implementing QuickBoot to your target environment in the form of QuickBoot SDK (software development kit).

QuickBoot SDK has been designed to easily implement QuickBoot to your target environment by referring application examples of QuickBoot to specific reference boards, and by referring such application examples.

QuickBoot SDK includes following components and documents.

Components
    Component Overview of Features Offered in the form of
    QuickBoot Snapshot Script Shell script for running on Linux. Upon launching the desired application, run this shell script to store and restore the execution state of the application. Source
    QuickBoot Snapshot Driver Performs writing of RAM image to a nonvolatile memory as well as storing and restoring of peripheral I/O register values, etc. Binary
    QuickBoot BIOS/IRA QuickBoot BIOS operates independently from Linux to access the nonvolatile memory. QuickBoot IRA(*) is the core feature of instant booting which controls the preferential reading of immediately required data from the nonvolatile memory. (*)IRA: Intelligent Resource Allocator Binary
    Kernel Patch Offers modifications to Kernel necessary for applying QuickBoot as a Kernel Patch. Source
    Boot Loader Sample Offers boot loader sample to which QuickBoot has been applied. Source
Documents
    Type Description
    Developers Manual Technical information on QuickBoot such as overview of features, instructions on usage of various tools and application methods of QuickBoot
    Application Notes Provide practical explanations on modifications to existing applications and update methods of Kernel and userland that are required to be called into account when implementing QuickBoot to the target environment.
Block Diagram of components

The orientation of each component of QuickBoot in Linux/Android is explained in the figure below:

Steps to implementing QuickBoot

When implementing QuickBoot to the target environment, the following development procedures are required in accordance with the target environment.

[1] Implement a code for boot loader for transfering QuickBoot BIOS/IRA from nonvolatile memory to RAM

[2] Implement a feature for boot loader to toggle between normal boot and QuickBoot

[3] Customize QuickBoot Snapshot Script in accordance with the target application environment

[4] Develop functions for storing hardware-dependent parts or I/O registers

[5] Develop a Read/Write library to nonvolatile memory

[6] Develop functions for initializing hardware and restoring I/O registers, etc.

・Use the existing Suspend/Resume (equivalent of ACPI S4) compatible device drivers if supported device
   already supports the device driver.

・Additional development for Suspend/Resume to device driver is necessary for those not supported,
   and furthermore, for I/O’s whose device cannot be closed at time of acquiring snapshot images.

・For a normal I/O, the issue can also be resolved by using the insmod command to the driver module
   after launching QuickBoot.



Supported OS

* Linux : Kernel 2.6.x

* Others: Please contuct us.

Supported CPU architecture and reference boards
     
CPU
Architecture
Core type SP2 SMP3 Reference board
ARM     ARM9,
    ARM11,
    Cortex-A8,
    Cortex-A9
    and others
SupportedIn planning stage     Atmark Techno, Inc.
    Armadillo-500 FX
    (Equipped with Freescale i.MX31)
Others Please contact us.

SP2 : Single Processor

SMP3 : Symmetric Multiple Processor


An introduction video

Bye-Bye Standby Power


Comparison with the hibernation method


The example in the network connection application