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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:7 Z5 N+ Q8 p6 T$ g
(1) Pre-EFI Initialization (PEI)4 k+ K& {$ X! {- T2 e' v
PEI 负责尽可能的初始化平台为执行DXE 做准备,: y) f0 s. g6 j0 Q9 {) t. t
(2) Driver Execution Environment (DXE)
) @" Q) J' f! o- f8 r3 H在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

0 H  e0 C! D* }6 @$ b* `5 A
/ J; y' ]# ]4 H! n# g% W4 z5 N二:平台初始化的流程:
1 B6 b; _# K1 Y8 O$ X
(1) I/O 操作
- i) p+ N. |" q: Z9 h1 p$ y(2) 内存操作. W9 U' `  V. s: ]9 \3 f6 _, _
(3) 配置PCI 配置空间0 T( A! C; \& r6 [2 J8 b: D
(4) 通过PPIs 收集平台的动作。

5 X( H- |0 ^# m) |
; e0 S. {* w. h( P9 O三:恢复平台状态:, P1 c! o3 Z' D
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为3 h; o3 Z. C1 W1 ^  k! i
Framework 不知道以下信息2 m5 E4 s; V- p& x9 ~2 A
* PEIMs 提供的Preboot 配置
3 g- v: _! t* L+ S* U 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程8 H/ K- V/ a7 f" _1 `
如下:+ r$ ]3 H5 \" n: \! h) u
1.GIF
" X3 G! M7 N; U' \
& m- S( ^' E$ E
7 h% {( P8 l5 m四:S3 恢复阶段的执行流程:
  L( f9 ~, ]; n+ f3 M. k! G" B8 }( d
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
9 m+ S' M! l; p! n4 u8 ?1:PEI 和S3 返回的路径:& i* R; f7 N' K8 k$ D: D
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正- y2 ]1 [/ Y! [$ P6 Z, _
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
+ P9 S, N# A) m6 S. V& n$ L径。, g3 f- A1 h4 _4 \
2.GIF ( p' G; B1 A$ F' X  z
2:在PEI 过程中保存配置数据
  c$ I0 K1 V! o6 k& g/ V3 C有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)9 o- |+ j/ [4 _0 A, U
3: DXE 和S3 返回启动路径
: ?  v2 j% C' X6 d, J* P1 e在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
! ]1 C  A0 h1 q使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大4 N  t) Z, T3 u. Z. c8 o, t0 A
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的2 j  }; Q" t2 a
DXE 启动过程就不需要执行。
; c1 X9 u+ f/ a: }Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在" Y/ T1 {. P- W" q
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
5 |, G) V+ p6 o5 I% |1 p& k+ @找boot script,8 U) ]4 i3 l) E4 m# j
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
$ {% B" T' s2 V; [! N0 M, M* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程$ Q9 s% \6 l' @) x; s
中保存下来的。2 c; u9 ^1 J$ K/ E0 A# W
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
4 _) |5 d- ^4 _) ]5 _Processor chache setting.
4: Framework Boot Script:
; z' K# B  U2 V0 z, V6 T3 }Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,1 R& {3 y; l. e5 A) i- C: J
memory, PCI 和SMBus。
/ `  D5 s9 e$ b% ^' n  D4 ]3 D( V可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
. O  J% d0 {  ]Preboot 状态。
' v; Q$ ^" y! B: _/ `7 ]- u5:S3 返回PPI 和DXE IPL PPI* i/ e  g6 `6 P  ~! ]
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给  w! |2 N* Q/ a5 O# e2 V4 m- {
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的( f- M7 D1 P1 f' z
呼醒向量处。在正常启动时DXE 是不会执行他的。
% M8 g# F0 o7 z5 {在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
' Q: ~/ s- O8 y控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
) v- U5 `# a( ]state.
  U: }. D* [5 b' o! S, R3 IS3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
( M6 ^+ X* r7 V; A) }5 vwaking vector 并且将控制权交给OS 来完成S3 返回。3 |; N- b$ k$ R  n: ~3 B
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
+ R7 p6 V! P) q4 X% ]9 u1 O& n0 v入喜欢叫他为 上下文 ),使S3 失败。
; ]% |% E7 X9 x. C" dS3 Resume PPI 需要知道如下情况:1 w, a+ `* Y4 k8 }2 w
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table  g3 l* X1 ~4 M1 }
的地址。
; W' V, u1 _3 o/ K3 E$ j* Y* RSDT 指针中ACPI 开始的地址和OS 的waking vector9 |% z6 k4 `! n$ L. A
* 保留一段内存给S3 返回时使用。

: `" m8 g  @+ s, \ 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1528

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-8 07:07 , Processed in 0.096948 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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