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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:, M# `0 E" j! W3 P0 B4 I8 w. C/ R0 c6 _
(1) Pre-EFI Initialization (PEI)
4 q  a" K" B( A) |PEI 负责尽可能的初始化平台为执行DXE 做准备,
" W! i! W* h9 {: k2 `# {! k(2) Driver Execution Environment (DXE)- f: }6 q; A  E7 }
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
5 O/ Y0 @% ^9 `; S5 P

& p; ]8 n0 |" D' P9 p( o二:平台初始化的流程:: C; B5 W( T- t/ n+ L
(1) I/O 操作
+ T' B- n1 Z+ U3 }(2) 内存操作
! ^& [$ `3 y6 u8 E* q' S3 v6 }(3) 配置PCI 配置空间" ~* ~7 D" H0 p8 m7 W- @9 z
(4) 通过PPIs 收集平台的动作。

% f. s/ w; o. G. g
. R( J  K" ~) l' ~# W三:恢复平台状态:/ V4 T( o# h- M3 w9 w2 C5 u
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
; K, }' [2 I, V# @Framework 不知道以下信息6 l' W" I; k- @) m/ p/ ]! v
* PEIMs 提供的Preboot 配置
0 m9 l% U8 r4 Q. M1 c" n 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
" g8 o- F  N; w: {+ F+ S如下:
: c$ y- ]  e, d 1.GIF 6 m& d4 W) h% R2 s1 k3 O7 s
% o# k  m( T5 N0 i2 o
2 f* Q7 r$ P: f" X7 T! p$ r1 q6 T  R8 m
四:S3 恢复阶段的执行流程:& H8 U9 z  e+ n$ g0 g4 s! m
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径2 D# U) X) G: d; K
1:PEI 和S3 返回的路径:% q9 F% |5 z9 q1 G0 f+ s0 r
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
1 v* M) |+ ^7 |; V确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
7 f( B! q, {& n径。
. s) o4 k! R' ]$ t+ v& a 2.GIF ! K, E  j1 P: p; x; n
2:在PEI 过程中保存配置数据) v! K9 \% {" C3 j; N' W( u: Z
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
4 [3 N) @" U2 ^3 R" J9 O% S5 b' W3: DXE 和S3 返回启动路径
% d, Q7 q6 _! i4 O7 F+ G2 r在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径) @4 `" o. R4 b2 k8 O/ f& V
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大. z* @0 N! Q  k" _7 D
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的% W3 o6 t3 L, C9 q/ C8 t& B
DXE 启动过程就不需要执行。) f. G$ U( h& e4 D
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在: l  @5 K  U( L
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
; a1 e6 l0 p; ]( m8 O找boot script,) q  D: T5 @( C" Z6 _2 L5 U
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
- l0 i; u" o  Y+ \4 b* P8 e0 p* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程7 D5 Q* H1 q+ T6 D0 [* ]
中保存下来的。
1 ?( H' Z- ~, T8 ]% d& i7 g* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,5 ^% Y( S& v8 }9 p2 J6 A# }- D
Processor chache setting.
4: Framework Boot Script:% n% S: A& Z, O9 [) R
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,1 b  w% X* {6 X2 Q/ G: e3 J( G
memory, PCI 和SMBus。4 j9 G; m3 k1 \7 @9 T
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
: z2 r) b' L9 Q5 kPreboot 状态。
$ R8 W7 b! @& ?  [1 b* z) ^5:S3 返回PPI 和DXE IPL PPI
6 A! O9 V. ?% y9 E' P# Y3 ~DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给( x  D  t2 y$ a: g' O( L9 J2 [
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
: K, Q7 h- x, {5 j$ F1 a0 W6 G! X$ t  Q呼醒向量处。在正常启动时DXE 是不会执行他的。9 t0 n$ l  A9 q% v2 p
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
& y: T/ d9 q) I# M控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
0 ]( H  z8 o* T! g* @state.# J  ~% x9 X7 a% w
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
( O  E+ P/ t7 `, L' R" C+ o* Owaking vector 并且将控制权交给OS 来完成S3 返回。- r  j8 b+ ?# q, k- e7 O; H6 i
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
: @( U8 @5 u/ a% T入喜欢叫他为 上下文 ),使S3 失败。6 O' v" w! @# ?6 m" Z
S3 Resume PPI 需要知道如下情况:
  J3 c* H6 M3 }
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table* `2 j0 i! E& v0 L# o2 P/ K
的地址。
2 y6 c  b" t* o: U' }/ k* RSDT 指针中ACPI 开始的地址和OS 的waking vector7 {1 o" m& {. l( A$ V
* 保留一段内存给S3 返回时使用。
( q6 H. w  `% M
3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1536

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-8 11:52 , Processed in 0.134311 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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