SEC(Security Phase/安全验证)
接受并处理系统启动和重启信号:系统加电、重启、运行异常信号
初始化临时存储区域:CAR(Cache As Ram),Cache被配置为no-eviction模式
作为可信系统的根
传递参数给下一阶段:系统当前状态
可启动固件(Boot Firmware Volume)的
临时RAM区域的地址和大小
栈的地址和大小
PEI(Pre-EFI Initialization/EFI前期初始化)
为DXE准备执行环境:将需要传递到DXE的信息组成HOB(Handoff Block)列表
PEI内核(PEI Foundation):负责PEI基础服务和流程
PEIM(PEI Module)派遣器:找出系统中所有PEIM,并根据其依赖关系按顺序执行PEIM;PEI阶段对系统的初始化主要是由PEIM完成的
DXE(Drive Execution Environment/驱动执行环境)
执行大部分系统初始化工作
DXE内核负责DXE基础服务和执行流程
DXE派遣器负责调度执行DXE驱动,初始化系统设备
DXE提供的基础服务包括系统表、启动服务、运行时服务(Run Time Services)
DXE阶段的执行
源码结构
MdeModulePkg/
Core/
Dxe/
Dispatcher/ DXE调度器
DxeMain/ DXE阶段入口函数
Event/ 异步事件机制
FwVol/ 闪存文件系统FFS
FwVolBlock/ 闪存的块操作
Gcd/ 全局配置数据库
Hand/ 句柄Handle
Image/ 镜像文件服务,加载、解析和执行
Library/ 库函数,三个与lock相关的操作
Mem/ 内存服务,申请和释放
Misc/ 其他内容,看门狗、
SectionExtrantion/
DxeCore.uni 字符串数据
DxeCoreExtra.uni 字符串数据
DxeMain.h 头文件
DxeMain.inf 模块信息文件
DXE入口函数接收PEI阶段构建的HOB(Hand Off Block)数据;HOB数据格式的定义位于/MdePkg/Include/Pi/PiHob.h
DXE阶段主要使用的几类HOB数据:
1、EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 可用内存资源信息:用于初始化内存申请与回收服务,提供申请和回收内存的方法
2、EFI_HOB_MEMORY_ALLOCATION DXE模块数据:用于初始化镜像服务,提供加载、解析和执行文件的方法
3、EFI_HOB_TYPE_FV 内存卷信息:对每一个内存卷建立一个PROTOCOL用于读取数据,所有的驱动数据从这里面读取,然后调度执行
BDS(Boot Device Selection/启动设备选择)
执行启动策略
初始化控制台设备
加载必要的设备驱动
根据系统设置加载和执行启动项