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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
0 m+ C* V& C/ d; W  o" L/ K
(1) Pre-EFI Initialization (PEI)
$ J& K  M  ]9 a- F5 OPEI 负责尽可能的初始化平台为执行DXE 做准备,# Z3 B- L3 D3 C0 v4 @$ |3 M4 q3 l
(2) Driver Execution Environment (DXE)
6 ]% e/ B  h) k% W1 P在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
7 r) c) c0 U9 n1 M7 M

/ Z1 G2 G% G# `5 f二:平台初始化的流程:
$ ~& I! h. T3 d6 F1 H' x# y; A
(1) I/O 操作/ S5 W& {, h4 m
(2) 内存操作
, W% P; x; r& I8 o- ~/ O(3) 配置PCI 配置空间
1 F( a% N6 Y) u3 D3 H' I2 x(4) 通过PPIs 收集平台的动作。

3 `9 a( r. S3 i  P  f* S7 e/ I
, q& H* w6 b5 o8 F/ h* H三:恢复平台状态:
& m7 s& p% v4 D! ?+ G# G
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为, b- g: c7 P" s1 ?5 V
Framework 不知道以下信息0 a  a& C4 C: P7 [. ^6 m& n) @
* PEIMs 提供的Preboot 配置! _5 J" F& a4 Y$ H, w: z
 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程! `6 K5 U! d- g0 o' {& ]" e5 T
如下:
1 K4 K/ S. m5 ?) N 1.GIF * \$ W4 U& v+ X
& k4 E5 k0 t0 @* ?! N) D
3 f* K& x' F5 T0 O% ^
四:S3 恢复阶段的执行流程:  U: W) h0 b8 ~/ S4 I/ R
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径+ j* O$ b4 U. D* l( A
1:PEI 和S3 返回的路径:6 W+ I4 y( C8 F( Y" |
S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正9 Z% Q5 U8 N- N9 [0 I" J
确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路; |  u1 i- e; V/ o& Y/ Q! I
径。/ O6 V! h5 G; I) N3 h
2.GIF
8 J% N; h& ]7 m% Y2:在PEI 过程中保存配置数据+ m+ `. t5 ?8 V$ a! ^
有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
, A1 W7 {) y( ]* [0 V) r) u3: DXE 和S3 返回启动路径3 k1 S0 e$ b2 U9 T% d' p9 t0 l( e% x
在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
& k2 g; {, {( _4 H, ]1 @/ F, I使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大5 B( x. j; p4 d2 R  w' a6 J. Q
* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的; Q$ a% ^! ]$ b9 Q& O: d! w
DXE 启动过程就不需要执行。
+ Z* P4 Y- L2 ~- hFramework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在
) ]8 _  W( ?, H! S! p* D* ~DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
7 Z/ I" K! E8 F找boot script,
8 i- [2 ^0 c7 C找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息3 o1 {; [; R* |" K6 r
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程7 H! a& R, V. z! F  w
中保存下来的。8 {* u. o' U6 ~* F) O
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,
$ ]# T+ t8 h. `  ]5 @Processor chache setting.
4: Framework Boot Script:
: j. z) J1 K* q) ~- t4 bFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,
$ H5 E, p" ^3 _% i2 xmemory, PCI 和SMBus。
7 S0 |3 k4 ~  n* V( I可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入, t# N; M/ d6 i3 m5 q- t- Y
Preboot 状态。
  B) e# o( W( \1 x  e5 g& j$ Z5:S3 返回PPI 和DXE IPL PPI  a1 ]* w  m: B- |* ]
DXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
; P, _: l& o0 O' }, _- q, {Framework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
% w" u# {5 e) e& g  H$ I. G" g呼醒向量处。在正常启动时DXE 是不会执行他的。
7 C* U/ k% s+ m# E在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把8 c# P7 O5 F# ~- L9 n  j% x
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot
) i5 z8 R1 i. U+ X: Z5 Qstate.
" b3 W" p0 `2 i  s; zS3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS/ Y2 `" e1 H; u$ [* E
waking vector 并且将控制权交给OS 来完成S3 返回。
* G( c# L1 l( z* }8 r7 V在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
7 G, n. w9 B. A6 ~) J" N入喜欢叫他为 上下文 ),使S3 失败。  V; x, B7 j: t+ `* @- v
S3 Resume PPI 需要知道如下情况:
0 t5 O2 j5 m2 H0 M% U
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
9 I4 B1 T' `2 u( e) r6 m' K0 m的地址。, O/ X" A& W9 p
* RSDT 指针中ACPI 开始的地址和OS 的waking vector
0 A) e' Z- |4 ~  K4 h  Z, A* 保留一段内存给S3 返回时使用。

1 M: ], w: o( U! B1 o: r 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1560

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-29 04:39 , Processed in 1.308646 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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