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
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.
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.