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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:6 r) p9 e6 p9 q7 u2 O
(1) Pre-EFI Initialization (PEI)
5 ?" N' I3 b0 g$ m7 j3 O- XPEI 负责尽可能的初始化平台为执行DXE 做准备,/ H' z) C8 U8 u3 h! @# b& k
(2) Driver Execution Environment (DXE)
4 i) s3 s3 i% B4 E5 F2 |* W- a在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
; W( \  Z: \3 H& H' T0 G& e# J
, A* y( U( l7 E+ w; a4 y% E) @
二:平台初始化的流程:6 m6 E6 C) v4 |- p( k0 ~
(1) I/O 操作
: p9 W5 r/ V7 N(2) 内存操作9 s2 I  n6 g3 Y/ n* Q( p
(3) 配置PCI 配置空间  p8 x% X' p9 B+ b
(4) 通过PPIs 收集平台的动作。
/ B' M6 V* |- y9 P$ i4 D& A7 P

, l% z' Z8 `1 B# d3 r9 F/ w. Q7 X; V三:恢复平台状态:
, C7 g# O; d( h' v
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
' {& l' C  S( m2 q) t3 M, s) Z. EFramework 不知道以下信息
! S; Z1 x6 J  m0 O7 A* PEIMs 提供的Preboot 配置
: X  W+ l# ~2 w' x4 n  t; T 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
1 l! c+ U$ L3 G; \7 c4 s如下:1 n& b) n/ h% M- o1 ^, ^' R+ @
1.GIF 0 T+ z& _% ~% _' r- e

1 @+ T6 @5 L$ Z# b7 Z. C: `
5 k) P$ e4 |$ b" }  y$ D' b" o四:S3 恢复阶段的执行流程:8 B; B$ Y& ]1 S0 i, @) j4 J
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
1 _9 m* e. ?0 G. y3 c( t3 K+ v* s1:PEI 和S3 返回的路径:
0 R3 q# Q: @) r4 ]S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
1 n4 ?2 j! l: j% ~& y% t9 U确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
" s1 r6 U" G& l- r! C( |径。
* g# y1 e/ B% |. l7 C# C 2.GIF . a; k5 E2 [! L$ b" u, L5 Z. L
2:在PEI 过程中保存配置数据& g( }  D* d- E/ C7 ]& t
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
; ^; A' m9 F# G3: DXE 和S3 返回启动路径
* J, n( @) f. J* e, p5 U- w在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
; i' f, r+ a9 D% b使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大1 W. _) u7 Y6 c$ w
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的
5 Q3 K; q! N. V$ [" WDXE 启动过程就不需要执行。
4 K7 O2 N. c, Q1 T: n, {Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
" y! Q& g2 v) F5 k* QDXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
  }* C7 w. R. ~2 i7 d+ ~# M1 S* t找boot script,
2 R2 \! b% p( y" M; i$ X找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息& F0 E7 I* O8 M; X1 {" x
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程" m6 W) I% r8 `4 a( G- J
中保存下来的。
/ g; V/ M2 B! I" l! {* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
# @) f) G2 V2 h6 VProcessor chache setting.
4: Framework Boot Script:
* W. l: _7 P2 p) I) K. f% oFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,* q, [" L+ t6 a% l2 }9 i( X
memory, PCI 和SMBus。
8 c5 V0 I! @1 a, t可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
0 t; B7 {: L* }& F7 [Preboot 状态。
# R9 f+ M7 P8 _5:S3 返回PPI 和DXE IPL PPI
: ~; ^$ K: Y" U4 H/ B9 q+ M( FDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
, W% C0 \1 m0 H4 S6 i- QFramework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
1 N1 k: n! A/ p; {! S呼醒向量处。在正常启动时DXE 是不会执行他的。/ J+ G  i1 S+ H
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
8 T. T3 M! [  d) a/ k" a; W2 e控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
, K3 p% C6 k9 N* }# V( Vstate.$ C# J4 j7 I1 @0 `) H$ p2 P
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
6 u3 ?# p' r2 s& a# i1 bwaking vector 并且将控制权交给OS 来完成S3 返回。; W' }5 z# S( Z. p
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国4 }4 q7 B- J0 q4 {( |: B5 P
入喜欢叫他为 上下文 ),使S3 失败。
$ {, d' }0 b4 v1 V/ US3 Resume PPI 需要知道如下情况:8 C5 |1 L/ A) w' a$ U0 e( T: M
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
6 z7 L* D% ^. t5 g+ O的地址。
" e! L: m7 }4 l2 J* Q* RSDT 指针中ACPI 开始的地址和OS 的waking vector
: L: D5 `8 t/ y/ P* 保留一段内存给S3 返回时使用。

% M9 X& B7 f3 S% U4 H 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1174

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-1 05:46 , Processed in 0.060982 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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