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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:6 P: s0 p$ V# B1 q% O" O
(1) Pre-EFI Initialization (PEI)7 z! V2 {, v' Y0 y  y. m
PEI 负责尽可能的初始化平台为执行DXE 做准备,8 A- q. z5 E6 S0 u" b; U2 k+ s
(2) Driver Execution Environment (DXE). ]. T- \$ h/ e
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

0 M3 j, l' n# {& k+ X: }: V( O2 W9 C/ h+ B1 D
二:平台初始化的流程:$ }: m; x9 ]0 M+ |( F+ s4 C" p
(1) I/O 操作
) j& y5 Q# _) H/ ?: S' ]! p(2) 内存操作
4 K( h) \6 f' G! Y(3) 配置PCI 配置空间' G- m9 ?, z1 ]) H$ ?/ m# [1 @" L
(4) 通过PPIs 收集平台的动作。
& N, B$ s; k/ d5 I: j+ O

1 p( d6 H, G8 S三:恢复平台状态:( E. _! Y; N0 q5 H$ f( T
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为) L/ p9 s  k$ I4 Q1 ^# T
Framework 不知道以下信息: a0 C: L1 }- Z' c; l. F6 i
* PEIMs 提供的Preboot 配置
( L: P3 S6 q. [# |; |7 m9 g 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程! h0 x& a6 P, N
如下:( i3 J5 z# ]  }. Z
1.GIF
1 Y3 y. N6 W5 ]7 _
! U! u; D# C. b0 S& P, s# j
9 O! a6 |1 K. o, k$ V+ X: `四:S3 恢复阶段的执行流程:
0 O& x1 y( k6 r, s
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径2 h5 J" ?, x+ ~; ~* n- h  A  b0 ~
1:PEI 和S3 返回的路径:
$ y" f7 x. D0 tS3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正- @% o6 B( b* M5 Z8 f6 U0 q
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
* k* M  o8 ]& x% i0 o8 L' }" H径。$ s* u6 k! M6 e* j& A
2.GIF / g- p7 N( n$ J% L
2:在PEI 过程中保存配置数据
2 ?2 L9 W3 A. \有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)" J7 X- Y8 B0 L8 n8 ^( [
3: DXE 和S3 返回启动路径) R+ v# |+ o3 [% Y0 s
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径, h6 s0 o: \0 P& M  l
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
( ~$ p" e' w4 v4 L* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
, @) K% a- @( `5 V$ O0 `1 ZDXE 启动过程就不需要执行。
1 h% s3 K; ^5 O& G5 @+ b" [0 ZFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在7 P3 @6 j2 c4 C4 ?9 w! j! s/ w
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
1 U+ k& v, N0 y找boot script,3 u7 Q' P' z2 [4 a' k# f# r8 N/ \4 P
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息" I% [; t; h( y3 V4 A( x$ h0 @5 [
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
+ U* @3 Y, v7 f4 P4 z中保存下来的。
9 t% g- ]9 f* z* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,0 K: ]# e7 B: }% g* ~
Processor chache setting.
4: Framework Boot Script:, A. q# H  t; V6 V6 v
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
/ J6 Z$ R' a; \1 @6 Xmemory, PCI 和SMBus。
9 E8 x( w; n) L8 b可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入3 R. D  {0 n% q
Preboot 状态。
; _1 q, y0 @* M) s5:S3 返回PPI 和DXE IPL PPI
* N# i, t- r6 G. e9 C: i7 |% eDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给/ e! C, a' h" S  n4 B
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
# z# ]% ]- `" Q5 e2 v$ M5 r  y9 O呼醒向量处。在正常启动时DXE 是不会执行他的。8 t4 p% b) E* I5 `. F
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把; L7 b3 G, p" v4 {! t, W
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
8 y' t2 y  l; a3 f7 Lstate.
& x9 e  p& g* T( b0 @S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS1 y0 S& @$ a" m) E* `: h
waking vector 并且将控制权交给OS 来完成S3 返回。* N* j! V2 m$ ]: M! _. o( M
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
* R) V# J) J( c9 B3 n入喜欢叫他为 上下文 ),使S3 失败。
# U$ [1 T* ~! W7 r" I! Q3 A- XS3 Resume PPI 需要知道如下情况:& {5 @, O& g6 x2 E2 A" P  j
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table+ l! _9 b1 G3 N7 E+ P* j/ _
的地址。
; _9 k6 c0 `9 O, ?- S( ~* RSDT 指针中ACPI 开始的地址和OS 的waking vector; y( i8 i9 }+ r
* 保留一段内存给S3 返回时使用。

0 ]! O7 z8 p# [1 P& j 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1029

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 07:14 , Processed in 0.087848 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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