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

关于BIOS中ACPI设置的问题

[复制链接]
发表于 2009-5-30 19:29:11 | 显示全部楼层 |阅读模式
大家好:
- _  I" w, {& ^- @9 }# n$ a4 d     首先声明,我是外行,问的不好不要鄙视我,呵呵。。。
5 z7 B! r4 z+ [. Z+ w) m( P     我有如下三个问题,希望论坛高手们能够帮我解答一下,; K. ~! a! i$ G. b* {- h3 r. I2 Y
    1。 如何读取BIOS中ACPI的设置,我指的是像网络唤醒是开还是关,定时唤醒时间设置等,在Windows下的程序有没有可能将这些设置读出,有现成的程序还是要自已开发
1 I5 C7 g2 i' \9 M    2。 有没有可能在BIOS的ACPI单元中加入代码,使得计算机电源工作状态发生改变时运行这段代码
1 B* O4 S! [& d" J) S    3。 BIOS中和Windows注册表中各有一份ACPI表格,它们是同步的吗? 如果同步,是什么时候同步,是安装系统时还是每次系统启动时?, m4 f( s. M3 H4 x4 Q3 M5 R8 r1 K
   % z9 l% m: o- Z: R
    谢谢!
( `+ N1 n& N& p" z% E! _7 [# M8 N  }9 T  U0 q; a# W+ u
[ 本帖最后由 Passkalilo 于 2009-5-31 14:07 编辑 ]
 楼主| 发表于 2009-5-30 23:27:44 | 显示全部楼层
不会吧,就这么三个问题一个也没人回句话,看来这个论坛的人都是惜墨如金啊
回复

使用道具 举报

发表于 2009-5-31 07:52:29 | 显示全部楼层
试着回答你的问题:
0 l* y) s$ y$ i/ L( ]3 g1.有可能的,BIOS的设置可能会保存在CMOS中或者NVRAM中,这部分信息可以通过程序读出。如定时唤醒直接读cmos就可以获得,我没有发现现成的程序,所以可能要自己写。
7 t5 K$ ~: {9 X5 `9 T" B2.有可能的,当电源状态发生转换时肯定会跑BIOS ACPI中的_PTS部分的code,所以可以在那里hook。
8 z9 z5 m! G6 N+ e3.我觉得应该是每次系统启动时同步的,因为如果是安装系统时那么后续再flash bios就没法同步了但事实却不是。
" n0 O+ l; F9 z9 b" [. t% ]% `8 u
( D+ Y* D8 u6 Q% N0 j0 z3 r0 R我是一名EC而不是BIOS,所以上述问题的答案可能不够专业,希望能够帮助到你。
回复

使用道具 举报

 楼主| 发表于 2009-5-31 14:16:10 | 显示全部楼层
非常感谢Peterhu的回答* R/ V' K7 A9 `  A5 [& Z- }
3 }+ s1 [7 G- n7 Y$ e. _
这几个问题,我想再探讨一下:8 v+ z# R  @7 m% ~# v1 w
1. 如果Windows下的软件能够读取CMOS中的设置,那这样的软件为什么会找不到,是不是自已动手写一个这样的软件难度很大?如果找人开发这样的软件不知道报价多少才合适
8 {  ^6 o, o* T; l% G8 t" b2. 这个没有疑问
; r) z! f" a' v$ o/ V) R1 x  w$ \* {3. 我在实验中发现,在BIOS中将Wake-on-Lan设为enable后,在Windows中用powercfg /devicequery wake_armed 命令查询的结果仍然是None,这是不是说明它们不同步?还是我对ACPI设置理解有误,这些设置不属于ACPI?" N: @% n6 Y1 W3 g$ c8 H
5 k- F. z$ w3 @# ?5 S
[ 本帖最后由 Passkalilo 于 2009-6-1 10:23 编辑 ]
回复

使用道具 举报

发表于 2009-6-1 09:38:17 | 显示全部楼层
如果你想更进一步了解,在XP系统下,用ACPIView.exe或RW.exe可以看到ACPI ASL部分。
回复

使用道具 举报

 楼主| 发表于 2009-6-1 10:28:13 | 显示全部楼层

回复 5# iipeach 的帖子

我用ACPIScope软件分别读出了BIOS和Registry中的ACPI设置的表格,但是我实在看不懂这些表格,不知您能不能给指点一下,在这个表格里怎么读出定时关机的时间设置,及WOL是否enable的设置,十分感谢!
回复

使用道具 举报

发表于 2009-6-1 13:15:27 | 显示全部楼层

继续回答你的问题

继续回答你的问题:3 i7 t3 e9 O6 y3 Z# E
1.写一个IO port driver就可以读出cmos中的数据,但是还需要读取南桥获得RTC_EN以确定是否始能,所以还是有
. U# [: H# W  y% P& G( _1 {点工作量的。当然你可以用SE或者RW check相关的register。
5 M4 c8 A6 J& @% _% r, K2.NULL
' Q# f# T# K# ]2 s6 O6 ~3.BIOS中设置Wake-on-Lan设为enable并不会修改ACPI表格,通常BIOS会将Wake-on-Lan enable的信息保存在NVRAM中,这个CORE 8在SSP中有设置;接下来在OS下s3/s4/s5 BIOS会check NVRAM中的信息,据此设置相关register。而windows下通过lan driver设置的wake-on-Lan ,lan driver则会做个记录,而且透过ACPI asl code _prw function driver可以获得相关的PME/GPE enable register,最终应该也是在S3/S4/S5的时候设定register enable。至于你使用powercfg /devicequery wake_armed查不出结果可能是因为你是通过BIOS设置的,而不是使用lan driver设定的所以windows没法获得相关的知识因此而查不到。. t% y- e# z1 ]8 u# G2 F; m, n' q

+ @5 i) I. p# d: M& O以上如果只针对单一平台写个程序有可能做的到,如果要通用的话就很麻烦了。
回复

使用道具 举报

发表于 2009-6-1 14:08:34 | 显示全部楼层
1#,. B, G9 Q) m. a( I; n. C- `2 G2 ~; |7 n
第一个问题可以使用WINIO访问到CMOS以及南桥的regsiter
回复

使用道具 举报

发表于 2009-6-6 12:53:12 | 显示全部楼层
BIOS SETUP里的设置, 基本上不符合ACPI规范的.# }3 a" m$ a3 g4 {" h% g# F

2 f4 V$ o) Q' s0 \  ]) h7 WACPI规范里, 所有的设备是否唤醒, 都要从驱动那边去设置. 并且, PCI PME#应该是使能的.
回复

使用道具 举报

发表于 2009-6-6 12:55:13 | 显示全部楼层
BIOS SETUP里的设置也不能通过WINDOWS读出来, 因为那些设置只是菜单, 它们会生成状态位保留在SM RAM中, 在关机里, BIOS再根据这些标志使能CHIPSET REGISTER.3 U/ H( n7 X7 T: K) v6 v
6 v5 L& ]: [- G, U) G( |  e
状态的保留各家BIOS实现方法并不一, 读REGISTER也不可行, 因为那时你看不到, 退出OS里才会填
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 20:58 , Processed in 0.231744 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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