Appendix D: References

This appendix collects the key specifications, repositories, documentation sites, and community resources relevant to UEFI and Project Mu firmware development.


D.1 UEFI and PI Specifications

Specification Version URL
UEFI Specification 2.10 https://uefi.org/specifications
PI (Platform Initialization) Specification 1.8 https://uefi.org/specifications
UEFI Shell Specification 2.2 https://uefi.org/specifications
ACPI Specification 6.5 https://uefi.org/specifications
UEFI Platform Initialization Distribution Packaging Spec 1.1 https://uefi.org/specifications

All UEFI Forum specifications are available as free PDF downloads from the UEFI Forum website after registration.


D.2 Project Mu Repositories

Repository Description URL
mu_basecore Core packages (MdePkg, MdeModulePkg, etc.) https://github.com/microsoft/mu_basecore
mu_plus Extended Mu packages https://github.com/microsoft/mu_plus
mu_tiano_plus Patched EDK2 packages https://github.com/microsoft/mu_tiano_plus
mu_silicon_intel_tiano Intel silicon support https://github.com/microsoft/mu_silicon_intel_tiano
mu_feature_config Configuration/policy framework https://github.com/microsoft/mu_feature_config
mu_feature_mm_supv MM Supervisor feature https://github.com/microsoft/mu_feature_mm_supv
mu_feature_dfci Device Firmware Configuration Interface https://github.com/microsoft/mu_feature_dfci
mu_devops CI/CD tooling and templates https://github.com/microsoft/mu_devops
mu_crypto_release Crypto binaries for Mu builds https://github.com/microsoft/mu_crypto_release

Project Mu Documentation


D.3 EDK2 Repositories and Documentation


D.4 Stuart / Python Tooling

Package Description URL
edk2-pytool-extensions Stuart build system https://github.com/tianocore/edk2-pytool-extensions
edk2-pytool-library Python library for EDK2 operations https://github.com/tianocore/edk2-pytool-library
PyPI: edk2-pytool-extensions pip package https://pypi.org/project/edk2-pytool-extensions/
PyPI: edk2-pytool-library pip package https://pypi.org/project/edk2-pytool-library/

D.5 Industry Standards

Standard Organization Relevance
TCG PC Client Platform TPM Profile (PTP) Trusted Computing Group TPM hardware interface
TCG EFI Protocol Specification Trusted Computing Group TCG/TPM2 UEFI protocols
SMBIOS Specification (3.7) DMTF System management BIOS data
IPMI Specification (2.0) DMTF Baseboard management controller
PCI Express Base Specification (6.0) PCI-SIG PCI/PCIe bus interface
USB Specification (4.0) USB-IF USB host controller interface
NVMe Specification (2.0) NVM Express NVMe storage protocol
SD/SDIO Specification SD Association SD card interface
JEDEC DDR5 (JESD79-5) JEDEC Memory interface

Where to Obtain Standards

Organization URL
UEFI Forum https://uefi.org
Trusted Computing Group https://trustedcomputinggroup.org
DMTF (SMBIOS) https://www.dmtf.org/standards/smbios
PCI-SIG https://pcisig.com
NVM Express https://nvmexpress.org

D.6 QEMU and Virtual Platform Resources

Resource URL
QEMU documentation https://www.qemu.org/documentation/
QEMU source code https://github.com/qemu/qemu
OVMF build instructions https://github.com/tianocore/tianocore.github.io/wiki/How-to-build-OVMF
AAVMF (ARM UEFI for QEMU) Part of edk2 ArmVirtPkg

D.7 Community Resources

Mailing Lists

List Description URL
edk2-devel EDK2 development discussion https://edk2.groups.io/g/devel
edk2-discuss General EDK2 questions https://edk2.groups.io/g/discuss

Issue Trackers

Project URL
EDK2 GitHub Issues https://github.com/tianocore/edk2/issues
Project Mu (per-repo) GitHub Issues on each mu_* repository

Conferences and Talks

Event Description
UEFI Plugfest Semi-annual interoperability testing event
OSFC (Open Source Firmware Conference) Annual conference on open-source firmware
Linux Plumbers Conference (firmware track) Firmware topics in the Linux ecosystem

Books

Title Author(s) Notes
Beyond BIOS (3rd Edition) Zimmer, Rothman, Marisetty Comprehensive UEFI/PI reference
Harnessing the UEFI Shell Rothman, Zimmer, Lewis Shell programming guide
Embedded Firmware Solutions Zimmer, Rothman Intel firmware development

Online Learning

Resource URL
TianoCore training materials https://github.com/tianocore-training
UEFI learning path (Linaro) https://www.linaro.org
OSDev Wiki UEFI section https://wiki.osdev.org/UEFI

D.8 Tool Downloads

Tool URL
GCC cross-compiler (for UEFI) System package manager or https://gcc.gnu.org
NASM assembler https://nasm.us
IASL (ACPI compiler) https://www.intel.com/content/www/us/en/developer/topic-technology/open/acpica/download.html
Python 3.9+ https://python.org
Visual Studio Build Tools https://visualstudio.microsoft.com/downloads/
Git https://git-scm.com
LLVM/Clang (CLANGPDB/CLANGDWARF) https://llvm.org
QEMU emulator https://www.qemu.org/download/
UEFITool (firmware image editor) https://github.com/LongSoft/UEFITool
CHIPSEC (security analysis) https://github.com/chipsec/chipsec
fwupd (Linux firmware updater) https://fwupd.org

D.9 Alternative Firmware Projects

Project URL
coreboot https://coreboot.org
LinuxBoot https://linuxboot.org
AMD openSIL https://github.com/openSIL
oreboot https://github.com/oreboot/oreboot
Intel Slim Bootloader https://slimbootloader.github.io
U-Boot (ARM/embedded) https://u-boot.readthedocs.io
Arm Trusted Firmware (TF-A) https://trustedfirmware.org

See Appendix F for detailed coverage of these projects.


D.10 Firmware Security Resources

Resource URL
NIST SP 800-147: BIOS Protection Guidelines https://csrc.nist.gov/publications/detail/sp/800-147/final
NIST SP 800-147B: Server BIOS Protection https://csrc.nist.gov/publications/detail/sp/800-147b/final
NIST SP 800-155: BIOS Integrity Measurement https://csrc.nist.gov/publications/detail/sp/800-155/draft
Microsoft Secured-core PC requirements https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-highly-secure
CHIPSEC documentation https://chipsec.github.io
TCG reference implementation https://github.com/microsoft/ms-tpm-20-ref

Summary

This reference collection covers the specifications, source repositories, tooling, standards, security guidelines, and community channels you will need throughout your UEFI and Project Mu development work. Bookmark the UEFI Specification, the Project Mu documentation site, and the EDK2 file format specifications as your primary references.