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.

Fig 1: The difference between hibernation and QuickBoot mechanisms

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
Up until now, basically two different methods for speeding up the launch time of Linux have been attempted.
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.
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.
| 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 |
| 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. |
The orientation of each component of QuickBoot in Linux/Android is explained in the figure below:
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.

* Linux : Kernel 2.6.x
* Others: Please contuct us.
| CPU Architecture |
Core type | SP2 | SMP3 | Reference board |
|---|---|---|---|---|
| ARM | ARM9, ARM11, Cortex-A8, Cortex-A9 and others |
Supported | In planning stage | Atmark Techno, Inc. Armadillo-500 FX (Equipped with Freescale i.MX31) |
| Others | Please contact us. | |||
SP2 : Single Processor
SMP3 : Symmetric Multiple Processor