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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:4 \; E2 g7 C7 Q1 M! T; c2 \
(1) Pre-EFI Initialization (PEI)" S6 G1 y. O* k8 d" L$ X$ v
PEI 负责尽可能的初始化平台为执行DXE 做准备,3 u# h* ~' a* z. C
(2) Driver Execution Environment (DXE)1 y& a" _7 z$ }+ Y& `9 j4 v
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

; {: w7 \: j' v7 b1 n
+ v" z4 \# i3 D" h  I/ L二:平台初始化的流程:
; B: g& k& y1 T, c6 R+ c
(1) I/O 操作' l' S& ]/ ^" B# v  W, U- {
(2) 内存操作5 A, _: L# h  J9 c8 ~# l4 v
(3) 配置PCI 配置空间
+ T/ z$ q* t, C: S" U+ x* }  }(4) 通过PPIs 收集平台的动作。
9 e/ O" U6 C3 R& V# W/ `! T

: {- Z0 U8 h2 u* X7 q4 \( b8 n5 W三:恢复平台状态:  f; |2 N5 c, e5 R
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为0 {' b4 l& q) A' Z1 a% o
Framework 不知道以下信息* P+ l( {" P4 F+ d0 g; f7 G
* PEIMs 提供的Preboot 配置' d% k! @. y# D) M
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程9 `1 q5 d: f" [: S6 j* h
如下:
0 k6 u& M  U* w: {8 P/ H3 r 1.GIF % h7 A4 s* i3 c$ X8 Q

1 Q+ ]3 Z# k+ t8 u0 h1 B" ~% v
: h. X. A& g5 {5 D8 M& a四:S3 恢复阶段的执行流程:
: f9 a" ]9 U" I1 Q2 ~# f
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
: d1 _4 i7 T3 x; e1:PEI 和S3 返回的路径:" ~" L, a# p4 R  B, K8 o
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
* `0 g6 D: N7 `7 E7 E6 r确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
. D; I, Z5 A9 z! y: q  c径。5 P/ b& h8 I  j3 s% O% M- t
2.GIF
# \' T7 ^2 C& H2:在PEI 过程中保存配置数据( V) K3 W' K0 B  z3 E! D/ K
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
# W' l; ]/ z5 l/ R1 w: S3: DXE 和S3 返回启动路径
' s; J+ b6 u& h在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径) e$ d/ m7 D/ ~4 D# [2 b$ R+ ~
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大! \. u+ R5 J/ q6 i* }
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
* i& ^/ Z  o- A- pDXE 启动过程就不需要执行。
+ r+ t4 g/ ^* q, M, F, R. ^Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
, t) T& Q  Q' tDXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查4 I. d  R& Z" [/ X1 c
找boot script,
3 P) v7 `$ H, F* b找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
- }8 V4 q) V; R! n. ]! K- Q! r9 M* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程, c( h* D, a/ g' F
中保存下来的。
. o6 j: g/ x- n" W% N$ l; c. {* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,8 U6 N3 D8 n9 |0 S8 u: K
Processor chache setting.
4: Framework Boot Script:
2 t- }: R1 k/ v# R+ c4 U5 Z8 wFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
( N3 N5 Z4 t0 [) V7 Lmemory, PCI 和SMBus。
7 W% u6 a$ H6 f/ w/ P* z可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
1 W# O' Z4 J, X0 ^& d+ e, e* tPreboot 状态。
0 R; Y' z) @& `0 U: a& X; I5:S3 返回PPI 和DXE IPL PPI2 d' B" {# D# L2 l( j2 U
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
2 P4 U% Q& d1 y5 P' gFramework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的* N# m& S9 [: S7 ~# \6 k) x1 J
呼醒向量处。在正常启动时DXE 是不会执行他的。
  Y. y; }$ j6 m! ?' D3 ^* }" J在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把' Y* j; @/ V" e
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot2 F& S" ]! }7 r, t8 [$ F/ l0 l( Y
state.% |- e  ^: y0 L9 d/ ?5 s5 B
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS" z8 P4 Q" U  ?  u5 Q0 H; k4 \
waking vector 并且将控制权交给OS 来完成S3 返回。
) {& C/ j2 a2 A在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国$ V; {: B, D2 ^3 Y7 V. P
入喜欢叫他为 上下文 ),使S3 失败。- ~. r6 F7 _3 t7 y
S3 Resume PPI 需要知道如下情况:/ W5 |# l" Q/ Y- G
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table, k3 v3 F4 w+ Q
的地址。
" \9 e3 e6 c- w- Y' q* RSDT 指针中ACPI 开始的地址和OS 的waking vector9 p+ H+ H  a4 j3 T0 f! H. M
* 保留一段内存给S3 返回时使用。

" j% }% a1 C6 V2 C! U" S 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1366

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-5 14:24 , Processed in 0.092229 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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