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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
9 F: P; [3 O6 e4 h% b! U) l: n
(1) Pre-EFI Initialization (PEI)
1 x! ^9 |& n, o( x" `+ RPEI 负责尽可能的初始化平台为执行DXE 做准备,
4 q+ d# t8 m; H0 i' l( E(2) Driver Execution Environment (DXE)1 y/ P- k8 Z2 I1 ^) s' u
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

) w' O3 V# o# W9 m9 ?
( N; F: i& l; H8 L3 Z二:平台初始化的流程:
. _) A: p9 `- S
(1) I/O 操作
  \! ?; s' C' Y# |4 s# v% ~(2) 内存操作
- t0 u+ v& a& F& p(3) 配置PCI 配置空间5 K! y3 U7 P' w! Q4 v: n4 I$ `0 F
(4) 通过PPIs 收集平台的动作。
( w; {6 j* N& J/ i. M
6 {: \" N7 [) @' X+ q- B0 K
三:恢复平台状态:3 D9 Z! B. i. n. v# [" r; m
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
: ?! S5 n0 R" i# B8 N, W3 HFramework 不知道以下信息
6 ~5 d9 }6 L* L/ S& i* PEIMs 提供的Preboot 配置. v: P; K  \* k' O+ }4 @! U( v
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程' K& i3 B+ R! h4 I4 b+ T
如下:: [9 F: q0 p7 g; C) N9 a1 e
1.GIF
1 \9 A, }& r; T  n# f
  b& j: G4 a3 M0 q0 e/ k9 \6 d! j5 x
; T$ e4 {( ~0 |) Y. h3 d; r, V四:S3 恢复阶段的执行流程:: }  R; ?/ r, Y# t8 F( _
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
, r% g  c" j: M8 d6 V1:PEI 和S3 返回的路径:
7 s! z) H  |" Z* t3 AS3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
* T6 \" s9 v: e& o8 ~+ J7 ?# A确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
0 D5 k$ y$ D6 b径。' y( N4 c' U% R. Z& W
2.GIF ) d3 \6 i3 W) j6 w2 G& ]
2:在PEI 过程中保存配置数据
3 i0 U& d0 q6 \/ L, L有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
" G: s# V3 _5 |1 f  I3: DXE 和S3 返回启动路径5 x: S7 M7 D# [) x  u# A2 b4 C  l* f6 f
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
, @( a- h3 ^0 T7 M% A使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
- M; v9 Z  A% D# F* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
6 W8 t. F6 {: J/ O* H  XDXE 启动过程就不需要执行。
9 w* u: C: s5 g: l: s! C6 U; r& B$ jFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
, C8 ?: l! d9 h3 [# _7 `7 cDXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查* e! j1 u9 `, ~
找boot script,
0 s9 v, t3 R2 s2 }找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
' y# e& t/ ~. ]* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
, u% E# G3 |. M$ z8 ]9 Z# `中保存下来的。
$ l& v# j( ?0 O& f) a7 k* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,; Z3 D% e0 R9 i' k  R
Processor chache setting.
4: Framework Boot Script:
& H! l% \& r1 N; dFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,2 b( a, ]# Z$ r  V
memory, PCI 和SMBus。
) S$ ~. ?* o0 M/ q0 w" ?可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入' _% X) e3 S- g# T) R9 c$ I, f
Preboot 状态。
* o& B( `6 A, f/ t! {8 w/ {7 U5:S3 返回PPI 和DXE IPL PPI
2 T4 ?/ r" V7 `: UDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给+ ~" }) I7 e$ V8 L; \; U
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的8 n) [; g: D) X+ e/ H- ]5 G
呼醒向量处。在正常启动时DXE 是不会执行他的。, _! V8 ]! V7 [7 s+ Q# p* Z
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把: W1 p( T& Z  ?( O
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
# \* e, @. n3 x" Ystate.
/ C! q# [' K9 _# h$ `( v  F" X2 gS3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
/ u; n0 }, ^2 B7 p; {waking vector 并且将控制权交给OS 来完成S3 返回。+ \/ E. O' Z+ K2 k3 D/ `1 K5 j$ ^
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
( h& k0 L. [% s5 w  }入喜欢叫他为 上下文 ),使S3 失败。
% x1 _& g. D1 `S3 Resume PPI 需要知道如下情况:- ]0 x+ I$ r* `# k% ~4 `
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
) W: w! M' K. C的地址。
5 t5 k" j  C( @, m+ [2 ~, X* RSDT 指针中ACPI 开始的地址和OS 的waking vector
# V. v# ^# ~2 h- B3 _5 D& y3 H* 保留一段内存给S3 返回时使用。
6 ?0 J' v: t& ~. O: R3 g  `
3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1546

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-12 08:06 , Processed in 0.107160 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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