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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
7 W/ v' Z  _/ Q& a& a, w
(1) Pre-EFI Initialization (PEI)4 d- J- B: f* W1 m
PEI 负责尽可能的初始化平台为执行DXE 做准备,
, t1 j- }) H0 ](2) Driver Execution Environment (DXE)
* O: k( G' E& Y0 j( `; M$ N9 Y- j在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
% L- @1 J8 `  p+ P. g# I
* g/ |3 o6 T( q$ n; v
二:平台初始化的流程:4 j+ K' ?' |3 H# }
(1) I/O 操作4 ?' B5 Q5 B6 `7 j/ M. X- t
(2) 内存操作
4 L" n' ]( o1 W/ b" U& z* E(3) 配置PCI 配置空间
$ a8 ~1 h' w2 y7 ?2 T0 H(4) 通过PPIs 收集平台的动作。
; W* U* A3 O, r# b5 i! j6 {
  i) F) ~7 R# _- h
三:恢复平台状态:
0 Z& B* _( I6 o' X+ ~6 `
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为
! q7 Y8 A8 N7 z* I: IFramework 不知道以下信息
6 [4 T. t& |9 L& \6 ^0 d* PEIMs 提供的Preboot 配置9 q/ a7 M# `& A3 [5 X
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程% a( {; S8 _) g$ z* {
如下:2 ~; `7 Z" C# z+ b2 R
1.GIF 4 z; h% T# B+ E* P. Q

5 N/ ^) @0 A/ Z# w, b/ v# Q% ?
7 }; E; W6 o  f3 d+ G5 O* w( ?$ a四:S3 恢复阶段的执行流程:
" Y3 }9 T/ Y  S, p
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径7 l" |- G* P* d1 j( p1 V' ~2 Y
1:PEI 和S3 返回的路径:
" o, K: y+ _6 f7 lS3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正- z1 v+ U9 c" s5 J1 L4 X
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路0 q6 U' m2 H" U8 I- S
径。
6 ^; P$ \: G3 C. H* |1 I( d8 e 2.GIF
2 F9 u6 q( C, i2:在PEI 过程中保存配置数据$ `" H2 `5 n) T
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
3 I6 X: v- X  q3: DXE 和S3 返回启动路径9 C$ S4 t! ~- ]; l# }0 e
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径' u( N6 m# g) [1 y  l6 B/ e1 u" _
使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
. w* n; u7 A/ u5 o( |* z& ~* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的9 d( I4 L5 @7 \: q
DXE 启动过程就不需要执行。$ y( s4 H/ l  y4 s+ R7 t+ J
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
) J) b" Y$ F0 `DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
7 T5 i! Q- [% e找boot script,
% l) U5 i7 J, o找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息
% V$ z) q0 A; ~4 O) n" O/ X* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程
- U' {8 I9 B, Z% G# J/ P( d中保存下来的。: _, n% E9 y" M$ P
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,- Q8 K: r& v) I
Processor chache setting.
4: Framework Boot Script:( Y3 j# d* V# {# _
Framework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,+ [4 U/ W8 z) w# ^: O
memory, PCI 和SMBus。
3 G4 a! G. R+ {0 @9 G可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
6 e; C2 s  b* d- [0 ~' ~Preboot 状态。( @( Y- E# U: \
5:S3 返回PPI 和DXE IPL PPI  M; E7 z) D) D+ J) ?
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
. U; X5 j8 r4 qFramework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
2 w4 q( _  o% ~# A0 C  @呼醒向量处。在正常启动时DXE 是不会执行他的。
% n0 Y9 ?$ L' ^$ K在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把
. b5 A6 q, y; U; u- r控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
$ V( N) m' R" x4 _' {( Qstate.9 _& |0 Z) k- Z) u  b! y: o
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS% }$ Z3 J2 R! j7 ^+ u: z
waking vector 并且将控制权交给OS 来完成S3 返回。
' _9 Q' x0 g% `8 c8 g在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
. U& X3 ^$ f# O入喜欢叫他为 上下文 ),使S3 失败。
, G2 x5 W) p$ E- f5 p8 n! ~S3 Resume PPI 需要知道如下情况:
: P9 ~. o( x1 i: s+ @2 i& L
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
5 R& P5 L2 N6 _; z; y/ ]1 r1 p的地址。% {5 J% ]0 f7 W3 c1 H5 h
* RSDT 指针中ACPI 开始的地址和OS 的waking vector
+ j) [& _# X' a# }' R1 b  v/ i* 保留一段内存给S3 返回时使用。

" K- h: X7 a& e- y+ a 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1452

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-11 16:04 , Processed in 0.054786 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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