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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
  E' `4 T; ^3 O
(1) Pre-EFI Initialization (PEI): y& A' J2 j; R6 o
PEI 负责尽可能的初始化平台为执行DXE 做准备,! P9 f5 J7 H" O
(2) Driver Execution Environment (DXE)) i3 S( R$ w; _. r  a/ h
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
8 m4 A0 C4 f" V! m. U4 O; O! g
$ d( Y" t# Q- x
二:平台初始化的流程:  b5 W2 L1 E* d! l* B. F; [* I
(1) I/O 操作
, D( V) \, C5 G+ |! E(2) 内存操作
0 a6 j3 K; \5 Z(3) 配置PCI 配置空间
8 m3 {3 ^! V" M, x% n(4) 通过PPIs 收集平台的动作。
6 D9 \% c: x$ h1 C
' ]% k$ b6 \- s% s
三:恢复平台状态:% ?0 U1 p$ a3 i- k0 E
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
- C3 S/ x0 m" @8 jFramework 不知道以下信息; Q! Q# y, h3 s* U3 n
* PEIMs 提供的Preboot 配置/ D1 l7 k/ L$ Y8 U
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
7 F  s' }2 ?. S  \$ k3 k' X如下:
& T+ j; w" @8 V& }/ X) Z 1.GIF
3 y3 {5 X# S& ^" A; X- m% x2 A1 u) T; Z! R8 L) P4 |7 S0 J" e
- W6 F5 s! V7 w: s: ~& e* n
四:S3 恢复阶段的执行流程:" [6 Y0 l0 T0 k9 Z8 \, F
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径, [/ D, G) i: X  N; a: P$ b
1:PEI 和S3 返回的路径:' v& d2 Q6 ^, J( c7 A% [
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正- _5 U3 z5 ]% _$ H4 O5 [
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路1 d1 H- `# W0 }
径。
% V, M5 A, t$ C/ Q! J' F 2.GIF : a; k& F% r5 z' g* `& U! e$ h
2:在PEI 过程中保存配置数据
+ H. c# u+ q/ B7 s7 f有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)9 t4 M9 k; K: U0 f5 W
3: DXE 和S3 返回启动路径
4 s& w6 q4 K7 k% T% c  a在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
" x1 u0 }$ d) r* c  c% ?使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大. [9 m; s0 i8 F4 c) \: Z7 z
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
, F% [( ^/ y6 [DXE 启动过程就不需要执行。7 O% P0 c* |  f
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在# Q9 i, s) k! k  i& w! U
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
2 u1 y. G! ~! y. r6 i% l% t找boot script,& X* K: j# A) a5 m, B0 p
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息' W& R" |  a# q
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
' M% x( _7 ]6 b3 N8 F  @中保存下来的。
3 C& P3 A  d, p, S8 d4 Z* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,) S" J) @2 ~7 _+ l
Processor chache setting.
4: Framework Boot Script:1 Y, W% k8 M% _& R+ d- i
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,( d- {9 }/ T8 {
memory, PCI 和SMBus。
! X$ h8 g0 S+ v# k+ \+ t# X可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入" }+ Y8 h) p8 a6 e: H5 H
Preboot 状态。5 b. t0 K  H- |( N  A7 \
5:S3 返回PPI 和DXE IPL PPI
* \; Q1 N* L, YDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
$ O2 j9 Y, v8 a" xFramework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
, y4 v! j; J3 n+ }8 h: H9 b2 d呼醒向量处。在正常启动时DXE 是不会执行他的。5 ~* O6 ~* ^- b, J9 n! b6 f* o
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
: r7 S$ L7 U+ s, }; Y, x控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
) ^6 h6 m. V8 T$ m4 z9 R4 \1 Pstate.; {3 `  O0 \* V; S3 |7 @
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
0 W, E% v( r) X4 B. c1 jwaking vector 并且将控制权交给OS 来完成S3 返回。5 \' @/ P1 {8 [% a# H$ v0 T
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
' C9 _2 [" \) P7 M: p& Z, c入喜欢叫他为 上下文 ),使S3 失败。
# t4 @4 u; \6 B& [S3 Resume PPI 需要知道如下情况:
% g- n% s$ X. s& J7 K
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table- T0 y7 \  {' Q$ v! K' x8 R
的地址。
$ ]/ }1 V5 L, M4 `* RSDT 指针中ACPI 开始的地址和OS 的waking vector. c! Y4 F5 q& Z. f7 e, r9 h( U
* 保留一段内存给S3 返回时使用。
+ W  t( Q3 t6 Y
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-19 14:05 , Processed in 0.036927 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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