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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:: @8 L6 A& H* u( O; r
(1) Pre-EFI Initialization (PEI)
/ Q1 s! \+ i2 @' e# j) oPEI 负责尽可能的初始化平台为执行DXE 做准备,
- B# c/ b4 c; X(2) Driver Execution Environment (DXE)& c* D, {, C) H! G. g
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
+ T3 T  ^4 W* U  C% [
4 O3 R- {9 Z/ J3 s
二:平台初始化的流程:9 h$ m1 q4 ^' B9 h
(1) I/O 操作
: P" V$ |5 [3 N4 _9 x# ~2 D( q9 N(2) 内存操作
% {' o- \, a2 ?, B8 }(3) 配置PCI 配置空间  B( V: _7 F, b; d$ I
(4) 通过PPIs 收集平台的动作。

2 r. [3 O( R8 Q# z3 M" ^6 K7 R4 D- m! P0 T3 S4 i' y
三:恢复平台状态:1 A& A2 f; j3 o$ t! K8 ?( Y5 A
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
: r& u* R& Z8 C- IFramework 不知道以下信息
5 n7 ?: n7 ?; r$ U* PEIMs 提供的Preboot 配置( t! _) ~8 M. I
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程+ @2 V! d) |; p! B8 X0 q) n: s
如下:
* c* N1 H4 U* L5 I8 j/ |  H 1.GIF
+ ]9 I5 o0 d$ Z, Z' _( L8 }
$ A& J: h) ^! J( S
) Z# J1 K  X+ i. a7 a四:S3 恢复阶段的执行流程:
8 \0 }' S1 e* t8 a' a. q
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
  w. \4 t+ q9 v7 _. t8 a1:PEI 和S3 返回的路径:3 h/ J& C% E) d! r  v
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
6 F( o6 r( j% W确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路& I; o6 s* A9 l
径。
, f2 `/ S7 c5 O 2.GIF 0 d  j, f+ U6 P* i. B- C  Y6 {
2:在PEI 过程中保存配置数据. O( ?  Z4 I. G4 }. a
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS). o0 t6 o# J" p/ |/ E/ G, I  u
3: DXE 和S3 返回启动路径' E# z( g7 W% j* y, z) I' |
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
0 _3 \9 c/ q3 L" C3 @7 K使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
4 I/ A' t" W+ C/ t* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的# R  f1 M$ k/ X8 q! E- a5 I
DXE 启动过程就不需要执行。
# @' T  o2 K& q1 b  U  m$ k- g$ CFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在; z& u/ Q) Y6 ^8 T' J' }, {( j
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查% A) Y% Z% Q9 t* g* z
找boot script,
" O& s. G# l; S+ }! k找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息" T# l" ~7 e* l; {$ a
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
, [; t' I, T' W( P4 ]) J中保存下来的。
. L" ~8 q' Q6 Y& F( o3 E. w* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
8 |2 m5 [: d2 lProcessor chache setting.
4: Framework Boot Script:
7 l' V- P. m- d1 OFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
) Z! V, l5 f' ~: wmemory, PCI 和SMBus。
7 Q& B! [, q" R9 E$ ?可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
4 x$ R1 V9 e6 @Preboot 状态。, x9 e* [8 @  M
5:S3 返回PPI 和DXE IPL PPI7 y7 ^5 s4 l% C! k. j& i$ i
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
4 V! S1 e5 g6 e# q0 A& [6 L: uFramework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的  S# f0 U: j  i$ ~- z7 r( Q: q% \
呼醒向量处。在正常启动时DXE 是不会执行他的。& M) R9 x' W" n
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
( ^$ ~7 n. p- I2 G控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot2 z( n  e+ n) C3 T0 S4 |
state.
+ N0 ~/ D; c3 @S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
% _4 y$ l1 n6 ~! s+ L& Fwaking vector 并且将控制权交给OS 来完成S3 返回。$ E; U' k0 ~& L+ e/ N& f. j, r
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国: B4 U: I, S( s5 b) F, _9 B1 X# b
入喜欢叫他为 上下文 ),使S3 失败。+ W& o& A( s, |+ t. n) |* A
S3 Resume PPI 需要知道如下情况:- V0 M# Z4 m6 {, L
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
+ i% M, V& p/ A" [3 h! j" l的地址。6 s& y# F& o. p: ]( [7 }- Y% R
* RSDT 指针中ACPI 开始的地址和OS 的waking vector8 h6 a% D2 m8 y8 W: o
* 保留一段内存给S3 返回时使用。

- f$ q) b  r. f3 y& g$ x: Z 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1028

回复

使用道具 举报

发表于 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 01:27 , Processed in 0.821728 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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