|
|
|
--易祝兵 " r/ @' O/ A. E( V* {. {; j8 p
你应该知道ACPI是什么东西了吧? 本小文章讲述一下软件在ACPI S3时的动作,在你看此文章之前,如果不知道这些名词。那就请close或跳到其它地方浏览1 R6 n, ~6 ~5 a
& K# r- d+ y; S D9 _+ A% ^" Z5 K
。
' u0 Q* P- a$ w
! Y$ b$ u$ j4 [2 I! I/ O, w0 Q前提:ACPI BIOS ACPI OS,Support S3., r0 z7 H. l6 M. _. |2 l# H# ^
! M2 R$ F' H( f u& I
首先,我们看一张S3的简图(Follow chart)(文章未尾,注册后可见 [register to see attachment])。' [) z: w5 e; x" ]) r2 K
- F N7 t. w3 A6 n: U我们再细讲S3的每个步骤:- u! D, }% P+ A2 ~% h; ^1 v
0 R) q3 g* ~7 m, _( ~
HW上电,BIOS跑第一条指令,最先会初始化一些CPU与Chipset必须的register。
6 a! m; q) q+ Y* N/ s% U0 c' _8 n' f; a) O% q. s/ n
再判断是否是S3返回,这个如何判断,就看BIOS的做法,也就是BIOS在前一次进入时,把进S3的标识存于何处(CMOS?ACPI IO BASE?)
$ r1 v; ?0 i4 t5 x& ~3 c& Z1 Z% Y如果判断是S3返回,那么BIOS就去Restore在前一次save的各Device(PCI/SATA/USB/LAN/SIO/Other...)和chipset(南北桥)的register的值(见红字,绿箭头),此间是否enable acpi需看BIOS的作法.* c! g+ D, f" g3 \7 c5 S
1 G+ E' D, Y" U1 l# \; y4 l2 D如果判断不是S3返回(也许是S4 & S5),那么BIOS跑正常流程,到Boot OS前,BIOS会做SMM的初始化动作,这个动作会初始化ACPI部分的代码(AML)和Table。同时也会初始化ACPI Enable/Disable的方法。如果BIOS声明Only support ACPI。那么BIOS会 Enable acpi,同时置SCI_EN Bit为1。如果没声明,一般是Disable ACPI,同时设SCI_EN Bit为0。. \& h& N& M/ a- N; S/ W* E R. G+ H( V6 s
7 G* W( Z- [' m! r" r* l6 Z
然后Boot OS,OS Boot Loader会先判断内存的使用情况(Int 15h, function 0E820h),以及读取ACPI信息为已所用,包括SMI PORT/Enable acpi command等等,然后加载OS的Image,从何处加载,这看OS Loader的做法,因为S4会把内存的Image放至何处呢?OK,先不管OS此阶段的行为。
+ n. M. c5 I. ]2 h: ?& h4 `3 y$ P
2 F- S' n6 N: N- I# L5 B3 Q7 L0 MOS Load Some Images之后,或从S3 resume回来之前会check acpi 是否是enable,如果不是,那就要打开ACPI Enable,前面也提到,BIOS在Boot OS之前或S3 resume恢复寄存器时,都可以先Enable acpi,如果没有Enable,OS会依ACPI TABLE提供的信息,发送SMI去enable ACPI。Enable ACPI的动作比较繁多....具体见你所开发平台的Porting/Design Guide.% P6 g& Y5 B" R, `& f: v/ R
- y/ q- E7 `, U( |# i4 s& s至此,打完ACPI support之后,如果为Sx(ex:s2/s3/s4)返回,那么就会执行TTS,_WAK等方法,同时OS会Notify各driver和application,告诉它他,"Hi Guns, I already resume from Sx!, Wroking now,Good luck!",如果不小心死在这里...你可能会两眼泪汪汪,用windbg吧。如果从正常启动,那么可能会执行一些驱动初始化的方法,如_PDC(Processor Driver Capabilities)等方法...
; o" C/ A' T: \4 w, b- Y& x" c( p, l& t; [
就此打住,请听下回分解。% h- x! V! M! m
% e# h* q0 ~4 _# y u( j7 M5 A
S3软件这部分的流程图(图片点击可放大)
, K7 n% b+ ]% J
|
|