EFI BIOS brings new capabilities and robustness to rugged SFF designsStory
April 26, 2010
Building robust systems requires ruggedness to be designed into the firmware and software, not just the hardware. Qi discusses the advantages of using EFI BIOS in small form factor designs for extreme rugged high-reliability applications such as military systems.
Extensible Firmware Interface (EFI) provides the current direction for the BIOS functionality needed in embedded systems. New EFI-based solutions can be used to make rugged embedded applications significantly more robust, secure, and reliable.
The following discussion focuses on embedded EFI BIOS, pre-boot applications, interfacing to custom hardware using EFI drivers, and EFI’s ability to provide the Small Form Factor (SFF) market with an enhanced rugged embedded solution for critical applications.
Dating from the late 1990s, EFI is an Intel development aimed at replacing the traditional BIOS that has been present on PC architecture systems and embedded motherboards from the beginning of their history. EFI is therefore already a significant development for the embedded systems industry because of the prevalence of the BIOS it aims to replace.
EFI provides a more straightforward method for interfacing user applications to hardware functions on the motherboard compared to the complex and unwieldy mechanisms typically needed in traditional and current non-EFI BIOS implementations.
Rugged by design
Because failure is not an option in rugged embedded systems, rugged embedded design philosophy must include the most robust and reliable approaches to avoid failure.
Achieving robustness is not just about using high-reliability hardware that can survive extremes of temperature and shock and vibration; it also applies to the software and firmware within the system, which must behave reliably and predictably in all situations. Ruggedness in hardware is achieved by using the highest-quality components and implementing the most careful and rigorous design approaches with no compromises. In short, ruggedness must be designed into the hardware product.
Firmware and software robustness is likewise achieved by design. Only the most well-proven software elements should be used. This is where EFI offers significant advantages over traditional ad hoc BIOS approaches, providing custom hardware with established interface capabilities for user software applications. Complex low-level interfaces to hardware are handled by proven EFI drivers, ensuring implementation reliability.
Many extreme rugged SFF systems include complex hardware features that must be accessible by the user application. EFI drivers offer a suitable solution for interfacing this underlying hardware to the user application that controls such a system.
Benefits of pre-boot applications
A pre-boot application typically runs after all power-on self-test and diagnostics have completed and before the OS loader runs to boot the OS. See the time flow shown in Figure 1.
Figure 1: The EFI BIOS boot process enables pre-boot applications that can perform security and configuration tasks outside the OS environment.
(Click graphic to zoom by 1.6x)
Using a pre-boot application allows specific customer actions to be performed using customer code before the OS boots. The EFI environment provides a proven pre-boot shell that customers can use to develop and run their EFI pre-boot applications, such as setup, OS installation, diagnostic, or configuration utilities.
Specific examples of pre-boot applications include checking the file system on the disk for the presence of certain files, verifying if sufficient storage space is available, confirming that the necessary peripheral devices are present and functioning, implementing special security features, encryption and de-encryption routines, data integrity verification prior to boot, automated device configuration, and user selection of bootup device options prior to boot. With EFI, all of these functions can be completed prior to OS boot by customer code using high-level API interfaces in C instead of rewriting complex low-level BIOS code. Thus, EFI pre-boot applications are often used to check the boot environment by customer code before the OS boots, which is easier than using traditional BIOS approaches.
Other areas where pre-boot applications are helpful include hardware diagnostics (for example, checking if a hard disk device is connected and functioning correctly), testing and verification of custom hardware functionality prior to booting the OS, OS selection and installation, and other security and configuration tasks that need to be performed outside the OS environment. Using EFI, pre-boot applications can achieve higher levels of system reliability and control than what was previously possible.
Running without an OS
EFI also enables custom systems to run user applications in a non-OS environment. Instead of booting to the OS, the EFI runs a user application directly. This approach does not match the needs of all customers, as some applications require the complexity and multitasking capability an OS provides. But for some developers working with applications that are well-developed, stable, and do not make extensive OS calls, the possibility of not needing an OS can be attractive for multiple reasons. These include design robustness due to the removal of the complex OS, extra storage space that would have been consumed by the OS, lower cost, and faster execution.
User applications running directly from EFI provide the fastest possible boot time and are suitable for systems that implement a dedicated function. Execution speed and interrupt response times can be made fast and predictable in a non-OS environment.
Another advantage to running an application directly from EFI is enhanced security, given that the security weaknesses of a complex OS are not present and the developer has control of all operations performed by the system. These are important requirements for rugged systems developers who must provide the highest levels of robustness and reliability.
Accessing SPI flash via EFI drivers
To demonstrate the capabilities of EFI drivers, consider the latest Intel Calpella platform and Ibex Peak chipset with support for Serial Peripheral Interface (SPI) flash, which can hold data space in addition to the firmware code space traditionally stored in flash.
For embedded systems, SPI flash is typically used to conveniently store system configuration information and status in a reliable storage area. This data space is accessible to the user application, but accessing the space to retrieve or update the data can introduce significant code complexity, thereby lowering reliability. Furthermore, implementing SPI flash access within the user application means that the SPI interface cannot be fully verified during the development phase or when the system is deployed, which is another disadvantage for achieving high reliability.
SPI flash is accessed over a 4-wire interface consisting of clock, data input and output, and chip select. Controlling this hardware directly requires in-depth knowledge of the interface, timing, and protocols; thus, using a dedicated SPI driver to manage the interface is a more satisfactory solution than implementing SPI flash in the user application.
EFI provides a simple solution for this by tasking the EFI drivers with handling the complexity of driving the SPI interface and accessing the appropriate address space for the platform data. EFI thereby provides the SPI device with a higher-level interface in the form of an API for the user application. This gives user applications a straightforward way to access the platform data area by calling the EFI driver to read and write to the platform data region in SPI flash.
This is an important benefit because it lets companies manufacturing complex, full-featured embedded systems offer high-level user applications easy access to these features through proven EFI drivers. The drivers can be exhaustively debugged and validated by the embedded system supplier and verified to behave correctly under all conditions.
Built-in software reliability
The Ampro by ADLINK Express-CBR COM Express module pictured in Figure 2 provides an example of an embedded design for applications that require ruggedness in both hardware and software/firmware.
Figure 2: The Ampro by ADLINK Express-CBR COM Express module uses EFI BIOS to improve software reliability.
Hardware ruggedness is achieved by component selection and an Extreme Rugged design methodology to enable reliable operation from -40 °C to +85 °C. On the firmware side, EFI is provided and enables the extra features and capabilities described earlier, such as pre-boot applications. EFI software drivers allow easy software access to the two SPI flash devices’ separate storage spaces for program and data storage requirements. The software accesses the SPI flash storage using robust and verified drivers, thereby enhancing overall software reliability.
Systems based on EFI thus provide significant features for developing secure, extreme rugged embedded applications compared to those based on legacy BIOS implementations. For many application areas, EFI offers new and valuable capabilities that are relatively straight-forward to implement. Because of the reasons discussed earlier, it is expected that EFI will become widely adopted in the embedded systems industry as the implementation of choice that might eventually replace BIOS altogether.
Qi Chen is the senior director of engineering in charge of North American R&D for Ampro ADLINK Technology at their U.S. headquarters in San Jose, California. She has 20 years of industrial experience working in a wide range of technical and management roles for industry-leading technology companies in the United Kingdom and United States. Qi previously worked as the general manager for the U.S. division of a global video surveillance company. She obtained her degree in Electronics in Shanghai and worked for five years at the Shanghai Standards Institute before studying at the University of Leeds, where she received her PhD in Electronics. Qi can be contacted at [email protected]
Ampro ADLINK Technology 408-360-4367 www.adlinktech.com