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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
' {, }; p1 \# ]! d# _
(1) Pre-EFI Initialization (PEI)
  d2 H! L3 Y. d# wPEI 负责尽可能的初始化平台为执行DXE 做准备,
% V/ H& z9 a% l" M(2) Driver Execution Environment (DXE)$ G" m) z; I* U( Z3 }* C: A
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
7 {7 ]3 e0 j' ?8 D& ~

9 Q9 x: J% H4 b# @二:平台初始化的流程:4 P/ |9 Q9 c6 i) Y, U
(1) I/O 操作: |; m5 P1 b: O& f  q% m
(2) 内存操作$ E) l  U7 o" B+ ~1 z" u( `
(3) 配置PCI 配置空间
( R5 _4 u$ X4 G1 N" y. Y. E* J(4) 通过PPIs 收集平台的动作。
2 t2 P+ e1 m% S8 j" E5 P
1 e( l, B; Y7 X# u2 D* O5 l
三:恢复平台状态:6 b& g9 Z* u! a2 L; L
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
/ [6 g2 p" Z4 r% p& s2 bFramework 不知道以下信息
1 d3 _& D& e& i# R* PEIMs 提供的Preboot 配置4 K1 @, V1 P. {
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
) d, }, w, A: [$ \3 r如下:  d5 X6 y/ g- `
1.GIF 2 X  ]. S8 O1 W/ N* q% X

' s. Y3 ]5 q6 w7 L& W
9 q0 X* O6 J: R$ i$ n& @% l. n四:S3 恢复阶段的执行流程:
0 D: d+ ?# L  Y# D8 M& i
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
6 f* q* t, c" a' B  Z) c! @1:PEI 和S3 返回的路径:% L$ o( r0 ?5 V0 C, G' _+ t/ V
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正; C: x) j5 x1 t" F0 g: U
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路3 G( E- {% j! E2 O2 Q7 `
径。
2 D* f) a! i+ D 2.GIF
' J" U& y' @0 [3 g2:在PEI 过程中保存配置数据
$ t2 Y. b1 k) S/ k/ @: ]! I4 K有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
2 s! |6 v1 o) E8 e, ^3: DXE 和S3 返回启动路径
5 y0 @7 Z" K) G/ B0 \在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径/ B. _& y" X' s2 Z+ B+ t
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
3 ^' A6 [: N- X7 ~( [* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的" a: x; ^$ H1 @3 i( H& Z
DXE 启动过程就不需要执行。3 I  I1 F- I: o  J8 ~7 ]
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
/ y' D: C# T: ]DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查/ B9 P' Q( j6 r; P
找boot script,8 x& A' V8 r/ z( r8 T% d( R
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息" {: V! w, z) h% [* P1 O
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程  Q  ]3 T  n0 @# e
中保存下来的。
6 ~$ a: g* D. R* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
4 R/ \! {7 A0 j2 m" R- Y8 UProcessor chache setting.
4: Framework Boot Script:
) A8 N8 S, l5 w( a# ]( BFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,7 w! a% P2 F" v8 S5 c" d* T
memory, PCI 和SMBus。
' \0 V! e6 A: W+ S1 T3 H可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入- Y3 r) Y. F/ M- E0 I3 h, w0 P
Preboot 状态。- G* x! W; B; |4 }* z
5:S3 返回PPI 和DXE IPL PPI. E8 H; g. q$ f1 D4 t* Q# ?
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给+ U! }$ Q6 N( p1 }
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的1 f7 k8 x0 y0 [! t, d
呼醒向量处。在正常启动时DXE 是不会执行他的。
4 Q; ?$ ~0 O/ Y, C# Y* ]: A& D3 ?  Q9 [在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把$ N( f# I' \- Y" h
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot* e4 m3 M% T/ l
state.4 R$ l/ M  \( l# B! D- g
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS" V; E) l1 e8 O7 u- [
waking vector 并且将控制权交给OS 来完成S3 返回。
/ T6 d" C! w  i) G在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国# O- s7 R5 O$ y4 J9 Q4 c; e$ b7 {
入喜欢叫他为 上下文 ),使S3 失败。0 q- z8 n/ F7 K# C" G& N
S3 Resume PPI 需要知道如下情况:6 J9 r' S# q( W: t7 r
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
% Z/ C9 n! F- Q! \的地址。9 u! U  o2 z1 K
* RSDT 指针中ACPI 开始的地址和OS 的waking vector( u! N2 d2 L) }/ W9 X' U; y  ~
* 保留一段内存给S3 返回时使用。

' ^# d  a/ s1 @6 b" l: ~ 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-20 17:19 , Processed in 0.025959 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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