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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:9 y, E) @. X5 S% t* t9 ?3 v
(1) Pre-EFI Initialization (PEI)
/ O* `* a* J$ H' cPEI 负责尽可能的初始化平台为执行DXE 做准备," [5 \+ V2 Z( S/ H
(2) Driver Execution Environment (DXE)
  H% y% Y6 b6 y9 S6 \在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
; M+ l# F' `1 Y* S

9 B% ^+ [+ ^/ l: I0 s7 n( Q二:平台初始化的流程:
( z) l& L1 w; u6 U+ {
(1) I/O 操作% q* j- |% s% N+ R, p3 \
(2) 内存操作
) _7 y" r9 M7 O- T4 O  r$ _(3) 配置PCI 配置空间' L% v# I% T, ^3 }. S, i
(4) 通过PPIs 收集平台的动作。
9 D8 m4 C/ L" \; O5 K

, [1 b5 T) u2 y9 O  p  I0 H- N三:恢复平台状态:
7 s' c  V8 ?% w  p% e
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为- K1 |/ a6 R, g( y/ N  Y6 d
Framework 不知道以下信息4 ~+ W$ V* t: U
* PEIMs 提供的Preboot 配置
7 W) f5 O; t/ s 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程+ m; J# @2 r6 F7 U* l
如下:4 [) I, c0 U4 \' w
1.GIF ; v  [! h/ N( ~0 k/ b4 e& U
* ?: A7 Q- {! L  b4 r6 P4 e& t4 M
' f5 h7 l6 y. S
四:S3 恢复阶段的执行流程:8 }# R. o; H8 _2 T7 x: d: K, s/ E
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径2 I# c8 o6 m$ ~% {
1:PEI 和S3 返回的路径:+ ^4 W0 s1 {) _
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正0 y# |( {" h5 G! j  j, n
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路& z- K5 r7 [3 P) H6 M3 W/ N, L
径。
, a# K9 @' Z$ e+ L) b1 |4 x 2.GIF
" p0 p) H( i3 |* i+ F3 i2:在PEI 过程中保存配置数据
  T/ L1 v5 [( l, J# ]! v有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
# E8 g0 U: j8 [" ]; b7 T3: DXE 和S3 返回启动路径2 t; \. }" V" C) |7 n4 v
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径0 Q# \% Z0 j) W
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大* {! {: _/ q# A2 e2 O4 G
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
& @9 \1 r1 `" t- W1 g' Q5 |DXE 启动过程就不需要执行。
, D6 M8 v8 T/ y# _Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
# z/ V6 u, ~; ~6 F9 S' _1 B) l( ?DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
0 u( M2 u) F/ J& O$ [( d找boot script,; O3 F0 P  z3 q1 Y
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息5 C! }# ~# d6 W2 O* f6 x  M: F
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程& r8 s. M( C( X6 g5 I' }0 I$ K
中保存下来的。) {: H/ Z: x9 F6 }, h8 h
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,! R3 F* ^8 Y" j! S* v
Processor chache setting.
4: Framework Boot Script:) l8 l; e" o2 f2 E& i
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O," H5 \+ e/ I9 w) A! a3 V3 \
memory, PCI 和SMBus。
5 c- o! ^( v/ L# Q5 u可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
- L- g* f: @. c; u7 H4 XPreboot 状态。$ _* t7 c2 J6 O5 H3 O- t) {( Q
5:S3 返回PPI 和DXE IPL PPI
; G5 K& J$ y; ?8 @+ e* aDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给7 S1 R; x9 n+ A
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的- a1 P$ `/ `  w" W, T: W+ ^
呼醒向量处。在正常启动时DXE 是不会执行他的。
' a) K9 q6 t/ j  E在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把. e) E  P6 F* |8 M
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot) I5 R6 H5 h; Z% V9 @8 s
state.
- N! Z$ z9 C5 Q& [( j. o6 D/ F+ cS3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS! X+ ~. T6 K) ~9 M/ r4 ^1 k
waking vector 并且将控制权交给OS 来完成S3 返回。0 _/ R( {, b& U3 x' |# W+ C
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
" H' ^  B0 Y! J1 I9 R. e$ b" L9 {2 C入喜欢叫他为 上下文 ),使S3 失败。* C& j0 d1 A' A1 a
S3 Resume PPI 需要知道如下情况:
8 F" V6 C6 U4 R$ }
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
$ f& J" w6 T% m2 V0 ]的地址。$ I. e$ b/ z& U  k: k6 y) T
* RSDT 指针中ACPI 开始的地址和OS 的waking vector
  A  g7 l9 P) F  `1 s; `3 o  J* 保留一段内存给S3 返回时使用。

7 s  Z6 o$ D* Q1 [6 r. i- K 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 990

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-22 03:25 , Processed in 0.057197 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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