This blog was originally posted on 22 February 2011 on blogs.arm.com
ARM processors have been predominant in the smartphone market and are becoming increasingly mainstream in the overall embedded space. More recently, ARM processors are targeting servers as well, pursuing the computing continuum with solutions.
However, historically ARM systems did not have a preboot firmware standard. This led each design have its own distinct firmware model that is tightly coupled to the operating system being booted. This traditional approach means the firmware developers would need to maintain completely different codebases even though the systems may use many of the same types of peripheral devices (Network, SATA, USB controllers, etc.) and feature sets across the designs. Generations of ARM cores relied on boot packages such as UBoot, Redboot, or proprietary software.
How to efficiently develop and ship these products and meet time to market demands becomes a challenge. Some form of converged firmware infrastructure is necessary to maximize proper code reuse, enable the products to achieve faster time to market with limited engineering resources, and concurrently add innovative features.
Unified Extensible Firmware Interface (UEFI) is a new opportunity for preboot firmware on ARM-based systems. UEFI defines the interfaces between the operating system and the system firmware, and between firmware driver and the system firmware. In addition, UEFI Platform Initialization (PI) defines the firmware-to-silicon and firmware internal interfaces. UEFI is processor architecture agnostic.
Experts from ARM Ltd., Apple, HP, and Microsoft came together and defined the ARM-binding for UEFI. With UEFI, it is now possible to maximize the code reuse among different designs, including those using different processor architectures.
History
Before UEFI, there was EFI (Extensible Firmware Interface). EFI was created initially in 1998 for the Intel Itanium processor based systems to overcome the limitations BIOS depends on that presented formidable challenges to the “big iron” system design. For example, the dependency on the legacy 8259 interrupt controller, the 64K IO Port space, the 192K Option ROM execution space, the single PCI segment group all impacted the scalability of the system. We also foresaw the coming of the 2.2TB Master Boot Record (MBR) hard drive partition limitation and defined a new GUID Partition Table (GPT) format.
While addressing all these limitations, EFI also defined a modular, flexible and extensible architecture, enabling the use of high-level programming language. It was created with the processor architecture agnostics in mind supporting Itanium, x86 and a processor-independent byte code, EFI Byte Code (EBC).
EFI was an Intel-owned specification defining the interfaces between the operating systems and the system firmware, as well as the device boot driver and the system firmware. Intel created the “Framework” defining the system firmware internal interfaces to further make the EFI implementation modular.
In 2005, the industry came together and decided to form the UEFI Forum to own the interface definitions that EFI and “Framework” covered. Intel contributed the EFI and “Framework” specifications to the UEFI Forum as the starting point. The change of name from EFI to UEFI (U stands for Unified) signified that the tasks of definition, promotion and adoption were on the shoulders of the industry from then on.
Figure 1: The UEFI Forum
The first specification, UEFI 2.0 Specification, created by the UEFI Forum defined the binding for the x64 processors with the help from AMD and Intel. The “Framework” also evolved into the Platform Initialization (PI) Specification. ARM-binding for UEFI is published in 2009 as part of the UEFI 2.3 Specification.
The open source community “tianocore.org” was launched in 2004 under BSD license. With the publication of the ARM-binding, Apple and HP contributed UEFI reference implementations, including one for the Beagle Board (beagleboard.org), to tianocore.org, enabling silicon vendors to supply UEFI drivers for their hardware. ARM Ltd. recently contributed reference code for the Versatile Express reference platform withCortex-A9 MP cores, in addition to
In my next blog I will discuss more details of the benefits of UEFI on ARM and the organization of the UEFI Forum.
Guest Partner Blogger:
Dong Wei is an executive-level distinguished technologist and strategist at Hewlett-Packard Company (HP). He is an IEEE Senior Member. He has extensive experience in leading industry innovations and standardization. He is the Vice President (Chief Executive) of the UEFI Forum and chairs its Test Working Group. He is also the Secretary of the ACPI 5.0 SIG. As the chief architect of UEFI and ACPI at HP, he is responsible for defining platform interfaces between hardware, BIOS firmware and the operating systems for x64, x86, ARM, ia64 and PA-RISC-based systems. He has been a frequent speaker at HP World, HP Tech Forum, Intel Developer Forum, Microsoft Windows Hardware Conference, ARM Developers Conference and PCI Workshop. He holds Executive MBA, MSEE and MS in Physics degrees.