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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
# A  t" Z% l0 y( N; V
(1) Pre-EFI Initialization (PEI)0 n; U8 Z$ c+ y3 M. j# f1 T
PEI 负责尽可能的初始化平台为执行DXE 做准备,+ {6 O5 b9 P6 w% R: ]" F- Q
(2) Driver Execution Environment (DXE)& m2 A% b0 @: \. M3 }  R
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
4 }, O9 e5 ^* T% Y- I; _

* ~) E6 a8 g9 Z5 p2 S二:平台初始化的流程:
) J5 T  Y: J( f4 o) z3 {# \
(1) I/O 操作
2 _: u3 \4 [+ p) e3 v8 K, `(2) 内存操作9 i) d, c- s; t
(3) 配置PCI 配置空间
. V; u) N, m0 A' @3 {) F6 L(4) 通过PPIs 收集平台的动作。
- G( A( ]. Y& Y: ?

1 T5 d  t! b" U2 c三:恢复平台状态:
! U0 E6 H: ?- B  _8 C+ h  z
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为2 i$ N/ r+ f/ h! c. b, A2 G2 ~
Framework 不知道以下信息
/ {% D" n& t3 E' D" s+ n4 [( ~* PEIMs 提供的Preboot 配置
3 J- F$ g" e0 c; s 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
  e  z" X( k2 {; ~; `/ }  x8 @如下:
" P7 z3 F8 j% i* c5 Y 1.GIF
5 L+ e$ y3 ?' {- `
3 w0 k% R1 R3 j) b/ z" K: l
9 c" H* u) G! g/ a  |  t* j9 J四:S3 恢复阶段的执行流程:
8 s0 O+ b- M4 W( O8 @  A' C
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径% e$ a3 L/ Q1 M0 q( Q/ N
1:PEI 和S3 返回的路径:
& |, @- r4 w. \1 F+ LS3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
, d' i5 [  t* l6 Y% e0 h. F确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路  a" v4 w& G, j# |6 O
径。
5 J1 U% l6 J, V5 U5 i 2.GIF
7 b. u. R0 R1 n& b6 [, P2:在PEI 过程中保存配置数据
; i, _: g$ k8 w% N: k0 u有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS). v2 d2 p1 N  u' K1 F
3: DXE 和S3 返回启动路径0 y* Y" C+ f- c
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
: {+ _8 w5 O$ C0 |; k7 `5 c) R, ~使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
* j6 ~$ i) P' d& A9 S& H& @. K* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
2 A; U7 q" _" LDXE 启动过程就不需要执行。
- b5 }0 q  {) w! l* KFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在4 Q0 v- F( B0 f/ ~
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
2 v4 K' k+ j1 h( b* g& c" C+ z找boot script,/ [+ c3 w6 w+ Y  O8 G1 b4 ^
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
3 g# A/ Z0 y3 f* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程/ _  e3 d4 V$ C( h1 n
中保存下来的。
) f( }! z& w- O" V8 q9 K6 n* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
4 u; I; z( s+ I5 {Processor chache setting.
4: Framework Boot Script:
8 [5 f8 g0 b# u1 UFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
% N/ V9 [" ~5 {9 Bmemory, PCI 和SMBus。
0 J1 `& i3 O! @5 b可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入4 V; X! |( k; ~# j3 R/ F* a( i
Preboot 状态。6 A/ Q1 ~" `; l; {5 @
5:S3 返回PPI 和DXE IPL PPI
2 \8 u" s% S% Y$ c/ x) r8 `& \DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给: _0 L; n8 Q/ F9 t4 V
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的9 C0 U* Y9 X! B& ~/ |% ^! n7 _
呼醒向量处。在正常启动时DXE 是不会执行他的。! V/ _5 o2 U/ V& x+ t8 H
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
' y5 Q6 l  g3 Z( v1 ?) v控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot) M3 B& u. @0 e$ Z
state.
& r. t/ H1 G5 m3 `2 V; ]S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
' c9 r& ]# T& F- `waking vector 并且将控制权交给OS 来完成S3 返回。
1 e  ]6 v' u) C) Y6 f在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
7 ^. d. @0 I0 W% K入喜欢叫他为 上下文 ),使S3 失败。! t( g# U4 G2 E0 W7 i- a4 o- A8 E
S3 Resume PPI 需要知道如下情况:' ?  J, c1 p8 x( w$ i
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
, {! O* g! d1 I9 r* v, h. |6 G的地址。; T" p2 }4 I* u3 f' Y/ q# h3 x
* RSDT 指针中ACPI 开始的地址和OS 的waking vector
5 |! m! B- D; q* N0 i3 V* d* 保留一段内存给S3 返回时使用。
+ n9 I/ f4 ~$ E; N
3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 998

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 13:47 , Processed in 0.062302 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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