UEFI employs several key concepts as cornerstones of understanding for UEFI Drivers. These concepts are defined in the UEFI Specification. Programmers new to UEFI should find the following introduction to a few of UEFI's key concepts helpful as they study the UEFI Specification.
The basic concepts covered in the following sections include:
- Basic programming model
- Objects managed by UEFI-conformant firmware
- UEFI system table
- Handle database
- UEFI images
- Task priority levels
- Device paths
- UEFI driver binding model
- Platform initialization
- Boot manager and console management
- EDK II libraries
As each concept is discussed, the related application programming interfaces (APIs) are identified along with references to the related sections in the UEFI Specification.
One of the components available from the EDK II open source project and distributed with the UDK2010 releases is the UEFI Shell; a command line interface with useful commands for development and testing of UEFI drivers and UEFI applications. The UEFI Shell also provides commands to help illustrate many of the basic concepts described in the sections that follow. These useful UEFI Shell commands are identified as each concept is introduced. The UEFI Shell is an open source project at http://www.tianocore.org where documents providing details on all of the available commands can be found.