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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
+ G. c  M  v, U1 ?) h7 L
(1) Pre-EFI Initialization (PEI)( ~! P$ U) k- O" R
PEI 负责尽可能的初始化平台为执行DXE 做准备,- S4 G% o6 _; d+ N  H
(2) Driver Execution Environment (DXE)& _9 K; K& v1 X: G! s
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。

$ k2 K8 E; F7 T# @, x
4 ]+ g; e- Q) i, M" F9 `0 ]二:平台初始化的流程:! s2 \  T" I" e. M
(1) I/O 操作
; ?/ x; L& V6 ?7 H  o$ D2 f(2) 内存操作
  ]0 z8 Y- r! X$ `6 f(3) 配置PCI 配置空间
) D0 l# x2 ~9 i(4) 通过PPIs 收集平台的动作。
' a5 A$ B- q+ q" a

9 @" G) L& r$ i( Q8 q9 D三:恢复平台状态:* C& a% ~3 e/ z! I+ S" e
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
( O# N3 {' V8 P) J5 MFramework 不知道以下信息4 ~. q' B+ L1 n: D6 }
* PEIMs 提供的Preboot 配置
3 K. W/ v" {4 l! M5 W 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程; c4 z6 i5 C2 ?; j( _3 \" w' J+ k
如下:
6 ~0 g. Z: a) v$ X 1.GIF
1 s/ M+ P* l+ c5 e
1 }  }+ H. j/ u. Q/ o+ g8 n! m& R$ V
四:S3 恢复阶段的执行流程:
+ F6 `; x. I# g; c6 M- y6 g
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径6 J- b+ @& \( @) G
1:PEI 和S3 返回的路径:, h" b; h; O, Q! \7 i2 b: Z
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
4 h" b" Z2 [& x- V( z确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路
3 Z0 |% z: o& N* E6 {4 @6 `/ [: h径。) y2 d5 J& X' y" ], G( k3 L: J
2.GIF
- s/ C$ t. v; s( \: d- P, c$ B2:在PEI 过程中保存配置数据
9 C+ k* p. h/ N) `5 c有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
0 f9 D& b+ U+ `/ l( V+ G' w+ P' Y3: DXE 和S3 返回启动路径
. N" m. X9 }0 `% U0 x5 B5 o# |, v在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
% K$ }  F! Q; Y  L& x* p4 ^9 D/ k使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大- I. x. ^* ~# f3 f1 {' y; t' k
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的2 D% K: d" v2 L; g. D1 N
DXE 启动过程就不需要执行。
, ]9 b! |% B5 O  ?- G/ W  O8 TFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
: n2 _9 |* O4 BDXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
1 D8 u) e0 }% K找boot script,
- Y+ W3 e( T& }/ T1 @7 ?' u找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
' g: M/ r4 X; G* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程' @& P' _$ x" L4 G1 ?0 W4 _
中保存下来的。
' X; g; X5 B' Y. A: l/ ~% M3 k* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
' s5 }2 B# n5 S- X1 [& |Processor chache setting.
4: Framework Boot Script:
. d5 o# ]8 ^/ {5 IFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
. q+ r: o$ K. S. ~memory, PCI 和SMBus。" h! [3 L1 i  C1 h% f
可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入" l: v, @, H) O, b, c  q
Preboot 状态。& f7 _& Y/ `6 L' W
5:S3 返回PPI 和DXE IPL PPI' |+ ?, N* [- u# w
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给. j/ m2 r  E0 c8 e1 i7 c; F
Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
! N/ P: }) B1 w- D呼醒向量处。在正常启动时DXE 是不会执行他的。9 Z6 ^; r4 v0 X! j
在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把, L' P- e! C5 f- s* R( ]
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
! v+ g6 X4 L$ Rstate., _6 C2 n  Z6 }' p, r: N; c
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
1 u; X/ q$ V0 |' _. g; vwaking vector 并且将控制权交给OS 来完成S3 返回。7 C: x: W$ n8 }4 o7 `2 a4 T* B
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国, R, d/ T6 V3 D& F; y) R( A) @
入喜欢叫他为 上下文 ),使S3 失败。
( p# c5 g+ l% u, rS3 Resume PPI 需要知道如下情况:2 R' |' J' [3 j. ^
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
: R0 u' E2 J) ^的地址。7 O7 G5 E# @! |' }  Z4 n
* RSDT 指针中ACPI 开始的地址和OS 的waking vector
: l2 z$ e. d. ^: x+ J, D; @* 保留一段内存给S3 返回时使用。
9 \, w; P7 x- ?2 g6 @% V3 c4 q
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-15 18:15 , Processed in 0.033766 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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