- 积分
- 5666
- 最后登录
- 2016-2-2
- 精华
- 0
- 阅读权限
- 100
- 主题
- 113
- UID
- 972768
- 帖子
- 6665
- PB币
- 3533
- 威望
- 500
- 贡献
- 0
- 技术
- 59
- 活跃
- 4
潜水
- UID
- 972768
- 帖子
- 6665
- PB币
- 3533
- 贡献
- 0
- 技术
- 59
- 活跃
- 4
|
楼主
发表于 2010-9-20 20:00:33
IP属地江苏
本帖最后由 weizh126 于 2010-9-20 20:02 编辑
看到论坛里面有个HP540的dsdt 下来看了看 近50个错误 真多。。。
仔细看了下 其实这个dsdt是由于本身的一些bug造成的 比如多了一个} 少了一个) 还有几个语法错误
所以给各位想自己修改dsdt的童鞋几个建议 尤其是由于本身DSDT不规范造成无法编译的童鞋
由于本文只是介绍在win下修改有bug的dsdt 所以其他功能加入不在讨论之列
1.个人建议用iasl -g提取dsdt 至少我觉得dsdt书写比较工整 不必自己去换行之类的机械运动。。。
2.建议先不修改object doesn't exist这种错误 除非这个错误很少 只有一两个object doesn't exist的话 可以用external声明下 mac版DSDTSE中有解决方法的 大量的这种错误应该就是由于少了)或者}之类的造成 所以建议先修改如下之类的error
- dcpdsdt.dsl 16389: })
- Error 4096 - parse error ^
复制代码
这个就是多了个括号的问题
3.win下用UltraEdit这个编辑器 选择view->view as->C#或者其他 这个主要是为了方便修改 有过编程经验的应该就知道
4.对于一些语法错误 不知道为何的 可以参看ACPI spec 里面解释的很清楚 这个就不罗嗦了 举个例子
- dcpdsdt.dsl 16386: \_TZ.C39F (If (LEqual (Local0, 0x03))
- Error 4096 - ^ parse error, expecting `','
- ' or `')''
复制代码
其中的16386就是行数 定位这里 可以看到
- If (LEqual (Local0, 0x07))
- {
- Acquire (\_TZ.C238, 0xFFFF)
- Or (\_TZ.C239, 0x01, \_TZ.C239)
- Release (\_TZ.C238)
- \_TZ.C39F (If (LEqual (Local0, 0x03))
- {
- C1BA (0x87)
- })
- }
复制代码
这个语法错误很明显 这也是既不符合规范的 所以修改成
- If (LEqual (Local0, 0x07))
- {
- Acquire (\_TZ.C238, 0xFFFF)
- Or (\_TZ.C239, 0x01, \_TZ.C239)
- Release (\_TZ.C238)
- If (LEqual (Local0, 0x03))
- {
- \_TZ.C39F ( C1BA (0x87))
- }
- }
复制代码
5.用iasl把dsl编译成aml 顺便查看错误个数和行数
6.iasl可能大部分人还不会用 稍微说下 比如iasl放在E盘根目录
管理员运行CMD 然后定位到E盘 输入iasl 下面的就是一大堆可以用的命令 如图
常用的命令有 1)iasl -g 提取dsdt.dsl
2)iasl dsdt.dsl 把dsl编译成aml
3)iasl -d dsdt.aml 把aml编译成dsl
附件里面有 ACPIspec iasl以及修改前后的dsdt
说明下 modified为已经修改好的dsdt 有兴趣的童鞋可以对比下修改前后的dsdt文件 另外由于dsdt中我删去了多的一个} 不太确定是否就是这个 如果不是的话 删掉另外一个就是的了
p.s. 那个HP540用户 你实在是太懒了 给个链接给你 你却不理睬。。。
Desktop.rar
(1.53 MB, 下载次数: 282)
|
-
1
查看全部评分
-
|