昨天,有人问我DXE Driver的类型,我没回答上来,很是汗颜!今天,特意来补了一下这种基础知识。记下来,希望能铭记于心!下面列出的不仅仅是DXE Drivers的类型,而是整个EDK2的模块类型,包括component和library(也许library也可以叫做component):
Base:这类模块和库能移植到任何的执行环境中。主要被芯片模块开发者使用,不和某种特别的执行环境绑定。
SEC:主要是在CPU reset的时候开始执行,主要为PEI阶段准备环境。
PEI_CORE:由PEI CORE来使用,它兼容PI1.2规范。
DXE_CORE:由DXE Core来使用,兼容PI1.2规范。
DXE_DRIVER:由DXE Drivers使用,兼容PI1.2规范。
DXE_RUNTIME_DRIVER:由DXE Drivers使用,兼容PI1.2规范,这类模块在Boot service和runtime service环境中都可以执行。
DXE_SAL_DRIVER:由DXE Drivers使用,在SetVirtualAddressMap函数调用之前能在物理模式下被调用,在SetVirtualAddressMap函数之后在物理模式和虚拟模式下都能调用。这类模块只在安腾处理器重存在。
SMM_CORE:SMM Core的类型。
UEFI_DRIVER:由UEFI Drivers使用,兼容EFI1.1和UEFI规范。这类模块在Boot service环境中提供服务。UEFI Drivers如果返回Success,则其长驻内存,如果返回错误则会从内存unloaded。
UEFI_APPLICATION:由 由UEFI Applications使用,兼容EFI1.1和EFI2.0 . UEFI App执行完之后通常会从内存unloaded。