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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:) i" G$ U5 ^" \) I! Z
(1) Pre-EFI Initialization (PEI)
; G2 a& @2 E, k- U! n: [PEI 负责尽可能的初始化平台为执行DXE 做准备,7 i8 b  h" s: L) a$ ?
(2) Driver Execution Environment (DXE)
9 p. t; x3 \, l/ L在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
8 K3 r/ \. o! X7 [9 L8 X
- W$ r+ P/ R/ a: j" a- p
二:平台初始化的流程:
; Q9 ?% t( W! F# [, h9 h
(1) I/O 操作2 L1 m0 O  a- Q8 W+ G
(2) 内存操作7 U5 b1 l! L0 B$ z
(3) 配置PCI 配置空间6 _1 O( f# u/ c, ^" n5 G
(4) 通过PPIs 收集平台的动作。

2 o" X6 V- k* n% T, o7 f* c. f. I9 A1 s5 o2 C6 u" B2 L, ]& y( h, @
三:恢复平台状态:
; ~! p2 I1 e: m! w+ A1 k
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
& w" @, C6 H* gFramework 不知道以下信息4 B$ U5 F; m' b$ U5 V! u" c1 ~
* PEIMs 提供的Preboot 配置
8 |6 J$ }, J/ V; i: Q7 L. ` 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
0 V( I6 l" ~% z  o如下:2 Y0 w$ x( {6 d+ R
1.GIF 8 d4 ?6 a) E3 i* I

* D  T/ U& m5 ]5 t
4 P9 h% T/ x5 M" j  w  _: x四:S3 恢复阶段的执行流程:+ @* h4 o. I) t: N  P+ H8 Y" |
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
" m; G8 {1 N9 Z$ O4 c1:PEI 和S3 返回的路径:
3 i+ J" l1 n5 W/ v# f6 fS3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
. O4 ^2 q- X# B5 s; V( Y: n确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
1 u# o0 R& X) A1 |9 d6 {$ s' S径。4 z3 M) H% U( X- F
2.GIF 1 ]0 J4 x: {  w; p5 _. _  C$ I! v
2:在PEI 过程中保存配置数据
: x( G/ q. d; r( h9 f' D2 S有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
: Q+ W! M# z6 k3: DXE 和S3 返回启动路径
) E, k" q& A* i' O2 `% W2 e  ]在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径# _# R0 Q7 q( ~8 O9 h" o
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
* D- C' k' Q1 e* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
# E% n5 x5 s6 z1 pDXE 启动过程就不需要执行。6 z1 W- |' d  S6 B9 z
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在: _0 m  [- ?1 q
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查: T# `9 b# U7 d) A2 ~6 r6 j3 P
找boot script,; m$ x( A$ e4 ?6 ?
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
9 {4 p) p& i1 X- o* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
) L  y4 |2 u0 S0 M3 b( Q5 f& P中保存下来的。
+ ^/ w5 D' P6 l- F  u6 l* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
! A' m# Z, |: D, p8 T  [* q$ aProcessor chache setting.
4: Framework Boot Script:
% U: ^. r, w( X7 cFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,; ~4 ^! t& W% ~/ e& `9 G/ B" I( a
memory, PCI 和SMBus。# M! v+ \( M- U/ T" `
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入9 o: }  P/ p: f6 z
Preboot 状态。
, z1 p; i' D( v( G" M4 E$ I* d5:S3 返回PPI 和DXE IPL PPI
" I4 s+ h# s1 A6 WDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给$ e. N, ]* S" |$ Q
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的+ A. u% z) o) b3 Q' z% i) H
呼醒向量处。在正常启动时DXE 是不会执行他的。! A: o( {; w! m3 Q& w: F) a% |
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把/ c; \1 J7 Q- W- ^- S' C- y4 ?
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot1 W- \* i' E& L7 {9 K2 Z5 y
state./ ]. j" Q0 k; {' P7 t" A3 j4 O
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
5 y/ \0 m- b1 ]: }( X4 L( {' bwaking vector 并且将控制权交给OS 来完成S3 返回。
1 v& V7 B2 x7 L3 D在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
. ]- e. e; Y% w! J* G入喜欢叫他为 上下文 ),使S3 失败。% x; r  Z+ h5 d0 r$ a* B
S3 Resume PPI 需要知道如下情况:
! t. K$ [% X- @: C6 I
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
% p0 K3 ~# s9 L; F5 s3 k的地址。; V' O4 O- ]1 i6 H
* RSDT 指针中ACPI 开始的地址和OS 的waking vector+ W% S1 C$ n$ r5 a* D7 ~
* 保留一段内存给S3 返回时使用。

8 r- l( \) y- b( h* m 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1149

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-12 00:45 , Processed in 0.059030 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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