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 |
Quick Links by Topic
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 |