找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 30219|回复: 5

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
3 C$ R* n+ Y1 N
(1) Pre-EFI Initialization (PEI)& V1 q$ H9 n- `- O
PEI 负责尽可能的初始化平台为执行DXE 做准备,2 C# q2 s& z7 r
(2) Driver Execution Environment (DXE)
8 B4 ^6 ~! S" q" @: s% @* f3 U9 K在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

1 Y/ t( z' A# M! T- H2 n8 b& s% j2 b9 F; H
二:平台初始化的流程:/ i; r, I) Y% _" F" c# S& y: ^
(1) I/O 操作
" ^9 n: P9 Y* e( q6 q(2) 内存操作
/ ~1 f5 J2 x; u/ u$ T(3) 配置PCI 配置空间
+ V% i9 X1 T3 h# S+ n8 l0 `(4) 通过PPIs 收集平台的动作。
( ~$ X9 }/ V! J
" j  `! H3 z- g( o. X" ]9 M' |
三:恢复平台状态:) A+ f% Y4 Q0 h9 S; l5 o! ?
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
8 J5 h- M5 x! a) ]8 h2 c9 `* c; H8 OFramework 不知道以下信息+ [$ W& r5 r: ]/ S" H
* PEIMs 提供的Preboot 配置
: o8 M6 `+ z! @7 @: Q 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程. G0 @5 t; x+ C+ _3 A" s
如下:
; L4 W# N* h& J( B& Y: E 1.GIF
! J0 d! W: a+ W- }
7 d7 o4 E% T: m" A. O6 }' L5 J7 U" y8 i( Z) u. g9 }+ ^8 M6 ^
四:S3 恢复阶段的执行流程:$ r1 Z1 q# B# r5 d
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径( c+ ^/ b- X( Y2 Z8 }& M8 i
1:PEI 和S3 返回的路径:
; ~. M" r' i2 u) nS3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
# f6 b( `( w1 ~% ]确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路% q7 H3 }. y9 j) W. g5 d5 z' d
径。5 a9 b! Y' y; G0 \( B; k
2.GIF
- V2 x. y% v4 E2 h1 C+ v% R$ Y2:在PEI 过程中保存配置数据! }9 {1 D+ @+ d5 U: Y. G% L
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)8 N0 _8 W2 J+ z$ E9 W
3: DXE 和S3 返回启动路径+ ^' ~% W0 {' F( U) ]  V( [
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径6 G, A; H2 \6 u8 c
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
0 d4 g4 K' G8 Y6 N) P' B* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
* |2 R( Z  y5 {6 L$ h9 _& XDXE 启动过程就不需要执行。
. o! \  o8 L& ^; q* EFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在# W: C- W; n$ I! h8 Q8 }
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查4 u8 O7 ~, u6 v$ A
找boot script,
/ r; h! \  @% ?, w( z找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
$ i6 {- w7 x( l* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程, m; g6 C/ C+ h
中保存下来的。
* Q4 d! s1 e) [; X2 I* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
4 s4 e6 H, `- ?  t4 iProcessor chache setting.
4: Framework Boot Script:
  v5 y/ c( A6 O8 I, \5 Q" `Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,% M4 v8 A% |' C
memory, PCI 和SMBus。* H& j" g# ^/ B: q9 v/ W/ |2 A
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入1 f5 Y* a2 Y+ s; q$ L+ {: N! j
Preboot 状态。( e$ k+ v5 `7 ^' k! a7 t. Q$ y' @( c
5:S3 返回PPI 和DXE IPL PPI
! y, v# k+ B8 s! l* U! D5 jDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给$ ]( n' V6 u8 e8 X  d
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
: u! d1 e) j3 w, i7 Q呼醒向量处。在正常启动时DXE 是不会执行他的。
3 q% w- Y9 W) L在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把5 q( y8 q& ~* X3 e5 ~
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot, U4 l3 y+ x: m7 K2 B
state.- L4 c" h% v- P* K1 N
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
* l  X% q! k- @3 b* g% e% O2 }waking vector 并且将控制权交给OS 来完成S3 返回。# N9 x8 C' K6 f' t' R
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国, P; f+ Y5 e9 ?9 n3 s
入喜欢叫他为 上下文 ),使S3 失败。
2 \4 _0 V6 d) Z$ a4 O$ V( d  oS3 Resume PPI 需要知道如下情况:- q  m' S" ?' m3 J* ~- z
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
7 ]& G9 S+ Z6 U, W的地址。9 [/ J4 V0 j( d5 g% W
* RSDT 指针中ACPI 开始的地址和OS 的waking vector
; `  H4 f2 {; T+ ?; c* 保留一段内存给S3 返回时使用。
. T; b, A; R; A$ G# h& P, e' c
3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

 楼主| 发表于 2008-5-10 23:13:21 | 显示全部楼层
看这个文档吧!好象图片在上面不能显示还是怎么了。

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1455

回复

使用道具 举报

发表于 2010-10-9 09:10:15 | 显示全部楼层
讲解的还算详细  初学者 学习了 哈
回复

使用道具 举报

发表于 2010-10-15 16:07:46 | 显示全部楼层
Good,期待下一期。
回复

使用道具 举报

发表于 2010-11-8 10:06:35 | 显示全部楼层
支持,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2026-4-4 18:25 , Processed in 0.073977 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表