- 积分
- 1162
- 最后登录
- 2024-4-28
- 精华
- 0
- 阅读权限
- 40
- 主题
- 7
- UID
- 265192
- 帖子
- 684
- PB币
- 255
- 威望
- 148
- 贡献
- 0
- 技术
- 8
- 活跃
- 1034
- UID
- 265192
- 帖子
- 684
- PB币
- 255
- 贡献
- 0
- 技术
- 8
- 活跃
- 1034
|
本帖最后由 thomsyan 于 2013-4-22 14:28 编辑
本文主板BIOS为HP的166D,没有添加任何功能,只是修复了Errors、Warnings和Remarks。
1、提取dsdt得到dsl文件
使用AIDA64提取bin文件再用iasl反编译得到dsl文件,具体过程如下:
下载附件
iasl.zip
(472.15 KB, 下载次数: 172)
AIDA64.Extreme.2.60.Green.part2.rar
(4.48 MB, 下载次数: 214)
AIDA64.Extreme.2.60.Green.part1.rar
(4.6 MB, 下载次数: 254)
AIDA64是绿色特别版,由于解压需要时间可能运行后会有10秒左右的卡顿,耐心等待就好了。
右击上图位置,也就是AIDA64的最下面的状态栏,选择ACPI Tool
单击Save DSDT,保存bin文件在cmd里执行上面的命令,加参数-d,反编译dsdt得到dsl文件
2、使用iasl编译
用iasl编译上面得到的dsl文件,文件名可以任意,比如dsdt.dsl
得到下面的报错:- >iasl acpi_dsdt.dsl.bak
- Intel ACPI Component Architecture
- ASL Optimizing Compiler version 20100331 [Mar 31 2010]
- Copyright (c) 2000 - 2010 Intel Corporation
- Supports ACPI Specification Revision 4.0
- acpi_dsdt.dsl.bak 37: External (\TNOT)
- Error 4057 - ^ Name already exists in scope (\TNOT)
- acpi_dsdt.dsl.bak 2984: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 3407: Method (ECMD, 3, NotSerialized)
- Warning 1088 - Not all control paths return a value ^ (ECMD)
- acpi_dsdt.dsl.bak 4667: Name (_WDG, Buffer (0x50)
- Warning 1099 - Unknown reserved name ^ (_WDG)
- acpi_dsdt.dsl.bak 5830: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 6163: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 6254: Name (_T_1, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_1)
- acpi_dsdt.dsl.bak 6255: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 6609: Method (_WED, 1, NotSerialized)
- Warning 1099 - Unknown reserved name ^ (_WED)
- acpi_dsdt.dsl.bak 6609: Method (_WED, 1, NotSerialized)
- Warning 1099 - Unknown reserved name ^ (_WED)
- acpi_dsdt.dsl.bak 7449: Method (_HOT, 0, Serialized)
- Warning 1088 - ^ Not all control paths return a value (_HOT)
- acpi_dsdt.dsl.bak 7449: Method (_HOT, 0, Serialized)
- Warning 1081 - ^ Reserved method must return a value (Integer required for _HOT)
- acpi_dsdt.dsl.bak 7451: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 7502: Method (_CRT, 0, Serialized)
- Warning 1088 - ^ Not all control paths return a value (_CRT)
- acpi_dsdt.dsl.bak 7502: Method (_CRT, 0, Serialized)
- Warning 1081 - ^ Reserved method must return a value (Integer required for _CRT)
- acpi_dsdt.dsl.bak 7504: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 7641: Method (_PSV, 0, Serialized)
- Warning 1088 - ^ Not all control paths return a value (_PSV)
- acpi_dsdt.dsl.bak 7641: Method (_PSV, 0, Serialized)
- Warning 1081 - ^ Reserved method must return a value (Integer required for _PSV)
- acpi_dsdt.dsl.bak 7643: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 8439: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 8602: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 8680: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 9282: Name (_T_1, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_1)
- acpi_dsdt.dsl.bak 9283: Name (_T_0, Zero)
- Remark 5111 - Use of compiler reserved name ^ (_T_0)
- acpi_dsdt.dsl.bak 11785: Method (_CRS, 0, NotSerialized)
- Warning 1088 - ^ Not all control paths return a value (_CRS)
- acpi_dsdt.dsl.bak 11785: Method (_CRS, 0, NotSerialized)
- Warning 1081 - Reserved method must return a value ^ (Buffer required for _CRS)
- ASL Input: acpi_dsdt.dsl.bak - 11967 lines, 411788 bytes, 6161 keywords
- Compilation complete. 1 Errors, 12 Warnings, 13 Remarks, 11 Optimizations
复制代码 3、编辑dsl文件修复
现在我们从最后面的一个报错修复,不从最上面是因为删减行会使定位带来麻烦。建议windows下编辑dsl使用notepad++,轻量级很方便,Ctrl+G直接定位行,Ctrl+H替换,Ctrl+F查找,可以同时查找打开的所有文件,另外这是个开源软件哦:
11785行,1081和1088的Warning,在Method (_CRS, 0, NotSerialized)后面添加一个Method:- Method (RES, 0, NotSerialized)
- {
- Return (Zero)
- }
复制代码 所有有关_T_0的5111全部修改为所有有关_T_1的5111全部修改为7641、7502、7449、3407行的1088错都是在这个Method最后一个中括号{的前面插入4667、6609行的1099错是将下划线 _ 去掉,如下:- Name (WDG, Buffer (0x50)
- Method (WED, 1, NotSerialized)
复制代码 最后,37行4057 的错,搜索TNOT关键字,将下面的3个部分全部删除:- External (TNOT, MethodObj) // 0 Arguments
- External (\TNOT)
- If (CondRefOf (\TNOT))
- {
- TNOT ()
- }
复制代码 4、再次编译dsl文件- >iasl acpi_dsdt.dsl.bak
- Intel ACPI Component Architecture
- ASL Optimizing Compiler version 20100331 [Mar 31 2010]
- Copyright (c) 2000 - 2010 Intel Corporation
- Supports ACPI Specification Revision 4.0
- ASL Input: acpi_dsdt.dsl.bak - 11967 lines, 411721 bytes, 6164 keywords
- AML Output: acpi_dsdt.aml - 49451 bytes, 969 named objects, 5195 executable opco
- des
- Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 11 Optimizations
复制代码 如果没有任何报错就OK了,下面就可以添加功能了,本文的操作也就讲完了。另外本文的dsdt文件针对特定的机型,但是针对报错的修复方法你可以参考如果不行拿错误号google吧,另外DSDTSE这个软件里有修复dsdt的提示,如果这个软件的windows版打不开,论坛里还有解决方法,请自行搜索。
附上我修改前后的两个dsl文件,大家可以安装另一个开源软件WinMerge来比较这两个文件的不同点,这样你对本文的理解更容易些。
dsl.zip
(71.21 KB, 下载次数: 38)
文中没有提到的notepad++和WinMerge两个软件请自行google下载,就不提供附件了。
附上一个WinMerge比较两个文件的效果图,一个很快捷的比较方法:
最后转一帖绝情奶牛 - 从零开始轻松使用上DSDT
|
-
1
查看全部评分
-
|