UEFI规范中有两个最重要的概念:模块(Module)和包(Package)。
模块 Module
UEFI上最小的可单独编译的代码单元,或者是预编译的二进制文件比如efi执行文件。
包 Package
由模块、平台描述文件(DSC)和包声明文件(DEC)组成。可以包含模块,也可以不包含。例如前面用来做实验的MdeModulePkg和EmulatorPkg。
如果把包和Vistual Studio的工程相比,DSC相当于sln文件,描述多个project的信息;INF文件类似于某个project的proj文件,描述工程本身的信息,比如用到的库、源码位置等信息。
常见模块类型:
UEFI_DRIVER, UEFI_APPLICATION, PEI_CORE, PEIM, DXE_CORE, DXE_DRIVER等。对于非BIOS工程师来说,由于没有真实环境,所以涉及的是UEFI_APPLICATION和UEFI_DRIVER这两个。
关于UEFI_APPLICATION的补充:由三个类型:
1. UefiMain入口
可运行于DXE阶段和UEFI Shell环境
2. ShellAppMain入口
可运行于UEFI Shell环境
3. main入口
可以运行于UEFI Shell环境,它是用C标准库StdLib写的