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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:+ {& P  y  Z; R6 |2 D' }% T/ g
(1) Pre-EFI Initialization (PEI)
. L; a! B3 ^# S" ZPEI 负责尽可能的初始化平台为执行DXE 做准备,! |" d5 p% a) u. \
(2) Driver Execution Environment (DXE)9 ]# L) S* D- z6 T; e9 ~
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
% D3 y6 S& P  u1 @
! [. g3 L5 Q9 ?% w4 w/ k
二:平台初始化的流程:* P* K& Y. r! H
(1) I/O 操作
* l1 v/ }. ]4 i# `( U(2) 内存操作2 l7 j6 i* v! |" t+ x  N: }% p
(3) 配置PCI 配置空间/ I- T- t- S& ^0 z
(4) 通过PPIs 收集平台的动作。

$ k( Y2 Z6 i1 u0 j4 |4 U& R
1 x4 ]  g0 x4 |& L三:恢复平台状态:9 p; w$ ], z3 M8 m
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
8 ~' J# F4 Y' n7 z' kFramework 不知道以下信息
+ F  q- L' m4 O. k+ D0 l3 z$ \* PEIMs 提供的Preboot 配置
9 S, U6 G; j- G# X; L 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
$ x6 v+ O' I; [* M& R# G2 `如下:! f2 u: Q# x8 |& E  n) F- f, T
1.GIF
( `4 G, n& ~5 j3 m  M: l; V# W, {: D% `; k1 _6 r
: R) M( S' X' w6 M: h# r' ~+ [
四:S3 恢复阶段的执行流程:% Q% K3 p5 v& g8 g: `( C6 ?
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径' ]  T# n; p) b1 j/ P( N9 P
1:PEI 和S3 返回的路径:, O; _: F3 Y! W$ W. Q
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
$ Z+ {; F9 N1 W  f2 q! Z确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
# V% W1 L# W% [5 S径。! F) @+ r5 ?$ |$ c' X
2.GIF ! A" d2 S' T, c$ k$ {
2:在PEI 过程中保存配置数据
6 k  N/ U, ~- a有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)" ]* i1 ]1 t# M3 N# s0 y/ X
3: DXE 和S3 返回启动路径
, E& o6 k% u% D' F, ^( j; p在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径) P3 Z/ r# W3 Y  o
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大1 @5 c$ Y$ c' g& z3 ?
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的! |- N; E6 V6 {" N  ?) i
DXE 启动过程就不需要执行。
. F+ O# E" A! A) f% [Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
% k: Q- d: Q0 x5 p) b/ f( q. m7 {DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查, g* X0 J( f+ v9 G" e& w
找boot script,
& x3 |1 V0 _9 k$ [找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息7 o1 r. q! g6 }# E$ X) L7 @0 R
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
# \. w0 ]9 x3 ?# @' `4 }中保存下来的。
% A1 M8 r  u8 t( D  e/ v* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
$ q7 t4 h% \" lProcessor chache setting.
4: Framework Boot Script:
6 [% o. b$ g' X: u& l: Y1 gFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,; a& Y( [3 y# s$ G5 Q- c
memory, PCI 和SMBus。
8 t6 a) s. r: F. G; v可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
" ?+ g) z+ C& Y' i: f  FPreboot 状态。
% ?( c9 ^* L' t3 ?5:S3 返回PPI 和DXE IPL PPI) W* ], U' l# r% x: z4 A
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
) U5 k1 Q6 K- O. k8 l' mFramework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的/ Y6 U. ?& w  T& }4 _3 I( H
呼醒向量处。在正常启动时DXE 是不会执行他的。
8 b( u0 \/ `: s: u" `' d在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
7 M2 ^! m6 D' X; L0 n控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
; y* b" H3 `6 ~+ n, _6 E5 ystate.
7 m, ]9 p  E  X" g, @8 dS3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
$ k0 R" z3 v  X& Y0 ^4 M" q& Hwaking vector 并且将控制权交给OS 来完成S3 返回。
, C. M- s% m+ R3 u: x/ J在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国3 H; p* W( I* v& z; V: ]
入喜欢叫他为 上下文 ),使S3 失败。
* A. Y7 P0 C/ \# h' ]- sS3 Resume PPI 需要知道如下情况:
9 ?3 e. W' D: M+ |4 a! `- M( a
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
; ~% {: }, @- t+ m  U  n% [的地址。1 z) M& f( e; L/ x( p5 g" |
* RSDT 指针中ACPI 开始的地址和OS 的waking vector
- D" @- X4 ?& }3 ^  n$ h7 E0 H* 保留一段内存给S3 返回时使用。
8 E9 y5 k' S8 R. f+ T7 N! s
3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 840

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-4 20:57 , Processed in 0.082232 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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