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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
" i* e6 z' b# n+ y  L& G( Z+ P
(1) Pre-EFI Initialization (PEI)3 r" M/ W, {" V7 c' Q2 v: C
PEI 负责尽可能的初始化平台为执行DXE 做准备,
# |% ]$ u- B3 c' k. |$ w: e) W(2) Driver Execution Environment (DXE)$ Z( m# P5 j. S+ W
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

5 h. u. e7 p1 Z& Q" i* L1 v! q1 N
二:平台初始化的流程:; M' M1 S- H9 l( p
(1) I/O 操作4 Z7 \3 F6 `7 e% x6 ]+ y1 _7 |& t
(2) 内存操作& U( k7 \, v( q/ F8 j( S/ l
(3) 配置PCI 配置空间
5 B1 I8 M) n2 d# Z6 G  j! ](4) 通过PPIs 收集平台的动作。

* y% S5 {  y# e) Y5 B! H6 X" Z, j& `- C1 a6 Q$ z0 T
三:恢复平台状态:5 t$ r, @9 E. }
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
5 y( a. }( H2 Q. }5 JFramework 不知道以下信息. {( G' T6 d3 `" i  i9 F
* PEIMs 提供的Preboot 配置
( p1 m# t$ w1 I+ Q. L8 h: @3 V 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程' l& J5 v, Y4 I6 A8 X6 x
如下:, D- C# |  a1 \( E9 q
1.GIF
  ]' Z! [8 B$ G! Y4 d2 Q3 ~6 U1 e
! t, |+ h; z: O  X# c$ O# S+ O: A
四:S3 恢复阶段的执行流程:6 N0 @- T6 m: }0 T. E3 N: g9 C
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径" u  k! h  Z  s
1:PEI 和S3 返回的路径:; h3 i$ P7 n2 x5 l- V4 K
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
1 Q1 f4 r. i* M3 r. z* u4 ~) U确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路" u7 y, J9 X* p4 [8 P7 x
径。
" e0 f7 ~3 C0 c1 ^7 b3 B8 y 2.GIF
& X' c7 c* u0 M6 u2:在PEI 过程中保存配置数据3 N( ^2 F: u  B/ ]. K! A* D
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)1 X" Z. l+ y' v' T
3: DXE 和S3 返回启动路径* J1 ^; d, w) I1 p8 e
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
# {5 T0 d6 M" d0 ^. E& k7 L& t使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大  k. ^8 M& r1 m' Y
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
1 I- E2 s+ R7 K- b7 LDXE 启动过程就不需要执行。
$ h6 y* y# |# ?# UFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
& n& E& t: L! ~3 ]1 R/ j5 I& ^) IDXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
. K& V: h- i  j5 f. q% _找boot script,
0 k* C9 X' ^5 v3 K' [: v找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
  E' S3 I1 P2 D* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
+ b, l9 L: [5 r+ C6 R中保存下来的。
0 p( c- q+ [" t1 u+ g* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,) b* p$ v4 e  c6 L$ A2 {
Processor chache setting.
4: Framework Boot Script:0 r" \) o  H( Z. ], B' w
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,1 Y4 q$ D; f: B  X4 g
memory, PCI 和SMBus。
' c6 B, S3 Z6 A- D  J6 F* l可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
4 c6 k6 e( F* e* |4 wPreboot 状态。3 q8 G2 ~% |8 D. Y: Y
5:S3 返回PPI 和DXE IPL PPI+ w' I. R5 }1 S3 }9 U# h% [
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给/ _0 J3 G0 ]! Z9 @" w: v) I) p9 w
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的2 H$ c! `* g: Z+ \: B
呼醒向量处。在正常启动时DXE 是不会执行他的。: u0 r% j! ^; ^5 g2 ?
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
' s; s1 }0 j6 n" h8 D, C% n控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot# v( y  a) u' ?
state.6 V1 Q; p# @! d3 t- O" ?
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
4 n8 E- v1 f5 B9 Xwaking vector 并且将控制权交给OS 来完成S3 返回。$ K8 c1 M7 x4 p0 A% i# M
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国8 k7 K& \" O2 J6 W# {! X2 ~  O
入喜欢叫他为 上下文 ),使S3 失败。
, a- O$ b, C: \. ~; F9 oS3 Resume PPI 需要知道如下情况:
4 I! B% u. e8 ^( q7 |* v
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table8 Z: h9 O. D- ]& j9 n4 Q4 ~2 _! _7 o
的地址。
6 a  L' W5 B1 M1 {$ v* RSDT 指针中ACPI 开始的地址和OS 的waking vector) ]7 H3 p7 P- A- O6 K! S& U) R. {
* 保留一段内存给S3 返回时使用。
8 g2 T! y  N) g6 H/ l  m5 U
3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1486

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-19 23:50 , Processed in 0.194175 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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