查看: 44892|回复: 28

关于DSDT 的修改(一些错误的修改方法)及一些问题

[复制链接]

该用户从未签到

发表于 2010-11-15 13:12 | 显示全部楼层 |阅读模式
本人 华硕主板 AMI 的BIOS  这几天爬文 学做 DSDT  看的我是头晕脑胀


一、如果3项都选择 会出现2个Errors  如果是3项都不选 0 Errors  通过实验 是HPET 补丁的问题 选的话有2个Errors不选无Errors 。而 Aliases补丁 和RTC补丁 选不选都没有错误出现 。
问:Aliases补丁 和RTC补丁 在修补的时候选还是不选?

1.jpg

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

2.jpg

三、本人把不影响 错误 警告 之类的修复都选上了 最终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即可

小弟新学。望高手指点一下。
附上 DSDT.DSL文件

游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

发表于 2010-11-24 13:06 | 显示全部楼层
沙发?高兴啊。

该用户从未签到

发表于 2011-3-19 17:45 | 显示全部楼层
学习学习

该用户从未签到

发表于 2011-3-19 17:45 | 显示全部楼层
学习学习

该用户从未签到

发表于 2011-3-27 14:41 | 显示全部楼层
建议楼主使用在MAC 系统下使用.IDSDT这个工具.

该用户从未签到

发表于 2011-4-20 21:03 | 显示全部楼层
好东西.我的还是没有弄出来,看看你的,借鉴一下

该用户从未签到

发表于 2011-4-28 10:51 | 显示全部楼层
正好需要,来看看了

该用户从未签到

发表于 2011-5-21 18:47 | 显示全部楼层
学习一下

该用户从未签到

发表于 2011-8-24 00:36 | 显示全部楼层

戴尔 dimension 5100 的dsdt 修补

本帖最后由 jxhscb 于 2011-8-24 00:38 编辑

戴尔 dimension 5100  的dsdt 修补情况,放进去启动不了呀。
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20081204 [Dec  4 2008]
Copyright (C) 2000 - 2008 Intel Corporation
Supports ACPI Specification Revision 3.0a
dsdt.dsl   486:                 Method (_S5D, 0, NotSerialized)
Warning  1098 -      Unknown reserved name ^  (_S5D)
dsdt.dsl   553:                 Method (_S5D, 0, NotSerialized)
Warning  1098 -      Unknown reserved name ^  (_S5D)
dsdt.dsl   629:                 Method (_S5D, 0, NotSerialized)
Warning  1098 -      Unknown reserved name ^  (_S5D)
dsdt.dsl   705:                 Method (_S5D, 0, NotSerialized)
Warning  1098 -      Unknown reserved name ^  (_S5D)
dsdt.dsl   781:                 Method (_S5D, 0, NotSerialized)
Warning  1098 -      Unknown reserved name ^  (_S5D)
dsdt.dsl   857:                 Method (_S5D, 0, NotSerialized)
Warning  1098 -      Unknown reserved name ^  (_S5D)
dsdt.dsl  1410:         Name (PIC3, Package (0x00) {})
Remark   5071 -                                 ^ Effective AML package length is zero
dsdt.dsl  1411:         Name (API3, Package (0x00) {})
Remark   5071 -                                 ^ Effective AML package length is zero
dsdt.dsl  1632:         Name (PIC5, Package (0x00) {})
Remark   5071 -                                 ^ Effective AML package length is zero
dsdt.dsl  1633:         Name (API5, Package (0x00) {})
Remark   5071 -                                 ^ Effective AML package length is zero
dsdt.dsl  1638:         Name (PIC6, Package (0x00) {})
Remark   5071 -                                 ^ Effective AML package length is zero
dsdt.dsl  1639:         Name (API6, Package (0x00) {})
Remark   5071 -                                 ^ Effective AML package length is zero
ASL Input:  dsdt.dsl - 4256 lines, 130708 bytes, 1166 keywords
AML Output: dsdt.aml - 11611 bytes, 470 named objects, 696 executable opcodes
Compilation complete. 0 Errors, 6 Warnings, 6 Remarks, 36 Optimizations

该用户从未签到

发表于 2011-9-27 15:41 | 显示全部楼层
同是dell 5100.也启动不了,Remark   5071 -                ^ Effective AML package length is zero   解决了吗?

该用户从未签到

发表于 2011-10-13 13:11 | 显示全部楼层
我的也有好多错误啊

该用户从未签到

发表于 2011-10-18 21:41 | 显示全部楼层
谢谢楼主分享。
头像被屏蔽

该用户从未签到

发表于 2011-10-23 18:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

该用户从未签到

发表于 2011-12-4 23:34 | 显示全部楼层
多多学习来了

该用户从未签到

发表于 2011-12-21 21:42 | 显示全部楼层
学习

该用户从未签到

发表于 2012-1-20 18:50 | 显示全部楼层
kan kan 3x

该用户从未签到

发表于 2012-4-23 22:46 | 显示全部楼层
太有用了,感谢

该用户从未签到

发表于 2012-6-3 22:19 | 显示全部楼层
look 一下,嘿嘿,学习了!

该用户从未签到

发表于 2013-3-26 16:53 | 显示全部楼层
ssdt怎么改?

该用户从未签到

发表于 2013-10-7 11:58 | 显示全部楼层
多谢指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

意见反馈|Archiver|手机版|小黑屋|本友会 ( 北京市公安局海淀分局网监中心备案编号:11010802020118  

GMT+8, 2022-11-30 21:16 , Processed in 0.082813 second(s), 16 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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