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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
$ C0 v* K( `# Y2 V4 h$ G# S* i0 _
(1) Pre-EFI Initialization (PEI), h) a: O' g+ ^5 M' N9 A
PEI 负责尽可能的初始化平台为执行DXE 做准备,
3 A% E- o& ^, O4 Y5 S2 x! h(2) Driver Execution Environment (DXE)) x) x6 o6 Z( V( H. `4 Z
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
7 X) M' B3 ]' _- |( L: U

; h  ?% R( f% W. F% I$ @7 l9 @% {二:平台初始化的流程:1 S* v8 i0 t7 I
(1) I/O 操作
% P6 w$ t! c; v, s+ i' ^$ N- f: O$ r(2) 内存操作
# ]# Z( f$ r+ Y+ d/ @( w(3) 配置PCI 配置空间
& x  S6 N( D3 S) T6 J) K2 U(4) 通过PPIs 收集平台的动作。

2 _, }& U# R) e8 d7 ^4 _- E" g! V+ m/ T+ X$ `
三:恢复平台状态:
3 e8 L+ C. J. h" }: }
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
( N. F, \* v1 X/ ]) y3 h, ^Framework 不知道以下信息1 s: F, q& Q2 q: q
* PEIMs 提供的Preboot 配置
2 D2 d0 t. s+ V2 \ 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
1 b9 S* {% V* ~+ {5 \$ e4 m2 N如下:1 s7 Y$ W6 D2 S2 F: e  t$ a6 Y
1.GIF $ Y; {, O$ r7 ?
" i8 P5 O6 v% p, ]6 a& x

: e7 @% Q) ^; o四:S3 恢复阶段的执行流程:1 [' B/ L! _2 A7 u! K! r  e& o
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
+ T% X3 w7 c- {7 I% T7 v1:PEI 和S3 返回的路径:0 ^+ E$ \8 C, D( B- @4 S( X2 D! \# t
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正6 v* Z; V0 d1 K7 `5 b( t6 N
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
0 W! a. G6 J* i4 |: ?径。
- v  ^! K4 z  g, @9 f( t, m% U 2.GIF
. `) R' `2 h! I: _6 [1 r2:在PEI 过程中保存配置数据
% R- k7 ?9 }" E$ p$ v- U/ x' S# W有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)0 ?% _% }& z( T1 J! S1 z
3: DXE 和S3 返回启动路径
4 ~) L/ Q. W7 t8 c2 Q  ?& z4 ?在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径- C9 m( l% D, i( q3 c/ g2 ?2 b
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大/ Y2 {$ ~3 \  P4 b. n5 t5 X0 v
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的, u9 N, ^9 z1 B7 Q  b: c7 I# [( s
DXE 启动过程就不需要执行。8 L+ C6 ~0 y7 N: ~4 A2 O4 ]
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在# d, E+ M' r9 l! a+ L  M* w  F+ M
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查' e" L  V& F' g4 b7 [/ v% _" A2 v
找boot script,; {& W- V% u: b& w# C+ z7 Z$ f
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息' J* ^% F5 v1 q/ R6 K- X
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
( O% s8 _9 j0 Q/ i+ c5 L, r中保存下来的。! E, }( I! v+ k  y
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
- F* C! @7 ]) PProcessor chache setting.
4: Framework Boot Script:
6 k, F& G. x3 ^9 p* X/ R. a; X: f/ lFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
% H  I( P* U* [9 H: ]0 m+ d" Amemory, PCI 和SMBus。6 l0 `" t* W% q% l7 V4 O
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入# E3 e5 [6 s  B4 R( w/ R0 b
Preboot 状态。
4 u0 l  {- P) _% M; l* _5:S3 返回PPI 和DXE IPL PPI% T% y4 f+ O' v2 k" Z
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给5 Q0 e( i; l0 F' l  ~
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的. N) g: g3 {' @* [, ?! V: D
呼醒向量处。在正常启动时DXE 是不会执行他的。# s/ B  B( ~) J3 r; ^
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
1 l% ~' j; n5 z- W, Q控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
5 d4 B$ [' Q1 ]8 Z5 Y* astate.
# E% J9 W. f4 y0 v# g' W, v( r5 OS3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
+ d, X7 Z6 G$ R& j; Cwaking vector 并且将控制权交给OS 来完成S3 返回。
- L. n; w. y/ i/ A在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
5 Y( S* e5 _7 w6 Q- m- w入喜欢叫他为 上下文 ),使S3 失败。
' z- o3 y% p* B3 ES3 Resume PPI 需要知道如下情况:
) c9 P$ R/ I" a2 d* k
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
7 I3 B8 X1 W' {+ u( L( N: X的地址。! D* k# u6 f1 e/ @4 o: v
* RSDT 指针中ACPI 开始的地址和OS 的waking vector. m& n4 R9 c3 P4 A3 p8 T7 X
* 保留一段内存给S3 返回时使用。
' G* T2 |' R( q/ [$ n' i* i) D
3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1507

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-4 09:06 , Processed in 0.090430 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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