1.1 Overview

This document is designed to aid in the development of UEFI Drivers using the EDK II open source project as a development environment. The EDK II provides a crossplatform firmware development environment for UEFI. UEFI Drivers are described in the Unified Extensible Firmware Interface Specification (hereafter referred to as the "UEFI Specification"_). There are different categories of UEFI Drivers, and many variations of each category. This document provides basic information for the most common categories of UEFI drivers. Many other driver designs are possible.
In addition, this document covers the design guidelines and recommendations for the different driver-related UEFI Protocols, along with the design guidelines for PCI, USB, SCSI, ATA, Consoles, Serial Ports, Graphics, Mass Storage, Network Interfaces and User Credentials.
Finally, this document discusses UEFI Driver porting considerations and UEFI Driver optimization techniques for Intel IA-32-, Intel x64- and Intel(R) Itanium(R)-based platforms, as well as EFI Byte Code (EBC) platform types supported by the UEFI Specification.
The UEFI Driver Writers Guide uses the names defined by the EDK II open source project when referring to the various platform types.
  • IA32-Intel IA-32 platforms
  • X64-Intel(R) 64 platforms
  • IPF-Intel(R) Itanium(R)-based platforms
  • EBC-EFI Byte Code platforms

1.1.1 Assumptions

This document assumes that the reader is familiar with the following:
  • Unified Extensible Firmware Interface Specification, Version 2.3.1.
  • The EDK II is an open-source build environment project that is under constant development. EDK II not only provides the build environment, but also provides build tools and source code for firmware and drivers.
Note: The EDK II project of TianoCore is under active development, often on a daily basis. Be sure to use a validated release of UDK2010 for all UEFI Driver development.
  • The UDK2010 Developer's Kit, referred to in this guide as the UDK2010, contains EDK II validated common-core sample code. The open-source UDK2010 is a stable build of the EDKII project and has been validated on a variety of Intel platforms, operating systems and application software. The open-source UDK2010 is available for download at www.tianocore.org
  • The UDK2010 supports UEFI Driver development using the following operating system environments: Microsoft Windows*, UNIX and like systems and MAC OS X(R). Refer to http://www.tianocore.org for a complete list of current development operating systems.
  • The UDK2010 supports the development of UEFI Drivers using several families of compilers including those from Microsoft*, Intel and GCC. Refer to http://www.tianocore.org for a complete list of currently supported compilers.