Getting Started with EDK II - steps for downloading EDK II and compiling projects under various OS/compiler environments.
For an explanation of the basic EDK II setup, and to see examples of how to use the specification files .DEC, .DSC, and .INF, see the wiki page Build Description Files.
See below for more information on the following topics:
SpecificationsTrainingUser DocumentationLibraries and Helper filesWhite PapersSecurityDriver DevelopmentCode StyleHistorical DocumentsSpecificationsThe following table contains released versions of EDK II Specifications, published using [Gitbook Action](https://github.com/marketplace/actions/gitbook-action):
The latest draft versions of the EDK II Specification can be found on the EDK II Draft Specification page.Previous versions of the EDK II Specifications can be found on the EDK II Specifications Archived pageThe EDK II Specification Template can be used to start a new specification document.
TitleRevisionDateDownloadDescriptionBuildv1.28April 2018HTML,PDF,Mobi,ePub,GithubThis document describes the EDK II Build Architecture. This specification was designed to support new build requirements for building EDK II modules and EDK components within the EDK II build infrastructure as well as to generate binary firmware images and Unified Extensible Firmware Image (UEFI) applications.DECv1.27April 2018HTML, PDF, Mobi, ePub, GithubThis document describes the EDK II Declaration (DEC) file format. This format was designed to support building packaging and distribution of EDK II modules, as well as for building platforms and modules using the EDK II build infrastructure. EDK II declaration files may be created during installation of a distribution that follows the UEFI Platform Initialization Distribution Package Specification. They may also be created manually. The EDK II Build Infrastructure supports generation of UEFI 2.5 and PI 1.4 (Unified EFI, Inc.) compliant binary images.DSCv1.28April 2018HTML, PDF, Mobi, ePub, GithubThis document describes the EDK II Platform Description file (DSC) format. The EDK Build Tools are included as part of the EDK II compatibility package. In order to use EDK II Modules or the EDK II Build Tools, an EDK II DSC and FDF file must be used. EDK II tools use INI style text based files to describe components, platforms and firmware volumes. While similar to EDK DSC files, the EDK II DSC file format is different, and new utilities have been provided to process these files. The EDK II Build Infrastructure supports creation of binary images that comply with Unified EFI (UEFI) 2.5 and UEFI Platform Infrastructure (PI) 1.4 specifications.FDFv1.28.01June 2017HTML, PDF, Mobi, ePub, GithubThis document describes the EDK II Flash Description (FDF) file format. This format was designed to support new build requirements of building EDK and EDK II modules within the EDK II build infrastructure. The EDK II Build Infrastructure supports generation of current Unified EFI, Inc. (UEFI 2.5 and PI 1.4) compliant binary images. The FDF file is used to describe the content and layout of binary images. Binary images described in this file may be any combination of boot images, capsule images or PCI Options ROMs.IDFv1.0April 2017HTML, PDF, Mobi, ePub, GithubThis document describes file format for Image Description files that are used to create HII Image Packages introduced in the Unified Extensible Firmware Interface Specification, Version 2.1.INFv1.27April 2018HTML, PDF, Mobi, ePub, GithubThis document describes the EDK II build information (INF) file format. This format supports the new build requirements of build EDK components and EDK II modules within the EDK II build infrastructure. The EDK II Build Infrastructure supports creation of binary images that comply with Unified EFI (UEFI) 2.5 and UEFI Platform Infrastructure (PI) 1.4 specifications.Meta-Datav1.30March 2018HTML, PDF, Mobi, ePub, GithubThis document describes the syntax of expression statements for EDK II Meta-data files used in data fields, feature flag expressions and conditional directive statements.PCDv0.56April 2017HTML, PDF, Mobi, ePub, GithubThis document discusses the mechanisms and configuration entries required to make it easy to write portable silicon modules and to port the Framework from platform to platform.UNIv1.4May 2017HTML, PDF, Mobi, ePub, GithubThis document describes the Multi-String build information (UNI) file format . See details in the Revision History in the document for more details.VFRv1.92April 2018HTML, PDF, Mobi, ePub, GithubTo simplify the creation of Internal Forms Representation (IFR), a high-level Visual Forms Representation (VFR) language is described in this document. Using this language syntax, a compiler can be designed to take an ordinary text file containing VFR as an input, and output IFR for use in a user’s program. There are various methods to define the VFR language.C Coding Standardsv 2.20June 2017HTML, PDF, Mobi, ePub, GithubThe EDK II C Coding Standards Specification establishes a set of rules intended as an enabling philosophy which will: Establish uniformity of style, Set minimum information content requirements, Allow all programmers to easily understand the code, Facilitate support tasks by establishing uniform conventions, Ease documentation efforts by embedding the design documentation in the code, and Reduce customer and new employee learning curves by providing accurate code documentation and uniform style. These rules apply to all code deveoped for EDK II.Min-Platformv 0.7May 2019HTML, PDF, Mobi, ePub, GithubThis specification details the required and optional elements for an EDK II based platform design with the following objectives: 1. Define a structure that enables developers to consistently navigate source code, execution flow, and the functional results of bootstrapping a system; 2. Enable a minimal platform where minimal is defined as the minimal firmware implementation required to produce a basic solution that can be further extended to meet a multitude of client, server, and embedded market needs; 3. Minimize coupling between common, silicon, platform, and board packages; 4. Enable large granularity binary solutions. A key aspect of these objectives is to improve the transparency and security quality across client, server, and embedded ecosystems.EDK II Specification TemplateThis sample specification can be copied to start a new Tianocore Specification document. It also provides examples for styles and formats commonly found in Tianocore specifications. For complete details on how to contribute to TianoCore documents, pleasesee the information at https://github.com/tianocore-docs/edk2-TemplateSpecification/wiki.
HTML,PDF,MOBI,EPUB,GitHub
TrainingUEFI and EDK II Learning and Development - These online courses provide background information on the UEFI specification and EDK II. This self-paced training is recommended for anyone new to UEFI.
[TianoCore Developer Training](https://github.com/tianocore-training/Tianocore_Training_Contents/wiki) - This page contains self-paced training for EDK II, organized into four basic groups:
Overview and EDK II BuildUEFI DriversPlatform Porting and DebugAdvanced Topics (Network, Security, Capsule Update, HII, ...)Hands-on labs are available on Microsoft Windows and Linux for multiple platforms: OVMF, MinnowBoard Max/Turbot, Aaeon UpSquared.
Training materials can be viewed directly in a web browser using gitpitch. Supplemental lab materials are available for download.
User DocumentationDocument / LinkDescriptionUEFI Packaging Tool Quick Start GuideUEFI Packaging Tool (UEFIPT) Quick Start 1.2. This document provides a definitive list of steps to follow which will result in the creation of a UEFI Distribution Package using the UEFI Packaging Tool (UEFIPT) within a Microsoft Windows* OS and Linux OS environments. August 2015.Signing UEFI ImagesThis document describes how to sign UEFI images for the development and test of UEFI Secure Boot using the UDK2010.SR1 release:* Provides an overview of UEFI Secure Boot* Details the steps to sign an UEFI image* Describes the UEFI Secure Boot policies* Describes the steps required to set specific UEFI Secure Boot policies* Describes the image authorization flow when UEFI Secure Boot is enabled* Decribes how to use OVMF and NT32Pkg as UEFI Secure Boot reference platforms* Demonstrates several UEFI Secure Boot scenarios using OVMF Updates and clarifications related to UEFI Spec conformance regarding KEK and DB usagesSee also SecurityPkg for more information on How to enable security, TPM, User identification (UID), secure boot and authenticated variable.NOTE SVNs: For Nt32Pkg requires -r13186, For OVMF Requires -r13160 beyond UDK2010.SR1 release versionFeb 2013UEFI Driver Writers' Guide: HTML,PDF,MOBI,EPUBThe UEFI Driver Writer's Guide is designed to aid in the development of UEFI Drivers using the EDK II open source project as a development environment. Please refer to the Driver Developer page for more information.EDK II User ManualThis document provides detailed instructions for downloading, configuring, and building an EDK II project as well as running EDKII Emulation Environments. March 2010.EDK II Module Writers GuideThis document is a guideline for new EDK II module developers, and provides detailed instructions on how to develop and build a new module, and how to release with a package. March 2010.Performance OptimizationdTechnical documentation for Performance Optimization for EDK II. Feb 2010.UEFI SCT Writers GuideThis document defines the guidelines for writing the test cases under UEFI Self-Certification Test (SCT) and introduces the UEFI SCT source tree. This document is intended for anyone interested in developing or porting tests for the UEFI SCT. July 2009.Libraries and Helper filesWhite PapersSecurityDriver DevelopmentCode StyleHistorical Documents