This guide shows you how to build Unified Extensible Firmware Interface (UEFI) firmware for the Arm Fixed Virtual Platform (FVP) Model and Juno Development Platform on either a Linux or Windows development PC.

UEFI is a specification that defines an interface between the firmware and an Operating System (OS). UEFI defines the firmware interfaces and boot services that are required for booting a standards-based OS. UEFI also defines run-time services, for example, time, variable that an OS can invoke at runtime.

The TianoCore EFI Development Kit II (EDKII) project provides an implementation of the UEFI firmware. EDKII is an open-source project that provides a feature-rich, cross-platform firmware development environment for UEFI and UEFI Platform Initialization (PI) specifications. UEFI Forum develops and maintains the specifications.

At the end of this guide you will:

  • Be familiar with the EDKII development and build environment
  • Be able to build the reference firmware for FVP and the Arm Juno development platform
  • Have the required EDKII firmware binaries for following the tutorials that are found in Next steps to run the firmware on an FVP or Arm Juno development platform

Before you begin

There are four different sections in this guide. They all show you how to build firmware on different platforms, so you may not need to read and work through each section. Each section contains its own software and hardware requirements. Check that these requirements are in place before you follow the instructions in that section of the guide.

Before you work through any section of the guide, you must have git installed. How to install git is shown in the following code:

$ sudo apt install git
$ git --version
git version 2.17.1

You also need to follow the instructions in Set up the development environment.