|
|
|
--易祝兵
$ E9 g5 b8 [: }你应该知道ACPI是什么东西了吧? 本小文章讲述一下软件在ACPI S3时的动作,在你看此文章之前,如果不知道这些名词。那就请close或跳到其它地方浏览0 ^' {. }( x" Z% T/ O8 r) N; c+ T
8 r0 @2 X9 g6 @* @; u/ d! N6 R。5 ^- t9 a* L3 X' u, |9 s; h
: Y2 }3 |/ d1 D" ?' x0 Q8 y( {前提:ACPI BIOS ACPI OS,Support S3.: j6 } d. U0 U* R; q+ _
9 V, I" u& G: i9 f. R) j* h* `. a
首先,我们看一张S3的简图(Follow chart)(文章未尾,注册后可见 [register to see attachment])。+ N x9 G3 Y3 T: i
4 @& v: `" D: z8 [
我们再细讲S3的每个步骤:: ]0 R6 O) R# Y# C& ?) z0 f* _2 A
9 F# v5 D2 Q: @- i
HW上电,BIOS跑第一条指令,最先会初始化一些CPU与Chipset必须的register。4 L+ R, S* `$ u' P
( x8 _: g- p* B0 v- X
再判断是否是S3返回,这个如何判断,就看BIOS的做法,也就是BIOS在前一次进入时,把进S3的标识存于何处(CMOS?ACPI IO BASE?)
* a" y* N! D+ P6 C; |如果判断是S3返回,那么BIOS就去Restore在前一次save的各Device(PCI/SATA/USB/LAN/SIO/Other...)和chipset(南北桥)的register的值(见红字,绿箭头),此间是否enable acpi需看BIOS的作法.4 F- Y, A5 M2 o `
# S6 N- z# v* S# A k如果判断不是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。
6 \" Z& d- {, f, W
& o9 ~2 p' [# A q6 W$ E$ ^然后Boot OS,OS Boot Loader会先判断内存的使用情况(Int 15h, function 0E820h),以及读取ACPI信息为已所用,包括SMI PORT/Enable acpi command等等,然后加载OS的Image,从何处加载,这看OS Loader的做法,因为S4会把内存的Image放至何处呢?OK,先不管OS此阶段的行为。
2 j h, H3 G, c: e2 K7 D, m2 s- G8 Y
5 [7 }' ^2 \7 O1 R3 x$ e8 [, Z9 F4 OOS 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.+ N& Z4 F: y4 k4 j6 O' V% q2 W
: ]& J& o7 ~* y
至此,打完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)等方法...4 [4 j4 \1 K' {) z8 {& r' _
2 k# b; {/ ^6 |就此打住,请听下回分解。
: r: Z/ `* V, F& [& n
: o. O% O# A" o& D* b! s1 r8 _S3软件这部分的流程图(图片点击可放大)5 B$ a {; T& l# d/ N0 d3 m, Q" @
|
|