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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:% \  J" v5 C: \. L5 H- N
(1) Pre-EFI Initialization (PEI)6 K; M- Z) P5 B( f% q3 M3 {# A
PEI 负责尽可能的初始化平台为执行DXE 做准备,& c. p+ X7 N: T4 t
(2) Driver Execution Environment (DXE)
& j% N( L& J* N7 ?1 n* j" W在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

+ B7 S% U! J, C3 r+ ?$ o, Z$ v! v8 p2 D4 `. j! f
二:平台初始化的流程:/ `* b2 N5 o9 R: E! L
(1) I/O 操作
& T* V7 ?$ R% R0 x* E$ M2 g(2) 内存操作1 J) w( }" r+ T1 Z& q
(3) 配置PCI 配置空间
' F4 P. W$ G( v% L6 S7 L" c(4) 通过PPIs 收集平台的动作。
: k3 R  h2 b3 k
6 I/ W9 S1 i- f/ \; @3 p
三:恢复平台状态:* {: W) y" O9 D' S& v
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为( Q1 \& j: T* |. F
Framework 不知道以下信息8 M7 \# t; u% C% \& g
* PEIMs 提供的Preboot 配置3 m. D3 ]' u. w  a$ s
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
' \1 K7 h7 B( }  `如下:
  n- }+ c0 B1 `$ l% ~7 `& W3 E 1.GIF . w9 p1 {& V# }5 ~/ A; L) a" _
/ Z  W' Q3 \- T8 \
5 d2 C+ r/ L) ?& n+ x
四:S3 恢复阶段的执行流程:) M; Z" G) `$ E- p# y
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径9 Q( [9 V! A& l
1:PEI 和S3 返回的路径:
/ [$ k, I- X# rS3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
( r  X$ k" a: x2 s5 u" k! Z# W确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
7 G; d9 B7 `) E5 f/ }% e径。9 I" X$ ^8 _3 s
2.GIF # E6 P  q- ]( g7 [3 u7 |$ o
2:在PEI 过程中保存配置数据
+ H1 ~- O2 Z; [; `7 ?+ l有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)* a8 D. U" I0 M, T% H# e' e, x
3: DXE 和S3 返回启动路径
9 e2 p; _2 @/ H6 u. I! e8 J9 z在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
6 G! E, k% \$ d7 K, d使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
* C2 }1 u1 K3 h# R+ W: S* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的2 o$ [% D9 Z& ^" [  o. t
DXE 启动过程就不需要执行。' Y% b* ]& L% f' S2 g
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
$ M* b/ C9 V7 eDXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查4 O! n5 ]. T' Y- P" x
找boot script,  l0 ?, |7 _; s" v7 \% [- }
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息, K2 G9 K5 _) ~' N! O: ?7 _
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程, M: o( D& t; G
中保存下来的。( H. B! \6 U# _, h' F' B: r) J; K
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
, T: ]( p* K3 r% MProcessor chache setting.
4: Framework Boot Script:# Q; m/ b' P1 x$ o% l8 T$ x
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
% o+ ]+ R6 P+ Bmemory, PCI 和SMBus。; z: z) s4 K2 J# ]3 Q- ?1 Q( O3 c  ?4 [
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
* l( s( G( \/ K6 T1 d3 {Preboot 状态。5 G+ k+ n% Q( h( C2 w  g
5:S3 返回PPI 和DXE IPL PPI
% [( D2 ^8 Y# o" N/ @DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给7 `# \) L0 t( ~
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
+ X& G4 Z( ^; {/ k! s$ B2 Z7 v: b呼醒向量处。在正常启动时DXE 是不会执行他的。% G% ~3 V9 ^0 r) ?9 b9 [6 _5 A
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把* x2 A0 M$ X- n" T& l' Y
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
# l+ Y3 n2 e+ f3 j6 G4 Ustate.
! I# ]$ \  T& t: w: j, GS3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
8 B% r; ~; Q* W: ]waking vector 并且将控制权交给OS 来完成S3 返回。, k$ G; d4 f; G3 z5 G$ V: P! d  t
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国2 u  H) }5 M$ s! [1 c( }
入喜欢叫他为 上下文 ),使S3 失败。
( f$ w3 f3 L( T3 l; ]% }% F- Z$ {S3 Resume PPI 需要知道如下情况:
, k: n+ W3 v3 g% e/ ^4 n
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
5 m8 X& \+ `: @的地址。
5 e% i( \7 ^. z9 z* RSDT 指针中ACPI 开始的地址和OS 的waking vector
9 z# Y* u1 X+ J' P: ]  F# E0 k# v* 保留一段内存给S3 返回时使用。

5 b7 Q1 o* n' k" A  q 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1455

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 18:06 , Processed in 0.097563 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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