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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
  b! K7 J- W& E0 L. G. E; u
(1) Pre-EFI Initialization (PEI)
' x- H( t" R4 l$ ~2 ePEI 负责尽可能的初始化平台为执行DXE 做准备,
. w5 P* n6 V) X6 Y(2) Driver Execution Environment (DXE)
3 t8 s& J2 Z; N! v* K在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
9 M2 F( r: Z1 H8 O1 N$ S
$ j" ^2 v% F$ c5 C- q
二:平台初始化的流程:
7 U5 v0 \1 \' G( R
(1) I/O 操作
/ D- D( m2 a' R(2) 内存操作2 k5 _% R, @5 a8 J/ Z. q+ e: T* K
(3) 配置PCI 配置空间, x9 y: A7 ^$ T$ ?9 i
(4) 通过PPIs 收集平台的动作。
& {2 |. m( I- a1 Y' y* n4 M. U
3 O* X! s0 U  K8 E: B; H) h8 g+ J
三:恢复平台状态:" K  M7 D/ _6 N" h
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
, K7 [  r( Z$ xFramework 不知道以下信息1 C6 z- G( t* `
* PEIMs 提供的Preboot 配置% b- E( \' G3 s" y. v& j
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
- x0 B1 t! e3 h% z如下:
; _% T# P) y2 A: q& p 1.GIF
$ ~& j$ `# g5 g3 x* \6 P; J" Q1 x: V; N" J" e% W

* x3 P- u. n+ }7 {7 r: |& e9 H四:S3 恢复阶段的执行流程:2 b  q6 U/ Z$ V/ H. v' o8 ^
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
" d$ j* g! s6 r# g" F1:PEI 和S3 返回的路径:  y& Y9 r3 A1 Q9 `, }
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
) P2 S- K  v5 j确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
0 u. {2 G" B& H5 J4 g* o4 t径。( a  O, m0 ?/ Z5 i5 L
2.GIF
) I' t/ {5 k& G( V( S# p  e2:在PEI 过程中保存配置数据8 ?# {; ~- M& d( p& }/ g. l- r" w
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
. A8 T4 C$ V. E/ M3: DXE 和S3 返回启动路径
" X) V" p1 P3 d1 y/ C  M在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
: T( ?, q/ l3 J使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
# u6 T' W6 W5 n0 }6 J7 K" V7 O* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的) D3 P* B0 G5 [- f" R
DXE 启动过程就不需要执行。% p$ Q. w. ~  b, a, m
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在4 L& _. s# T, l5 Y% [( E
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
1 o/ e! `" q4 Y$ P: r+ Q  t找boot script,
4 l+ M; F; g4 ^2 l找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息; I, `; t4 n+ \8 [
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
, J. ~% @( H' J' Y) B- g中保存下来的。
! K, _+ N# \% J5 |/ Y* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,0 Y, ?/ ]6 M; d, a6 X+ n; K
Processor chache setting.
4: Framework Boot Script:
5 `, |/ a2 Y4 M, R8 c' BFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,$ f  l' Z% r+ }$ ]5 `
memory, PCI 和SMBus。% p7 O) M3 z3 Y3 E
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入: e# B6 I; [# l2 w
Preboot 状态。0 ]$ g8 [" k6 A8 y
5:S3 返回PPI 和DXE IPL PPI
4 I6 L6 p4 j' h2 F- ]. G# FDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
. {3 H' D$ e* g" T" o7 Y1 {Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
, X+ F. n# k3 W- b呼醒向量处。在正常启动时DXE 是不会执行他的。
9 k# M1 E& v& T在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把- I0 ?$ K5 X( V
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
4 f  D3 I; K$ ~2 ^' Astate.. \6 n/ `, D$ h5 ~2 B7 r, _3 Z' u5 q
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS) d- S+ y2 c6 S
waking vector 并且将控制权交给OS 来完成S3 返回。
- ?' a$ D0 V; U; [在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国$ [+ N7 B& b4 d5 \$ K( r2 [
入喜欢叫他为 上下文 ),使S3 失败。
4 d$ }2 y6 ?+ x8 Z* C+ yS3 Resume PPI 需要知道如下情况:0 T% L8 g' V' O$ @; R+ y5 d
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table; H1 t2 V) M3 c
的地址。1 l+ z8 T6 G- c$ P, x( `
* RSDT 指针中ACPI 开始的地址和OS 的waking vector. b& L; }9 R: q; k8 i
* 保留一段内存给S3 返回时使用。
( P. P5 R9 u! ~) @! Z5 ?* q
3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 663

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 21:42 , Processed in 0.036485 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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