Appendix G Module Types
Table 9 EDK II Module Types
FILE TYPE | MODULE_TYPE | EDK II Extension | Description |
---|---|---|---|
Library | BASE, SEC, PEI_CORE, PEIM, DXE_CORE, DXE_DRIVER, DXE_RUNTIME_DRIVER, DXE_SAL_DRIVER, DXE_SMM_DRIVER, SMM_CORE, UEFI_DRIVER, UEFI_APPLICATION, USER_DEFINED | .lib | Library component used in the build for linking against components. |
File | USER_DEFINED | .bin | In EDK, this was used to specify various types of source or binary files. |
Legacy16 | USER_DEFINED | .bin or .rom | In EDK, this was used to specify various types of binary files. |
BINARY | USER_DEFINED | .bin or .rom | In EDK, this was used to specify various types of binary files. |
CONFIG | USER_DEFINED | .bin | In EDK, this was used to sepcify INI text files that were processed by different tools into binary files. |
LOGO | USER_DEFINED | .bmp | The MODULE_TYPE for a LOGO, when migrating to EDK II should be specified as USER_DEFINED. The .bmp file should be included under a [binaries] section. In EDK, the COMPONENT_TYPE of LOGO was used to specify a .bmp file in the [sources] section. |
RAWFILE | USER_DEFINED | .raw | In EDK, this was used to specify various types of binary files. |
FVIMAGEFILE | N/A | .fv | |
APRIORI | Not Supported. | .bin | Distribution of an Aprior file is not supported. These files are created during image generation stage based on content of a .FDF file. In EDK, the file was just a text file with a single line for each driver. |
BASE | BASE | .efi | Modules of this type can be ported to any execution environment. This module type is intended to be use by silicon module developers to produce source code that is not tied to any specific execution environment. |
SEC | SEC | .efi | Modules of this type are designed to start execution at the reset vector of a CPU. They are responsible for preparing the platform for the PEI Phase. Since there are no standard services defined for SEC, modules of this type follow the same rules as modules of type Base and typically include some amount of CPU specific assembly code to establish temporary memory for a stack. Modules of this type may optionally produce services that are passed to the PEI Phase in HOBs and those services must be compliant with the PEI CIS. |
PEI_CORE | PEI_CORE | .efi | This module type is used by PEI Core implementations that are complaint with the PEI CIS. |
PEIM | PEIM | .efi | This module type is used by PEIMs that are compliant with the PEI CIS |
DXE_CORE | DXE_CORE | .efi | This module type is used by DXE Core implementations that are compliant with the DXE CIS. |
DXE_DRIVER | DXE_DRIVER | .efi | This module type is used by DXE Drivers that are complaint with the DXE CIS. These modules only execute in the boot services environment and are destroyed when ExitBootServices() is called. |
DXE_RUNTIME_DRIVER | DXE_RUNTIME_DRIVER | .efi | This module type is used by DXE Drivers that are complaint with the DXE CIS. These modules execute in both boot services and runtime services environments. This means the services that these modules produce are available after ExitBootServices() is called. If SetVirtualAddressMap() is called, then modules of this type are relocated according to virtual address map provided by the operating system. |
DXE_SAL_DRIVER | DXE_SAL_DRIVER | .efi | This module type is used by DXE Drivers that can be called in physical mode before SetVirtualAddressMap() is called and either physical mode or virtual mode after SetVirtualAddressMap() is called. This module type is only available to IPF CPUs. This means the services that these modules produce are available after ExitBootServices(). |
SMM_CORE | SMM_CORE | .efi | This module is the SMM Core. |
DXE_SMM_DRIVER | DXE_SMM_DRIVER | .efi | This module type is used by DXE. Drivers that are loaded into SMRAM. As a result, this module type is only available for IA-32 and x64 CPUs. These modules only execute in physical mode, and are never destroyed. This means the services that these modules produce are available after ExitBootServices(). |
UEFI_DRIVER | UEFI_DRIVER | .efi | This module type is used by UEFI Drivers that are compliant with the EFI 1.10 Specification or the UEFI 2.x Specification. These modules provide services in the boot services execution environment. UEFI Drivers that return EFI_SUCCESS are not unloaded from memory. UEFI Drivers that return an error are unloaded from memory. |
UEFI_APPLICATION | UEFI_APPLICATION | .efi | This module type is used by UEFI Applications that are compliant with the EFI 1.10 Specification or the UEFI 2.x Specification. UEFI Applications are always unloaded when they exit. |
USER_DEFINED | USER_DEFINED | .bin or .rom | User defined extension |
EFI Dependency Section | Any - the code for these sections is included as part of any module, and no separate INF is required. | .dpx | This is the compiled dependency section for SMM, PEIM or DXE modules. A dependency section may also be generated from a dependency source (.dxs) file, if specified in the [Sources] section. |
EFI User Interface Section | Any - the code for these sections is included as part of any module, and no separate INF is required. | .ui | This is a processed User Interface section |
EFI Version Section | Any - the code for these sections is included as part of any module, and no separate INF is required. | .ver | This is a processed Version section |
This following table shows the mapping of EDK II Module Types to EDK Component Types.
Table 10 Module Type to Component Type Mapping
EDK II Module Type | EDK Component Type |
---|---|
BASE, SEC, PEI_CORE, PEIM, DXE_CORE, DXE_DRIVER, DXE_RUNTIME_DRIVER, DXE_SAL_DRIVER, DXE_SMM_DRIVER, UEFI_DRIVER, UEFI_APPLICATION | LIBRARY |
BASE | LIBRARY, SECURITY_CORE, PEI_CORE, COMBINED_PEIM_DRIVER, PIC_PEIM, RELOCATABLE_PEIM, BS_DRIVER, RT_DRIVER, SAL_RT_DRIVER, APPLICATION |
SEC | SECURITY_CORE |
PEI_CORE | PEI_CORE |
PEIM | COMBINED_PEIM_DRIVER (See NOTE below) |
PEIM | PIC_PEIM |
PEIM | RELOCATABLE_PEIM |
DXE_CORE | BS_DRIVER |
DXE_DRIVER | BS_DRIVER with a Dependency Section |
DXE_RUNTIME_DRIVER | RT_DRIVER |
DXE_SAL_DRIVER | SAL_RT_DRIVER |
DXE_SMM_DRIVER | BS_DRIVER |
UEFI_DRIVER | BS_DRIVER without a Dependency Section. |
UEFI_APPLICATION | APPLICATION |
Note: The EDK II build system does not support creation of
COMBINED_PEIM_DRIVER
EFI leaf sections.