Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Architectures and Processors blog UEFI – A New Opportunity for Preboot Firmware on ARM-based Systems
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded and Microcontrollers blog

  • Internet of Things (IoT) blog

  • Laptops and Desktops blog

  • Mobile, Graphics, and Gaming blog

  • Operating Systems blog

  • Servers and Cloud Computing blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tell us what you think
Tags
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

UEFI – A New Opportunity for Preboot Firmware on ARM-based Systems

Guest Partner Blogger
Guest Partner Blogger
September 26, 2013
4 minute read time.

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


  • Build environment fixes for the ARM GCC toolchains
  • Updates for the ARM RealView Emulation Baseboard code
  • A new ArmPlatformPkg containing common components for ARM reference platforms
  • TrustZone controller support
  • MP Core support
  • PL18x MMC Controller Support
  • A customized Boot Device Select (BDS) library that supports booting Linux directly

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.

Anonymous
Architectures and Processors blog
  • When a barrier does not block: The pitfalls of partial order

    Wathsala Vithanage
    Wathsala Vithanage
    Acquire fences aren’t always enough. See how LDAPR exposed unsafe interleavings and what we did to patch the problem.
    • September 15, 2025
  • Introducing GICv5: Scalable and secure interrupt management for Arm

    Christoffer Dall
    Christoffer Dall
    Introducing Arm GICv5: a scalable, hypervisor-free interrupt controller for modern multi-core systems with improved virtualization and real-time support.
    • April 28, 2025
  • Getting started with AARCHMRS Features.json using Python

    Joh
    Joh
    A high-level introduction to the Arm Architecture Machine Readable Specification (AARCHMRS) Features.json with some examples to interpret and start to work with the available data using Python.
    • April 8, 2025