Embedded Systems

Boot Loaders Small, Fast System Initialization

Choosing the best system initialization approach for a given architecture migration depends on boot speed, boot loader size, and the amount of configurability

Unified Extensible Firmware Interface

Unified Extensible Firmware Interface (UEFI) specifications define an interface layer between the operating system and the platform firmware. Intel developed the original Extensible Firmware Interface (EFI) as a C language based firmware alternative to BIOS, and donated it to the UEFI forum as a starting point for the creation of the industry specifications, including UEFI and Platform Interface (PI). The interface and all of the platform-related information provide a standard environment for booting an operating system and running pre-boot applications. Additionally, UEFI addresses the limitations inherit with BIOS implementations such as 16-bit addressing mode, 1 MB addressable space, PC AT hardware dependencies and upper memory block (UMB) dependencies.

In 2005, the Unified EFI Forum, Inc. was formed as a nonprofit corporation whose goal is to manage and promote a set of UEFI standard specifications. The UEFI Forum is governed by a board of directors from eleven promoter companies including AMD, AMI, Apple, Dell, HP, IBM, Insyde, Intel, Lenovo, Microsoft and Phoenix, and 120 contributor and adopter member companies (MacInnis, 2009). The UEFI Forum is responsible for two specifications:

Unified Extensible Firmware Interface specification which defines interfaces between OS, add-in firmware drivers, and system firmware where the OS and other high-level software should only interact with exposed interfaces and services defined by the UEFI specification. It includes the EFI Byte Code (EBC) specification, which defines an interpretive layer for portable component drivers.

Platform Initialization Interface specifications which define the core code and services that are required for an implementation of the PI specifications, hereafter referred to as the PI architecture. These are the interoperability standards between firmware phases and pre-OS components from different providers.

Figure 1 is a block diagram that illustrates the UEFI software and specification interfaces.

Intel Platform Innovation Framework for EFI

The Intel Platform Innovation Framework for EFI is referred to as the "Framework", and previously code-named Tiano, is a reference code implementation of UEFI and PI specifications developed by Intel.

The Intel Platform Innovation Framework for UEFI Web site describes the Framework as:

…a set of robust architectural interfaces, implemented in C, which has been designed to enable the firmware industry and our customers to accelerate the evolution of innovative, differentiated, platform designs. The framework is the Intel recommended implementation of the UEFI specification for platforms based on all members of the Intel architecture family".

BIOS vendors provide a Compatibility Support Module (CSM), which is used to connect operating systems to the Framework that require legacy BIOS interfaces. The Framework firmware implementation includes support for UEFI without the CSM, but does provide interfaces that support adding a CSM supplied by a BIOS vendor. The Framework is a good solution for architecture conversions, since these designs would not already use legacy BIOS interfaces, but can take advantage of the benefits of UEFI, which include:

Locate option ROMS above 1 MB -- Legacy option ROMs have been constrained for many years by having to reside below the 1-MB boundary of 16-bit code, between C0000h and FFFFFh in system memory. In server platforms, this limited the number of add-in cards that could be plugged in. The ability to move the option ROMs above 1 MB enhances their capabilities and size.

Faster boot -- Initialize only the option ROMs needed to boot the OS and load the rest later through EFI function calls from the OS.

Faster integration -- The modularity of the PEI and DXE modules allow for faster integration of differing code modules. In some cases the faster adoption of the code bases' newer technologies into the platform.

The EFI Developer Kit is the open source portion of the Framework code base, referred to as the Foundation, and is available from the TianoCore project

A complete Framework implementation is not generally available directly from Intel, but is offered by participating vendors as products and services based on the Framework for both Intel and non-Intel silicon. These Framework products and vendors include:

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task.
However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Video

This month's Dr. Dobb's Journal

This month,
Dr. Dobb's Journal is devoted to mobile programming. We introduce you to Apple's new Swift programming language, discuss the perils of being the third-most-popular mobile platform, revisit SQLite on Android
, and much more!