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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
5 g0 X8 p! w0 ^# A9 ^" w9 l" Q8 d4 R
(1) Pre-EFI Initialization (PEI)& b( b2 G, m* e; C
PEI 负责尽可能的初始化平台为执行DXE 做准备,) B0 @% s1 L5 [' z7 U8 q
(2) Driver Execution Environment (DXE)- n" m" k0 o  M0 Z7 T
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
, F5 N& _/ S  C9 V

. q' O* h' e: M6 e二:平台初始化的流程:/ I% c! x" s0 c( X8 F
(1) I/O 操作
* J; g& D; N1 R(2) 内存操作6 e1 U2 g: ^3 H' p# A; d
(3) 配置PCI 配置空间+ g) l, t5 R3 l  h, S) q0 S
(4) 通过PPIs 收集平台的动作。

9 A3 h2 ]6 h; M3 d6 J0 x7 N4 N4 s( I; m) E
三:恢复平台状态:
. S8 k# b  y/ d, x
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为0 r3 O1 h- e* }$ m/ u; m
Framework 不知道以下信息: g3 K" p8 ]; H- G) D. ^
* PEIMs 提供的Preboot 配置
+ ^8 H3 V7 B! M1 P# {: S* o 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
. a( X' @/ [& e( F* }+ Z+ @0 P) Y1 E如下:
4 K% A5 x8 n( R5 C, e 1.GIF % e9 i2 v- B# v: O/ x$ ]' N0 [

! j& G7 w6 j$ G3 k8 {' q3 b7 F- f" I3 o  b. y. g
四:S3 恢复阶段的执行流程:: {1 Y8 q* D1 b* N
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
/ v8 |0 {" Y( C- B1:PEI 和S3 返回的路径:" [& |, z6 ?+ s( g. l
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正  b  I  B+ {0 m
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
6 L: f8 M: O6 a( H) z0 G% _6 {径。
4 [/ u6 _* Y5 p* r1 } 2.GIF , J  b( S  V. l" u2 r. J) q. W
2:在PEI 过程中保存配置数据& j: N# t# U5 r. p" u3 \
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
9 l$ J+ h7 t1 t* T' z# ~1 l0 l3: DXE 和S3 返回启动路径" W' C+ f3 ?0 E, }
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
+ T/ W4 ?; B- o/ N- l; Z) `使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
: ~) G* A3 D, Q* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的/ X4 p) N( B" y  u; U. a" G( _* j
DXE 启动过程就不需要执行。. r2 o3 Y6 P) z- D! q2 C5 P
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
4 f8 g: o7 ~8 s& {  qDXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查% d6 g0 |0 ?" ^, o& ?
找boot script,' V8 M' P* X5 u' F
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
+ N. ]9 ~# m- u/ [* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
8 x5 A' A2 ~& S中保存下来的。
. l7 G# b, D- m- c9 O% R* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
2 @  `9 f2 Q) P5 ~Processor chache setting.
4: Framework Boot Script:: l- C6 y5 L% Z6 \. i6 k" U
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,$ Y0 q* }" |- O% [2 `
memory, PCI 和SMBus。
% m5 n! `/ k( H; R: Q+ p) X可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入% g! E4 _9 c7 y' r% e
Preboot 状态。
- N' {* N# D* ?5:S3 返回PPI 和DXE IPL PPI
' g* d/ N( N8 iDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给: U: o2 E6 u. _5 i0 I
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的8 z( Q3 o, F7 Q* j* v
呼醒向量处。在正常启动时DXE 是不会执行他的。$ j0 x5 `; r9 l& x" p) ]1 l" R
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把* k2 g) A; Q4 e
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
2 Y2 B$ J9 x5 V: s* U% w/ Mstate.7 l/ ~% i* |9 s, m1 N2 ~" I; U
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS+ `, W6 d) ]# Q3 l) K, b3 B8 x) ^
waking vector 并且将控制权交给OS 来完成S3 返回。# c; A- P. w. r; r# f" A" x0 M
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国- L( |0 T+ a2 Z% f$ F
入喜欢叫他为 上下文 ),使S3 失败。
$ S4 C3 G; P" r) z, ?+ f" p& \& XS3 Resume PPI 需要知道如下情况:3 o# u0 m$ }3 K% h  G' [  f9 S
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
: [% v6 W, p( \3 s8 S的地址。5 J) d; S  |6 B- K
* RSDT 指针中ACPI 开始的地址和OS 的waking vector. @1 F& X* \1 O. ?
* 保留一段内存给S3 返回时使用。
1 \0 C% O7 {2 x1 `1 B
3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1535

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-11 21:16 , Processed in 0.162803 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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