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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:2 H. O) L3 ^% y( q2 G
(1) Pre-EFI Initialization (PEI)5 B9 X, M- ^: p* \: ?" J8 o0 {
PEI 负责尽可能的初始化平台为执行DXE 做准备,- R9 P2 }5 F( a) i8 T
(2) Driver Execution Environment (DXE)
$ H9 k- U/ Z3 e3 v- H* s在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

, \6 _# a. r# v7 C8 e! J% Y) v/ i. ^. X
二:平台初始化的流程:2 P6 [+ r) g* m4 e+ X4 S
(1) I/O 操作
. _- P: x5 h2 |  }(2) 内存操作
0 Y: `, e0 \- t) p0 w(3) 配置PCI 配置空间
3 I4 j( O& f# b% ?/ q) E- {(4) 通过PPIs 收集平台的动作。
, \$ F* v& M- p* U0 D9 @1 I( X' v
) D( c: `) w: C. \7 c( k' ~
三:恢复平台状态:/ r; @! q' G$ D* J  M5 e+ x( z
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
2 r1 e' D/ ?; p1 wFramework 不知道以下信息
1 C# Y4 c. y- K2 t* N* O& G( Q$ R* PEIMs 提供的Preboot 配置
7 m8 o8 e& i+ A6 P: m; Y- }1 W 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
' d& D. T5 b- m2 \4 Q4 k如下:# Q1 l# D9 L0 y1 Z/ {+ o6 e
1.GIF
8 ]; ~3 D- A+ v9 O
" `* j4 O2 X  K5 _; S8 `1 K
' y" h/ |' o; n+ K4 \: p' |四:S3 恢复阶段的执行流程:
; J- L5 b+ i7 X
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
$ ?$ o+ l* @5 l9 L+ `- o5 I1:PEI 和S3 返回的路径:, b, a3 T5 X3 B  @5 X# l  ^
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正% k4 a1 L7 I7 i  W
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路$ h1 }% D4 Z" ?( ]% G& {
径。; I) Z' k2 ]$ d% C' V
2.GIF
; |. X) K0 M: H( v2:在PEI 过程中保存配置数据
  q: ]& ^- \$ N% f/ D. |% i; v有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
' M5 O2 ?7 e4 B1 D2 h1 D3: DXE 和S3 返回启动路径  \! |1 w9 _, Y7 N- X
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
0 ~0 j/ Y! r8 T9 D/ w8 K- O使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大* ]* n; F' L! u& \2 b: W. T7 q
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
+ v+ d1 o' \0 iDXE 启动过程就不需要执行。
, j% W" g9 }' bFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在; Q- L+ V6 M' |) `+ c( e5 S
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查5 i3 g7 W% ^" F1 g0 t/ J/ L
找boot script,
3 n# }% R; o4 [) H( U+ p8 E找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
4 G9 Z: T) I( Y: x1 y! O1 w* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程8 B% j; [3 ~$ t
中保存下来的。/ u2 }" n4 O6 s$ b3 w# J
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,; o, z3 V  N+ [- \0 T
Processor chache setting.
4: Framework Boot Script:: q" _! _7 @2 e2 ~
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
) K4 m. Q: }5 I4 G  Wmemory, PCI 和SMBus。8 G2 F3 T: u; S( j3 s
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入  T& V7 A7 y# j# U/ Q. Y
Preboot 状态。
  a1 V" |1 k& L. u7 G# p, A7 @5:S3 返回PPI 和DXE IPL PPI& O1 G2 }* ]+ P: a( |: ]
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给1 z- u7 R0 B! n9 e! W: _5 [! h) X
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
/ x* _2 o* F1 u! K呼醒向量处。在正常启动时DXE 是不会执行他的。+ P; X: s3 r+ q! g0 j9 s
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把1 [7 l* }& b  H# z' ^
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
1 W  X* \1 `! ~$ b; Y# d8 sstate.+ d. Y4 f% T6 G- u% Q
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
" K* ^8 P- t5 M2 n% |waking vector 并且将控制权交给OS 来完成S3 返回。, m/ f5 U+ n$ s* V" v
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国" e  G0 R* }8 C
入喜欢叫他为 上下文 ),使S3 失败。" G& q7 _2 @$ B& L0 }
S3 Resume PPI 需要知道如下情况:1 b9 C. _! n3 [& \/ m  }, d4 T# d: R
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
! Z0 a1 i1 H: ^0 O2 [, j! U的地址。, N, x# K& \& L; Q$ S
* RSDT 指针中ACPI 开始的地址和OS 的waking vector
3 e. k- t( I; N% m5 x3 c% Q7 V  K* 保留一段内存给S3 返回时使用。

# @5 D& b: Q7 L: ?2 G7 K 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1485

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-19 22:09 , Processed in 0.053605 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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