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

UEFI S3 flow chart

[复制链接]
发表于 2008-5-10 13:05:43 | 显示全部楼层 |阅读模式
一:平台初始化的多个阶段:
' p8 _. C+ Z7 s
(1) Pre-EFI Initialization (PEI)
: C1 c& M* `5 J3 M8 _PEI 负责尽可能的初始化平台为执行DXE 做准备,3 m* I9 K, g7 g% @) E2 P7 ]
(2) Driver Execution Environment (DXE)4 G( N- @: `3 e* M: _6 P# i( \( I/ M
在DXE 阶段可能会改变PEI 初始化的环境,有些参数会被DXE 重写。
: B+ B+ @. {$ [- m( i
/ S7 t9 ~0 Z& ^7 X
二:平台初始化的流程:2 a$ a9 T9 O$ Y6 ~
(1) I/O 操作4 {' B9 s$ B6 _# J0 I) m
(2) 内存操作, e: b  P) }/ S! w7 ^; {* v; ?& F
(3) 配置PCI 配置空间# ?3 O# Q/ l! w$ ^$ X, j
(4) 通过PPIs 收集平台的动作。
6 u% G. C5 X8 I& Y3 r  n8 }
: |" Q, m! ~% Q1 ^( a4 R3 n. S
三:恢复平台状态:
  o1 t2 C" Z9 ]! J
S3 返回是加载平台的Preboot 配置,加载的过程需要通过所有的Framework 初始化,因为0 I8 A& o0 p0 ^4 [$ ]
Framework 不知道以下信息6 M- _+ d6 k# \4 ]. f2 x
* PEIMs 提供的Preboot 配置
. |9 o8 Y" W  G9 g 不同厂商提供的驱动最后Framework 还是需要像正常启动一下执行一次,执行流程
' C+ @9 A$ b8 t! }+ o6 n3 L如下:. D2 K% n1 m2 W1 n$ B# ~+ {
1.GIF
6 P! i* P* e+ Q4 e4 F" X3 Z/ M/ [! l6 a+ `
" E" O$ b7 z+ a0 w- e, W" @" c
四:S3 恢复阶段的执行流程:) _% A3 o, g' ]
SEC 是第一个被Framework 执行的,因此SEC 保存了S3 返回时的启动路径
. ]0 z& [. j8 M( s  {2 b1:PEI 和S3 返回的路径:
9 T" v7 `/ C. G7 _S3 返回时Framework 将加载PEI 的端口配置。PEIM 可能调用相应的PEI 服务找出正
  k# o$ v9 \4 O# r. x, o确的启动路径。PEIM 会保存配置正常的启动过程,并且利用来配置S3 的返回路6 @5 q& D' u# r
径。8 t; Q5 m* Q: U, h8 r! c8 w
2.GIF 2 W, x# x1 |& B2 F$ V6 o- ]! `. K
2:在PEI 过程中保存配置数据
; `9 v. P1 z" S: C- |1 `有很多种方法来保存配置数据,如firmware volume 变量,nonvolatile storage (NVS)
7 s' Y6 [0 l* B3: DXE 和S3 返回启动路径
7 |; T2 d8 r. u6 o4 w在DXE 阶段,有多种DXE 可以使平台到Preboot 阶段。让DXE 进入S3 返回启动路径
$ ?- f( G8 \; q' w+ }使DXE 驱动存在一定风险,原因如下:
* DXE 启动有很多服务,这使它变的很庞大
! ]0 K2 S1 {- y  `* 加载DXE 从flash 空间需要一定的时间。
如果DXE 在启动过程中能在NVS 中保存,那么DXE 需要的大量内存和复杂的( \* _( {* A- v; M6 |
DXE 启动过程就不需要执行。$ R% |" @6 D) G" C5 ~
Framework 提供一个boot script 让S3 返回时获得DXE 的所有信息。这些信息是在7 a+ `" b7 `, j! L
DXE 驱动正常启动过程中保存在平台的NVS 中形成的。在S3 启动过程中到NVS 中查
" u9 f9 E# V' h7 X找boot script,  r4 }1 y8 y* O! c: e+ E& s
找到后加载这些配置。
* ACPI 要求BIOS 加载chipset 和CPU 的配置信息$ U1 ~' N$ f  v5 |
* Chipset 的配置包括:memory,I/O 和PCI 的配置。这些信息是在DXE 启动过程% b$ @! H! W0 `  T
中保存下来的。( f  [, w8 `9 D: t. o' y/ |
* CPU 的配置包括:SMM,Microcode updates, Processor-specific initialization,- v' F: r% L1 [
Processor chache setting.
4: Framework Boot Script:
9 ^' d/ q5 {9 H/ d( ^9 K" NFramework boot script 是一个script 用来描述一些常用的初始化平台操作。如I/O,! N' P" ~1 B  S& C; l3 l' q1 ?' d
memory, PCI 和SMBus。
) r+ P9 D0 \/ P1 I7 ?/ l: I/ `% B可能有多个boot script tables 在某些平台,这些table 描述了如何成功让平台进入
; R8 O; t: V* ]1 M* w/ N2 Y" XPreboot 状态。! ~, }/ U' ?1 F
5:S3 返回PPI 和DXE IPL PPI
+ m, Q0 |, [4 N9 xDXE IPL PPI 是最后一个被执行的PPI 在PEI 阶段,将提供正确的启动路径给
: _  N) p7 o2 H" ZFramework。因此,DXE IPL PPI 将初始化CPU 和Preboot 平台,最后跳到OS 的
: h' G0 A) Q4 F呼醒向量处。在正常启动时DXE 是不会执行他的。
7 t) s  f$ F( ^  l. J: V在S3 返回时,DXE IPL PPI 将会定位S3 Resume PPI.如果被找到,DXE IPL PPI 将会把$ |  H: m1 r. R  Y+ G
控制权交给S3 Resume PPI. S3 Resume PPI 将会执行一此配置让平台进入Preboot3 i3 N: f4 S7 H! y% P+ M
state.5 |$ c% i8 N+ d5 t4 ~# A/ j; n
S3 Resume PPI 必须执行Framework boot Script table 来加载平台配置。它负责找到OS
& q' i) R2 W7 v& a; [  vwaking vector 并且将控制权交给OS 来完成S3 返回。! x; h+ s! x: ]. p: m
在整个过程中,只有内存是S3 启动可以使用的。任何内存使用会扰乱系统的context(国
6 _' Q- q/ n& x* T0 a% P入喜欢叫他为 上下文 ),使S3 失败。
# A. P7 i3 a' g2 O( {S3 Resume PPI 需要知道如下情况:) p% C& D5 u0 {5 h
* 内存S3 boot Script Table 的地址或者firmware volume file 中S3 boot script table
6 K; |7 e5 m$ \/ j0 g. `' _' q的地址。/ X. ^- z. ^6 q" x
* RSDT 指针中ACPI 开始的地址和OS 的waking vector7 O8 @* L8 l" o+ `4 p
* 保留一段内存给S3 返回时使用。

; U' |2 }  R9 _, ?0 F 3.GIF
发表于 2008-5-10 14:48:27 | 显示全部楼层
图好象看不见,是我的级别不够吗??
回复

使用道具 举报

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

S3 Resume in UEFI.rar

127.25 KB, 下载次数: 1546

回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-12 08:44 , Processed in 0.053428 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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