MAC关于DSDT的修改及一些问题
本人 华硕主板 AMI 的BIOS 这几天爬文 学做 DSDT 看的我是头晕脑胀
一、如果3项都选择 会出现2个Errors 如果是3项都不选 0 Errors 通过实验 是HPET 补丁的问题 选的话有2个Errors不选无Errors 。而 Aliases补丁 和RTC补丁 选不选都没有错误出现 。
问:Aliases补丁 和RTC补丁 在修补的时候选还是不选?

二、我提取的DSDT中有 13个Warnings 如果 4个都选上 变为 7个 。于是开始尝试单个的选。local0 与 DGPT 选不选无影响。单独选WAK 为14个Warnings。单独选 MUTE 为6个Warnings
问:local0 与 DGPT 选与不选?

三、本人把不影响 错误 警告 之类的修复都选上了 最终0 Errors, 6 Warnings, 25 Remarks, 98 Optimizations
四、开始纠错。
1.Remarks 的修改
我的DSDT 中有25个类似的错误
dsdt.dsl 2254: Name (_T_0, Zero)
Remark 5110 - Use of compiler reserved name ^ (_T_0)
例子: If (LEqual (_T_0, 0x03))
{
SIT3 (PRM0, PRM1, PRM2)
}
Else
{
If (LEqual (_T_0, 0x04))
………………
}
将其中的 _T_0 都改为 T_0 即可 或者 将_T_0 改为 T0_0
好了 25个 Remarks 消失了。
2. Warnings 的修改
这个错误有很多种类。
我的DSDT 中 有 两种
第一种: dsdt.dsl 7668: Method (TGET, 1, NotSerialized)
Warning 1087 - ^ Not all control paths return a value (TGET)
第二种 dsdt.dsl 7827: Store (FGET (Local0), Local1)
Warning 1092 - ^ Called method may not always return a value
先来第一种:
例子:
Method (FGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWF1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWF2 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWF3 ())
}
}
有两种改法一种是:在末 加入 Return (Zero)
一种是在末尾加入
Else
{
Return(Package(0x02){0x00, 0x00})
}
也就是
Method (FGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWF1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWF2 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWF3 ())
}
Return (Zero)
}
或者
Method (FGET, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (^^SIOR.HWF1 ())
}
If (LEqual (Arg0, One))
{
Return (^^SIOR.HWF2 ())
}
If (LEqual (Arg0, 0x02))
{
Return (^^SIOR.HWF3 ())
}
Else
{
Return(Package(0x02){0x00, 0x00})
}
}
两种都能解决 Warnings 但是究竟用那个? 爬文中 例子都是 用第二中 由于最先看到的是第一种方法所以 两个都尝试了一下。
注意:这个时候出现了个有趣的事情。
6个Warnings 当修改了一个 上例 错误后 消失了2个Warnings 也就是说 就该了一个第一种 Warnings 随之就少了一个 第二种Warnings
望高手能解答一下这种现象。
第二种 Warnings 这个不会 爬文也没有找到,而其改了 3个 第一种Warnings 3个第二种Warnings 也随之消失了。 费解中ING
好了再写一些 我找到的 修改
11dsdt.dsl 1101: Add (Local0, 0x02)
Warning 1105 - ^ Result is not used, operator has no effect
采用把 (Local0, 0x02)改为 (Local0, 0x02, Local0)即可解决
dsdt.dsl 1193: And (CAPB, 0xFFFFFFFC)
Warning 1104 - ^ Result is not used, operator has no effect
这种问题就把“And (CAPB, 0xFFFFFFFC)"改为"And (CAPB, 0xFFFFFFFC,CAPB)"
dsdt.dsl 1238: Method (_OSC, 5, NotSerialized)
Warning 1076 - ^ Reserved method has too many arguments (_OSC requires 4)
这种问题就把_OSC后面的5改成4即可
(责任编辑:咖啡)更多相关资讯
- iOS4.3.3下出现WiFi连接问题(2011-05-13)
- Ubuntu 10.10将ed2k关联至aMule(2010-12-27)
- Mac OS X:PRAM 中存储的是什么内容?(2010-12-24)
- Macbook pro 声音增强的方法(2010-12-21)
- 解决usb鼠标与ps2键盘合用时开机键盘失效(2010-12-13)
- MAC系统分区安装盘标记为AF的解决方法(2010-11-24)
- Mac OS X:PRAM 中存储的是什么内容(2010-11-19)
疑难问题
更多>>-
PRAM 中存储的是什么
?PRAM 将某些系统和设备的设置存储在一个 Mac OS X 可以迅速访问的位置。每个设置在计算 ... [详细] - iOS4.3.3下出现WiFi连接问题
- Ubuntu 10.10将ed2k关联至aMule
- Mac OS X:PRAM 中存储的是什么内容?
- Macbook pro 声音增强的方法
- 解决usb鼠标与ps2键盘合用时开机键盘失效

firefox
Chrome
LinuxQQ
amule
aMSN
LinuxFetion
Xchat
openoffice
wine
Transmission
chmsee
Evince
Audacious
KMPlayer
Brasero
ibus输入法
Bluefish
Iptux
flash player
linux kernel


