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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:( o# `' j# f( ~/ ?, k
(1) Pre-EFI Initialization (PEI)
7 K" ^8 ~1 d- Z3 w$ lPEI 负责尽可能的初始化平台为执行DXE 做准备,' p2 t' N6 L4 b$ k# s, R
(2) Driver Execution Environment (DXE)
2 V9 ]+ M: q0 P. V3 l在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
# R6 S/ T- l, @3 N1 J+ c! x0 A% y
$ h* e+ k2 M' a- f, D; \. P
二:平台初始化的流程:
* ~/ C" _) r) |5 i* z2 O
(1) I/O 操作$ a% P4 G) F2 L/ c; y7 \1 c# V3 r( w1 r
(2) 内存操作
$ V: m1 z0 b! g5 l3 Q0 k(3) 配置PCI 配置空间
$ \& x" ~+ O( a. f' J8 E(4) 通过PPIs 收集平台的动作。

1 C# u% X4 ~% t" j
: v3 X' E" y! c. m$ W三:恢复平台状态:
9 H2 e* k! O4 v" R4 s
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
  X0 D' w$ \8 @0 nFramework 不知道以下信息
9 m: G6 y: p. [* PEIMs 提供的Preboot 配置# l; ^4 a+ L. E3 o( }
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程  H9 g9 s/ J6 B* Z7 D- S
如下:2 P+ H, @/ ^& v' A
1.GIF
; A+ @' f3 ^6 o6 W& A' g* W
5 {. D! x) f3 `6 N2 A
7 r1 ]  V% u. x$ g$ Y四:S3 恢复阶段的执行流程:; }7 C& V% }; h
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径% T& G5 y. o9 u5 d
1:PEI 和S3 返回的路径:
3 C# J& g- W' uS3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正% M3 n- W5 K% p! R' X
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
! R/ {/ @- }0 w( z4 P径。
+ r6 u/ E" S1 X; n, o0 Q/ ` 2.GIF ( L% w% ~1 Z& R
2:在PEI 过程中保存配置数据
( P5 t$ A: t' k有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
+ o: w6 x3 ?3 U  ~" D# H6 }3: DXE 和S3 返回启动路径
6 z8 `1 x- `$ \6 H% O5 |3 g. I在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径; \0 y: h+ K9 ]2 l8 s
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大5 y- j+ b% d; d. ?( @: I2 y
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的0 r/ W% S7 l9 |
DXE 启动过程就不需要执行。
8 }! y4 S2 q7 h/ k! Z0 gFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
1 C# f: j$ d' O3 C. H" x) H, KDXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
) k+ h+ C8 n, d. B* o4 t找boot script,
  e* Z# d7 O* `# k% s找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
2 g) @& I( |, y9 V7 Q* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程( E& e  [, J8 B  B
中保存下来的。
; s. h/ x& A% o1 c0 C( J, ~# L; [* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
2 x2 m& @( l5 N4 G% [- ?Processor chache setting.
4: Framework Boot Script:
* @+ i5 K: Y8 T/ TFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
/ [4 {* c/ e* l9 Mmemory, PCI 和SMBus。
6 c  {2 k  O) C' W9 X3 Y$ H可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
& {0 U8 p% `$ ?# t" BPreboot 状态。2 P# {. g$ k3 ~
5:S3 返回PPI 和DXE IPL PPI  N6 r. N# s# E2 p; a
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给9 B, U! P& {) J$ w- H! p7 k
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的4 v9 T4 W* w: x. A' I* N" F6 I
呼醒向量处。在正常启动时DXE 是不会执行他的。
  D) O# N4 E5 n3 y2 F9 b" Q在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把) ^5 X$ @/ I* W
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
& Q$ N$ z' u7 `0 T% s- R$ fstate.
- H7 n% G7 s2 KS3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
4 A% v! ~  Q# Z9 o8 wwaking vector 并且将控制权交给OS 来完成S3 返回。
4 N6 w& k) ^) `# Y  N# q) y7 E在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
+ o4 x, F6 {( t入喜欢叫他为 上下文 ),使S3 失败。( x, z: k, N9 K  `! [
S3 Resume PPI 需要知道如下情况:5 C9 Y8 {4 y- ], ]8 Z4 j) N) r2 _
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
( f( Y5 U7 K- ~% A/ h5 t的地址。7 V1 u4 k6 f9 x
* RSDT 指针中ACPI 开始的地址和OS 的waking vector7 E$ l5 }# P- z! W' o
* 保留一段内存给S3 返回时使用。

4 {4 W! o, J! V. H2 ?, ]! ~ 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 987

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 06:03 , Processed in 0.039895 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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