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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:, R' K, I0 {( Z7 D
(1) Pre-EFI Initialization (PEI)
" W0 Y- Y+ c/ y7 z6 V3 p- CPEI 负责尽可能的初始化平台为执行DXE 做准备,
) x- i7 t/ Q8 z3 [( J(2) Driver Execution Environment (DXE)
1 j9 G, b9 E$ O2 R& O4 ]) \" M2 }在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

; \# }" K6 o. I7 {% }! z) U
: X  R& q  `! j  g; V4 D2 y* \二:平台初始化的流程:
4 U9 F3 o0 @# e
(1) I/O 操作2 t" L$ Y$ Y* ?! \! h3 {5 q7 T  D
(2) 内存操作) E+ B( Q+ f$ F7 I- ?8 ]
(3) 配置PCI 配置空间
# S! \8 A, t' U$ d(4) 通过PPIs 收集平台的动作。
) k& E% ^5 J" x, }5 b5 k
: \0 c. v" U0 E- f' g8 ?
三:恢复平台状态:
0 Z* X$ X6 P: j2 s0 \' X
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
9 ?" A+ s/ h6 H9 i( LFramework 不知道以下信息
( l# N7 f9 H  s- D4 r& e* PEIMs 提供的Preboot 配置
6 |! `* R0 S! I1 O% c: a# q 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
, d8 j  X& X+ m! Y) f+ q如下:
8 I5 s/ H' Q/ l: M 1.GIF 9 b+ j  ~* j; ~2 ~" ?

/ L; Q/ E$ G, m7 X' `& Z" r
) B6 b% i5 L3 F/ [四:S3 恢复阶段的执行流程:9 I/ p7 `- G% U0 n0 [! ?7 l
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
2 Q7 V; ]+ T, X4 i: g' t+ U; ]; H" E3 c1:PEI 和S3 返回的路径:. i1 J+ n& K' @* b" F0 F* f
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正+ P2 ^( a# r2 u  }
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
; j( C1 ^* h$ w$ ?/ C径。4 X! f5 E- K- ~# u
2.GIF / x6 {, ~- a. r( ^* z
2:在PEI 过程中保存配置数据
7 t# b2 t* {, O3 S- `8 w6 ~有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
  a$ w. U  o) C& U3: DXE 和S3 返回启动路径
/ Z5 v6 `: M- Z; `+ z; w在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径+ P. P; E1 A; i7 R9 P
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大+ Q% Q% {* a0 C; A! M4 P
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
3 ~7 v) A; A. w4 W( F- R. oDXE 启动过程就不需要执行。
/ h& s: M+ l) }Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在/ R+ ^, e) |1 ]8 @& o, w& h
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
3 A$ `+ Z4 @: n9 p& `找boot script,
$ P4 j9 w. y6 x: [找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
" V) V; T  y9 f; H+ a6 [* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
* t6 q# _: B/ [中保存下来的。
- V9 l: v8 L# O' V* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization," \0 U6 A" J/ B+ T, F0 i4 v
Processor chache setting.
4: Framework Boot Script:
" Z: Z: l, f- \) R! c& E) {( hFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
' p: D: v8 K! }, Omemory, PCI 和SMBus。
( {+ p7 u4 z2 u  E9 F: z可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入7 }2 c9 p$ o  B2 S6 {: [  M
Preboot 状态。
7 z8 p: `; V; o8 d% r5:S3 返回PPI 和DXE IPL PPI
, i' r! o, @  g) t% N- ZDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给) f8 g/ h# m  b- c4 }
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的9 L: }# E" e5 s1 e. r
呼醒向量处。在正常启动时DXE 是不会执行他的。
- u- s$ f% \( m; e! {在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
$ P' A, ?4 O1 s$ d& {& H7 l) _; V$ _控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
3 C1 K6 f: \5 ?5 x: C9 X* ?2 d, cstate.9 w6 Q8 b- O1 c7 a
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS+ K& r+ E9 ^7 x& Q8 d+ m
waking vector 并且将控制权交给OS 来完成S3 返回。) M6 q5 F# e9 g2 {; w
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
+ X$ h2 S5 e, V' _- U入喜欢叫他为 上下文 ),使S3 失败。
& k8 `9 {7 \) J% p6 r! BS3 Resume PPI 需要知道如下情况:
% H1 F7 R; t. d8 l& x# x
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table3 R6 G, M6 M& X, y+ ^0 V
的地址。; e" x; H3 r$ a& I
* RSDT 指针中ACPI 开始的地址和OS 的waking vector8 q4 M* O) S4 Y
* 保留一段内存给S3 返回时使用。
4 c# O# x2 {+ `$ i" _
3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1547

回复

使用道具 举报

发表于 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 09:16 , Processed in 0.054582 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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