Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Welcome to the Mu Tiano Platforms book. This book documents the two virtual platforms maintained in the mu_tiano_platforms repository and the workflows used to build, debug, and validate them.

The primary purpose of mu_tiano_platforms is to provide readily available, free, and feature-rich reference platforms built with Project Mu that target the open-source QEMU processor emulator. These platforms serve as an example for feature enablement and validation — demonstrating how a single firmware codebase can be shared across multiple products and architectures, promoting serviceable, maintainable, up-to-date, and secure firmware. A goal of this repository is to reduce the overhead of testing and evaluating common functionality before deployment to physical hardware.

QemuQ35Pkg in this repository was originally derived from OvmfPkg in TianoCore. The package is considered stable, so regular syncing is not performed with the upstream; select changes are cherry-picked based on functional or security importance.

Platforms:

  • QEMU Q35 - an IA32/X64 platform based on the Intel Q35 chipset.
  • QEMU Arm Virt - an AArch64 platform based on the QEMU ARM Virtual Machine.

What is in this book

This book is organized into the following sections:

  1. Building and Debugging - Setting up your environment, compiling the firmware, running it in QEMU, and connecting a debugger to inspect the boot flow.
  2. Common Features - Project Mu features enabled across both QEMU platforms: DFCI, Front Page, memory protection, telemetry (WHEA), TPM, the platform testing framework, and the shared QemuRunner plugin.
  3. Q35 Features - Q35-specific features including CodeQL static analysis, the Color Bar device-state indicator, the configuration (setup data) framework, Platform Runtime Mechanism (PRM), and TPM Replay.
  4. Trusted Platform Module (TPM) - Deep dives on the TPM 2.0 stack for each platform, including the FF-A based dual-CRB architecture on Arm Virt and the direct CRB/TIS path on Q35, plus guidance for running TpmShellApp on both.
  5. Templates - Reusable templates for feature-branch documentation.