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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
  ]( @6 M6 C2 I
(1) Pre-EFI Initialization (PEI)7 P3 Z* |1 M, @" i
PEI 负责尽可能的初始化平台为执行DXE 做准备,
5 p6 n  w- F5 I, e2 I(2) Driver Execution Environment (DXE)4 f3 F3 j; k2 G/ r$ y9 A% c  [
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

/ y( c9 R. [6 a' t, q0 T8 _: C" c' |3 C$ _
二:平台初始化的流程:
5 J/ c" |- B& ?+ ]7 E/ l
(1) I/O 操作
8 o" ?* g0 w, r  c(2) 内存操作8 x; r! B& \% I! N3 T% j; }' B3 G6 g
(3) 配置PCI 配置空间
2 s/ T4 y& z. A  t(4) 通过PPIs 收集平台的动作。
, @  [# S5 O, \4 ]: ~6 b6 e
0 O6 _" t5 v. G+ r8 T) @
三:恢复平台状态:7 ^7 B3 j  t6 X
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
" A9 u1 S6 p7 Y6 HFramework 不知道以下信息
6 w: U. r. h- h& }  M9 c& a; ?* PEIMs 提供的Preboot 配置
0 S' \$ P4 l( C1 a* }% u 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
- q/ G1 _% a! J. }如下:
# d$ O9 J, G: W1 d' x2 P 1.GIF 0 q% o5 N& C5 {
) j! p+ C" x# j, Z4 o5 H6 M/ m
1 v1 ?: K& ?# S/ L' Y* D$ w" [9 Q
四:S3 恢复阶段的执行流程:
' @& J5 ?$ K1 {6 Y. ]/ t
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径' K! t3 B* z' T- ?9 z- x3 N2 \
1:PEI 和S3 返回的路径:( j6 u  f1 n; ~, w( q) M( x
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正3 V8 w0 @8 J% ~8 C5 a  D* t
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
! {# o$ k: u0 Y' L( a径。
0 i4 l) D( l7 T' J$ N* w 2.GIF
( ^' {* G3 c+ h  e0 d- z2:在PEI 过程中保存配置数据6 A' A7 B* r: @8 R# G/ g5 m( Y
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)$ H; x6 J$ C; _& r
3: DXE 和S3 返回启动路径. w  R" K* |- {& v+ A9 j
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径5 n; i, r* Q" p  j4 g# p' E" v
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大# z* Q, `; k+ `- S9 z. a9 f2 o
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
  M/ q1 Q  G. G, F6 RDXE 启动过程就不需要执行。, G8 H) q% T" a7 e) n
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在5 f( ^$ D$ ?/ z8 T+ q
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
) R  \" x3 Q  ~找boot script,
9 y: x' M) C! n. r+ F找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
  G" E4 F/ X9 Y8 o8 y$ f% f* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程2 j/ i# `' P1 \% h+ s5 G* z
中保存下来的。! O( C- x" H: d+ v  j2 v
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,) p8 z- U) N& J1 W
Processor chache setting.
4: Framework Boot Script:
2 w$ J" p1 F  S; |Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
: e9 ^! H! l% i5 n! P" `memory, PCI 和SMBus。+ Q2 G/ S8 R0 s; e! c0 P! s
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
7 Y( v. K. ?/ @( HPreboot 状态。5 i  h0 B% ~9 m" H
5:S3 返回PPI 和DXE IPL PPI8 n2 S6 h2 `1 J9 E4 M( U" c+ X& Q
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给! [4 P$ d" J4 s- j' C& J) Q
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的' c3 N0 g& d5 x
呼醒向量处。在正常启动时DXE 是不会执行他的。; t0 Q1 a& b% K3 M4 J: h
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
; N% Y' o3 e5 A8 m# T3 ^" F' q控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
2 N9 Y" a) I2 j) D- f) r+ X; Fstate.6 K: e  w, L6 b
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS( W. O" Y2 p* t: k/ X5 [; b
waking vector 并且将控制权交给OS 来完成S3 返回。6 s8 q1 n! F, V7 c
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
# a4 C2 @4 W$ `0 g: f0 c( G入喜欢叫他为 上下文 ),使S3 失败。
* S; y/ @! j+ _! g$ e7 p, [9 AS3 Resume PPI 需要知道如下情况:. h& {" ?- v3 T
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table: _6 h5 N8 G& y1 A4 a9 b6 y
的地址。
+ `, ~/ C4 b' U( @4 w* RSDT 指针中ACPI 开始的地址和OS 的waking vector
4 G! l+ s( t$ n* x* E/ [1 u6 ?* 保留一段内存给S3 返回时使用。

6 p) L7 _! Y/ ?& C. M 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1027

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 00:18 , Processed in 0.104725 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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