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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
  q+ @7 i8 R" q
(1) Pre-EFI Initialization (PEI)% \- @+ @1 q: \- i0 e0 o
PEI 负责尽可能的初始化平台为执行DXE 做准备,( L7 b/ W$ v0 z+ E
(2) Driver Execution Environment (DXE). h8 V8 z! ]7 k* H, ]+ j
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
5 B8 s: x7 T) G3 G8 x* \2 t

3 Z  @$ {* U: H- [; v# t7 _二:平台初始化的流程:8 l! z7 {8 f' _
(1) I/O 操作9 B# H: [! u; m& n
(2) 内存操作
% I. ~* c9 c8 P# `. X, P1 \. x1 [(3) 配置PCI 配置空间
9 O( v' u) Z, f) v$ F+ l2 u& D% b(4) 通过PPIs 收集平台的动作。

: G) u$ k1 o3 R6 z: B+ s0 A  A3 a6 V9 v( ?! \# F: P( _3 p
三:恢复平台状态:
& q: M! s* N/ s
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为8 Q9 g, x" _8 u" q) H3 ]$ I$ k# ^
Framework 不知道以下信息" q5 c; N4 v7 U: F
* PEIMs 提供的Preboot 配置8 _; S" v: n+ G, k: ^( w
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程/ i8 o* I6 ?9 L( I6 `( S0 Z( |' S
如下:6 S/ z) W3 l/ r4 Q# \
1.GIF - G, _9 Z: {" ?

2 J( ^  r- p7 u$ W" X( h) x
% b) N& J6 t8 p2 h! [四:S3 恢复阶段的执行流程:: ^9 c+ m" \" @  l; p
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
" z& V4 E- t4 B" D1:PEI 和S3 返回的路径:
  z" k0 b+ J4 l/ F% ^S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正; ~6 Q! u$ R( \7 H9 J9 d* k
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
, c  d6 \2 N4 {( S6 d2 J径。
% A3 }8 p! ~& D( X 2.GIF . S6 [7 S; ?* ^# E
2:在PEI 过程中保存配置数据
3 d( ?! Y) D! D+ Z( V2 D有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)& G2 d$ j1 O2 y5 y6 y' {
3: DXE 和S3 返回启动路径1 C! j( r7 t6 _
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径- v& S9 V; E, T6 x" W4 E
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大- o! V& N0 Y5 |% L4 c2 U& c
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的- X9 Z6 G* |: f9 e# S9 `0 A1 {
DXE 启动过程就不需要执行。/ L( E; z; k6 z- Y' |+ u: ?/ j; w+ f
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在6 A7 G- _3 Q1 @9 N' W6 Q) Y8 r
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
: Y  a: _- `% e找boot script,
% B+ g$ V  R" |2 H3 ^2 d6 Q" X/ B1 p找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息, A( \5 `9 W/ @
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
: o' [% x' R- g4 U' z+ u  O2 |4 m中保存下来的。
6 }5 N$ f2 ~1 J2 X* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,5 e5 N  N; u; u6 u3 [/ F) W0 {" n5 k
Processor chache setting.
4: Framework Boot Script:5 V, h/ F+ v/ E2 O  V0 a* p
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
% B2 u& ]; r! I5 v! C0 A  Omemory, PCI 和SMBus。. _; Y5 W- g5 W8 o" O. R
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入) n0 t) g% V# i5 s: h1 t
Preboot 状态。
6 |0 [7 Q2 g- n( c5:S3 返回PPI 和DXE IPL PPI
3 m& @" s; g/ P" s; G' |DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
( l! r; D+ A& {4 x# _Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
/ b: p4 l% b. g6 |; U( _呼醒向量处。在正常启动时DXE 是不会执行他的。3 a5 D+ Y+ B3 F- u  a: b# `
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把- E1 D9 Y/ W! q0 d
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot0 G- i3 _0 Z: A, i) i9 G+ _
state.
+ S' G1 t0 r( Z( o2 x, OS3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS$ w* R! Q' W' {& D" c0 K
waking vector 并且将控制权交给OS 来完成S3 返回。% m# \0 U" C6 z0 `6 ~
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国5 R8 y' Y4 M6 C7 w6 ^( L! E
入喜欢叫他为 上下文 ),使S3 失败。
0 J& r$ k% Q" p- ?$ yS3 Resume PPI 需要知道如下情况:
5 T; ?. Y2 b4 u5 P8 v3 C% ]
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
0 b- Q3 r+ T, ~的地址。
3 ]/ U6 `0 j; o' R# E2 a( ]% q* i* RSDT 指针中ACPI 开始的地址和OS 的waking vector
) w1 j+ q& w( s. {! ^# k* 保留一段内存给S3 返回时使用。

* r+ Y6 P1 X0 @" k* H4 I! e( \ 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-9 18:15 , Processed in 0.028839 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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