UEFI原理与编程实践--UEFI系统的启动过程

看图粗略说一下:

SEC:

安全验证阶段,这个阶段,会使用到CPU内部的临时ram,其实也就是缓存,这个阶段主要还是使用的汇编,也就是说为后面的阶段建立一个C语言和硬件通信的编译环境。

PEI:

这个阶段就是开始一些CPU、主板、芯片的初始化了,也就是EFI前期初始化,这个阶段后期才是内存的初始化,知道内存初始化的地方可以便于debug。PEI阶段对系统的初始化主要是PEIM完成的,PEIM之间的通信又是通过PPI完成,进入DXE阶段需要HOB列表。

DXE:

遍历固件中的所有的driver,也就是驱动执行环境,当然了,DXE阶段也有DXE派遣器,通信通过protocol,也就是协议。当所有的driver加载完成后,系统完成初始化,DXE通过EFI_BDS_ARCH_PROTOCOL找到BDS并调用BDS的入口函数,从而进入BDS阶段,从本质上讲,BDS是一种特殊的DXE阶段的应用程序。

BDS:

BDS:Boot Device Selection,顾名思义,启动设备选择,这个阶段BIOS经常需要和运行时服务的getvariable()以及setvariable(),BDS策略通过全局NVRAM变量配置,通过修改变量值修改启动顺序(bootorder),这个修改启动顺序在工厂需要经常用到的,工厂都是批量生产,因此需要写个工具给产线TE,批量修改启动顺序。

TSL:

操作系统加载器执行的第一阶段,在这一阶段OS Loader作为一个UEFI应用程序运行,系统资源仍然由UEFI内核控制。

RT:

Run Time,系统控制权从UEFI内核转交到OS Loader手中。

上述是很久之前写的,直接copy了,现在回过头来看,其实这样写是很笼统的,这次,咱们就追踪一下代码,看它到底是怎么跑的吧:

重新考古挖掘之SEC

先看一下流程:主板加电----reset vector----SEC入口函数----PEI入口函数

温习一下,慢慢写~~~~(太多了^-^)

猜你喜欢

转载自blog.csdn.net/u011397314/article/details/121515314