Appendix D: References

Curated collection of specifications, documentation, and community resources for UEFI development.

Official Specifications

UEFI Forum Specifications

Specification Version Description
UEFI Specification 2.10 Core UEFI interface specification
PI Specification 1.8 Platform Initialization (SEC, PEI, DXE, SMM)
ACPI Specification 6.5 Advanced Configuration and Power Interface
UEFI Shell Specification 2.2 Shell environment and commands
UEFI Secure Boot - Secure Boot signing requirements

Industry Specifications

Specification Organization Description
SMBIOS DMTF System Management BIOS
IPMI Intel Intelligent Platform Management Interface
Redfish DMTF REST-based management API
TCG TPM TCG Trusted Platform Module
PCIe PCI-SIG PCI Express specification

ARM Specifications

Specification Description
ARM Architecture Reference Manual ARMv8-A architecture
PSCI Power State Coordination Interface
SMCCC SMC Calling Convention
BSA Base System Architecture
SBSA Server Base System Architecture
SystemReady Certification program

EDK2 Documentation

Core Documentation

Resource Description
EDK2 GitHub Main repository
EDK2 Wiki TianoCore wiki
EDK2 Specifications Build file specifications
EDK2 Platforms Platform support packages

Package Documentation

Package Purpose
MdePkg Core definitions, libraries
MdeModulePkg DXE drivers, BDS
UefiCpuPkg CPU initialization
SecurityPkg Secure Boot, TPM
NetworkPkg Network stack
ShellPkg UEFI Shell
ArmPkg ARM support
OvmfPkg QEMU/KVM firmware

Build Specifications (edk2-docs)

Document Content
INF Specification Module information file
DSC Specification Platform description
DEC Specification Package declaration
FDF Specification Flash description
Build Specification Build process

Project Mu

Resource Description
Project Mu Documentation Official docs
mu_basecore Core fork
mu_plus Microsoft additions
mu_tiano_plus Tiano enhancements
edk2-pytool Stuart build system

Trusted Firmware

Resource Description
TF-A Documentation Trusted Firmware-A
TF-A GitHub Source repository
OP-TEE Open Portable TEE
TF-M TF for Cortex-M

Tools and Utilities

Development Tools

Tool Purpose Link
QEMU Emulation qemu.org
OVMF QEMU UEFI firmware OVMF Wiki
IASL ACPI compiler ACPICA
UEFITool Firmware analysis GitHub
Chipsec Security analysis GitHub

Signing Tools

Tool Purpose
sbsign Secure Boot signing (Linux)
pesign PE signing (Linux)
signtool Windows signing tool
OpenSSL Key generation

Testing Tools

Tool Purpose
UEFI SCT Self Certification Tests
FWTS Firmware Test Suite
ARM ACS Architecture Compliance

Community Resources

Forums and Mailing Lists

Resource Description
edk2-devel EDK2 development list
edk2-discuss General discussion
UEFI Forum Industry consortium
OSDev Forums OS development community

Tutorials and Blogs

Resource Description
Firmware Security Security news and analysis
TianoCore Training UEFI training materials
OSDev Wiki UEFI development guide

Books

Title Author Description
Harnessing the UEFI Shell Rothman, Zimmer Shell programming guide
Beyond BIOS Zimmer, et al. EDK2 development
UEFI Implementation Vincent Architecture details

Code Examples

Official Examples

Repository Content
edk2/MdeModulePkg/Application Reference applications
edk2/ShellPkg/Application Shell commands
edk2-libc POSIX applications
MS_UEFI Microsoft public UEFI features

Standalone UEFI Development

Projects that don’t require full EDK2 setup - great for learning:

Project Description Language
uefi-simple Minimal “Hello World” with GCC/MinGW/VS C
Simple-UEFI-Bootloader Bare-metal x86-64 bootloader C
uefi-framebuffer-example GOP framebuffer demo C
yabits/uefi Lightweight UEFI coreboot payload C

Rust UEFI Development

Resource Description
uefi-rs Safe Rust wrappers for UEFI
Rust UEFI Book Complete tutorial
uefi crate docs API documentation
uefi-graphics embedded-graphics driver for UEFI

Boot Managers & Loaders

Real-world UEFI applications to learn from:

Project Description Source
rEFInd Feature-rich boot manager SourceForge
systemd-boot Minimal UEFI boot manager GitHub
Limine Modern multiprotocol bootloader GitHub
Clover macOS-focused boot loader GitHub
GRUB2 GNU bootloader (BIOS & UEFI) GNU

Firmware Analysis Tools

Tool Purpose Link
UEFITool Firmware image viewer/editor GitHub
Fiano Go-based UEFI image tools (Google/Meta) GitHub
FMMT Python-based firmware module tool TianoCore
UEFIExtract Extract modules from firmware Part of UEFITool

Getting Started

Driver Development

Security

ARM Development

Debugging

Version History

UEFI Version Release Key Features
2.10 2022 Confidential Computing
2.9 2021 RISC-V support
2.8 2019 HTTP Boot enhancements
2.7 2017 NVMe, SD/MMC
2.6 2016 REST Config
2.5 2015 Enhanced security

Back to top

UEFI Development Guide is not affiliated with the UEFI Forum. Content is provided for educational purposes.

This site uses Just the Docs, a documentation theme for Jekyll.