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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
( S/ K7 p- K" s% s- u& h) u
(1) Pre-EFI Initialization (PEI)
7 W& _' \0 W  e+ p0 M1 l+ kPEI 负责尽可能的初始化平台为执行DXE 做准备,- G* `. k) ?) x" E& k
(2) Driver Execution Environment (DXE), Y  Y% l. h. J8 K* o/ j( k
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

& y$ V% n# @& g( [
4 z& @2 z( p+ c+ H: J二:平台初始化的流程:
0 O" N  j1 k2 g. |3 `
(1) I/O 操作& T8 U+ }+ M! o0 g' _
(2) 内存操作# F+ S, I+ O' O& A
(3) 配置PCI 配置空间% L% E- N. {. t$ Z% E
(4) 通过PPIs 收集平台的动作。
4 @) j% n1 M$ [) ]) b1 P

/ k& w; [! Q% X3 l/ x8 H三:恢复平台状态:7 L8 f% S# }7 h" Q. P7 D9 c
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为& ~6 K. h& ~7 V- P  `% P
Framework 不知道以下信息$ i" Z! z# l$ I0 D& k: g
* PEIMs 提供的Preboot 配置
8 w" O6 n. v# t1 ?$ J5 |- e! L 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程; y8 ?- z9 b  \7 i2 n
如下:
; m; ]  J) R3 e2 A' t+ c 1.GIF
6 Z* @8 y9 @' H3 R* z* f9 G5 t7 I3 O' Q
! ]$ X; O0 C3 [; R1 s  A9 @/ ]
四:S3 恢复阶段的执行流程:& b' K' L/ |5 L  W2 i) p
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径, }) e+ _1 \+ q( ~
1:PEI 和S3 返回的路径:8 Y4 R4 a) H, c& m# e% \( j2 ?4 u7 F
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
# i- p) ~' s( r+ Y$ y3 H- b确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路: }' Z: k) U9 N* i
径。
- G: r) D: Z0 a: k 2.GIF
" Q+ h0 _8 R* M' j2:在PEI 过程中保存配置数据& l$ v" I, M$ {) m+ O
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
# F- q, B# V) n( O& k3: DXE 和S3 返回启动路径
- \& g% `( O. v# J7 ?在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径5 e' i, y" S3 G& J* Y  X, l
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大/ ]( }! t; h0 T
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的% @. ]) ]4 m( C9 X0 W
DXE 启动过程就不需要执行。
5 s! P* l& k! u1 lFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在! H% p; F) o. k0 l, O* ], }2 A
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查3 J" E/ G; H$ C% I
找boot script,
, f3 \( H6 _; v* {+ o) N. [) P! a9 l: e找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
/ I. s& E8 w) U' G* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程* R0 U- G5 L; G5 b5 Y& o
中保存下来的。9 q: q% z: z/ U8 u  }
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
8 V, {8 r+ T9 QProcessor chache setting.
4: Framework Boot Script:1 s; M% X; C! W7 v% f9 i
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
0 ^) X! G) s0 v( e0 S2 Q  b! Qmemory, PCI 和SMBus。& |+ N# p/ H8 n5 d- N5 s
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
6 F( G6 D% `% o/ {- c3 O. M& PPreboot 状态。
  M5 b7 l" f0 a0 g+ Y. v% ]5:S3 返回PPI 和DXE IPL PPI7 d' m" e3 O8 h# b/ u  I$ W
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
; T" a2 c! e8 tFramework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
4 c/ y5 T9 [, Z1 w( |呼醒向量处。在正常启动时DXE 是不会执行他的。% T/ n( ~9 |' Y
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
" M( a" U. {/ T- }3 \控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot& h* Q4 O' }9 n8 x' s+ `
state.5 ~) g; X' m- Q- z  l+ M" u
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS, l) j2 t* g1 a8 ~" S8 [( r& a! \
waking vector 并且将控制权交给OS 来完成S3 返回。
& b# \' z2 f6 h在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
' q" b2 F2 t* x1 w. \" d" r1 n入喜欢叫他为 上下文 ),使S3 失败。( L" H: E: D4 T5 l$ \& V
S3 Resume PPI 需要知道如下情况:& H/ k& l# m( D9 o
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table, b1 Z! ^' q0 t0 X+ N
的地址。& x- ^, ~5 r) J' U
* RSDT 指针中ACPI 开始的地址和OS 的waking vector
: b) {5 D: F7 R9 I, [  X* 保留一段内存给S3 返回时使用。

0 F. ?; ~) U% F6 `$ @8 H: r- N 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 663

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 09:21 , Processed in 0.028585 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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