UEFI S3 flow chart
一:平台初始化的多个阶段:(1) Pre-EFI Initialization (PEI)
PEI 负责尽可能的初始化平台为执行DXE 做准备,
(2) Driver Execution Environment (DXE)
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
二:平台初始化的流程:
(1) I/O 操作
(2) 内存操作
(3) 配置PCI 配置空间
(4) 通过PPIs 收集平台的动作。
三:恢复平台状态:
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
Framework 不知道以下信息
* PEIMs 提供的Preboot 配置
不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
如下:
四:S3 恢复阶段的执行流程:
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
1:PEI 和S3 返回的路径:
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
径。
2:在PEI 过程中保存配置数据
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
3: DXE 和S3 返回启动路径
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
使DXE 驱动存在一定风险,原因如下:* DXE 启动有很多服务,这使它变的很庞大
* 加载DXE 从flash 空间需要一定的时间。如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
DXE 启动过程就不需要执行。
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
找boot script,
找到后加载这些配置。* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
中保存下来的。
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
Processor chache setting.4: Framework Boot Script:
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
memory, PCI 和SMBus。
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
Preboot 状态。
5:S3 返回PPI 和DXE IPL PPI
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
呼醒向量处。在正常启动时DXE 是不会执行他的。
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
state.
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
waking vector 并且将控制权交给OS 来完成S3 返回。
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
入喜欢叫他为 上下文 ),使S3 失败。
S3 Resume PPI 需要知道如下情况:
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
的地址。
* RSDT 指针中ACPI 开始的地址和OS 的waking vector
* 保留一段内存给S3 返回时使用。
图好象看不见,是我的级别不够吗?? 看这个文档吧!好象图片在上面不能显示还是怎么了。 讲解的还算详细初学者 学习了 哈 Good,期待下一期。:victory: 支持,谢谢
页:
[1]