Employing fastboot for ultra small Atom processor designs

By using QNX fastboot technology on IntelAtom processor based ultra-small nanoETXexpress computer-on-modules, systems designers can achieve instant-on functionality while taking advantage of the x86 compatibility and high performance per watt of Intel Atom processors. Developers can achieve dramatic boot-time and performance gains by replacing the BIOS with customised early initialisation of peripherals. Furthermore, QNX fastboot technology helps developers to profit from the low power efficiency of nanoETXexpress technology by extensively using the zero power S5 sleep state (off) instead of power consuming sleep modes (S1-S4) at comparable wake up times.

Traditionally, x86 systems have relied on boot firmware called the BIOS, which provides a wide range of device compatibility and detects the system configuration at boot time. However, neither of these capabilities ranks high in embedded application requirements. Embedded solutions are typically niche, purpose-specific or mass-produced devices with the exact same configuration for each device. Some of these applications require boot-times in milliseconds. So the question is: How can developers achieve a fast, BIOS-less boot on open x86 processors rather than on dedicated controllers? Such an approach would be ideal for:• Real-time control and communication in automotive and security applications;• Machine controls such as soft PLCs and HMIs;• Mobile applications for measurement and diagnostics;• Mobile medical applications;• All other "sleeping" (Sleep state S5 = off) applications with a wake-on-x functions.

In the automotive sector, instant-on is advantageous for a range of applications, i.e. when a driver turns on the ignition, he wants to have all the vehicle's functions displayed instantly. This is not just a desirable goal for applications such as media consoles or navigation systems which have to instantly start. Car status data is an even more important application area, as data has to be shown on the PC display when the car is started or for real-time car control, which is realized via an embedded PC. Furthermore, instant-on is important for business applications, where data has to be available immediately without the driver having to use the ignition key, e.g. fork-lift truck drivers, courier service drivers, bus and lorry drivers etc. as even when a vehicle is stationary, work processes have to be carried out in order to save valuable time. Additionally, when the system switches itself off when not in use, energy and costs are being saved. This is where instant-on is an absolute must. Furthermore, applications which require regular updates, i.e of traffic data, even when a vehicle is switched off, could also profit from instant-on, as the on time is reduced saving battery operating time.

BIOS boot time The BIOS can be seen as a miniature operating system responsible for interfacing with the hardware. The portion of the BIOS that has the greatest effect on boot time is the boot code. This code, which executes on system power up, detects and initializes devices attached to the system.

Devices that require BIOS initialization include the keyboard, mouse, interrupt controllers, video card, CPU, cache, RAM, PCI devices, USB devices, sensors and disk drives. Besides having to detect and initialize each of these devices, the BIOS must also handle variations in quantity (for example, RAM) or features (for example, CPU support for 64-bit addressing). The BIOS must also execute the boot code extension for each device that has a BIOS expansion ROM. All this work is time-consuming and usually superfluous for embedded devices since in most cases they have a fixed configuration.

Booting from the BIOS allows a system design to support a wide range of hardware configurations and devices, but this flexibility comes at the cost of slower boot time. Since embedded systems typically consist of fixed hardware configurations, they should not have to bear these costs.

Fastboot timeBIOS boot takes time as the BIOS tries to support a multitude of hardware configurations. An obvious solution is to eliminate the BIOS boot portions that are not required for a particular embedded application. For the most part, this suffices to reduce boot times from a large number of seconds to under one second.

Fastboot is fast mostly because of the things that it does not do; and this approach is perfect for embedded applications, which are typically designed to carry out just one or a few things very well.

Customized bootBy customizing the boot sequence, the developer can eliminate unnecessary steps that the BIOS performs at boot time. The developer can also defer steps that are not required at boot time until they become absolutely necessary.

In a BIOS-based system, the BIOS assigns and configures the interrupts; in a fastboot configuration, the developer is responsible for routing interrupts. The most cost-effective way to do this from a boot time perspective is to hard-code the interrupt assignments so that they are known at compile time. This approach offers a simple yet effective way to improve boot times and to reduce the complexity of boot code. It also allows the developer to assign interrupts in ways that can improve performance. For instance, the developer could dedicate channels to high-traffic interrupts and share interrupt lines among low-traffic interrupts. Sharing IRQs across multiple devices incurs the run-time cost of executing the interrupt service routine for all devices associated with the triggered interrupt, irrespective of which device actually triggered the interrupt.

What is a processor?
Refers to a system that accepts a program as input, prepares it for execution and executes the process defined with data to produce results. Can be a short term for a microprocessor or central processing unit (CPU) in computer.