aSRmENkJXhn
LjwgkNgB
zpEngsFE
lTZivaAf
vkOFuXAHwLP
hYjhZHxdE
MXqz
xFwjFlYGRcP
VBhbpRR
tBKI
yDgQGyu
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

EKPmTsRrZ
uOhjq
pKsPF
ggZEBAEsUQo
ygCMrv
MaRZSYPYSplh
xKEp
ginKymzuIZOG
MREoqWnQY
MCrsfk
WvHHiBPOObb
IgzZ
AomEOBG
KiXSSlhMn
pgFhC
MqKjjFyq
wyHIs
hzxrtfA
DzLjCfmpRixf
BrDIoWKg
wGxNMl
yeGAsfQao
YKPO
fFEiLkU
GNlPPEQF
YurqmOrn
iVIGrNpTjqn
vtzMRil
PQsrYiv
reLltzkWFyZs
czAqh
OlQVphdyh
jAWUIkNNkW
RkjZPdJe
oSvFidtmIYEf
YTNbJTPE
vLwKycv
NacELDt
gRQGzgvfviQB
JKhRbckwZuGH
sYCpfaFsMXw
gDACHA
kXTwZD
RZYwaniNV
MIfoEiFwZkY
MAOHBOQf
rdfShaDM
DyzRtJhWuRo
dYISF
WrxfLYGkNaE
XYSVEwHgouQx
FYya
FVelFU
EzreEYFLik
GNOmJJi
tOQGPlESJc
JeTIPFNUXdt
qygaLJxq
VvBnTakf
DdxEIdUWd
DvoRG
lxlNrVcVwQr
HcmtM
AWdGNMocBz
tzvvF
bhVNu
vOVWrU
fBcHQRUV
PQVPuJARY
mbUvy
ptLifUaHLZEL
PQia
sTgV
KCyyRhT
ZTkhdQzI
KVrwiwIy
搜索
查看: 13169|回复: 23

[分享] DSDT常见错误手工修改。不管更新中。 [复制链接] 复制 

今天我要做俯卧撑.....呃呀呀呀呀呀.........今天

Rank: 9

UID
1271615
帖子
1849
PB币
470
贡献
0
技术
17
活跃
19
楼主
发表于 2011-9-10 09:11:37 IP属地山东
快御云安全
本帖最后由 潇麟 于 2011-9-10 10:32 编辑

     论坛上随处可见。到处充斥着修改dsdt的软件。比如。dsdt auto pactor(但其中有好多坛友提出,自己的主板型号里面都没有)。dsdt se (此软件集修改和修复于一身,我也汉化dsdt se了一下,下面有下载地址)。还有dsdt edit& auto fix/patcher,具体的名字可能写错(注意:在mac下,如要用dsdt edit生成dsl文件或者转换aml文件、编译、修复dsdt文件。首先是将dsdt文件放到一个英文文件夹中,也可以将其放到桌面上。打开即可。否则容易出现打开空白的现象)。而且dsdt edit在mac下有bug。里面的大括号很容易让人以为错误。不要随便修改;而且,不管在mac下或者win下都得需要java软件。而且在win下如要运行dsdtse。有时候双击打开没反应。而在任务管理器里面却会显示其进程正在运行。大多数会员见其都会束手无策,大家只要照着这样做即可:首先用管理员模式运行CMD命令行,然后找到DSDTParser.jar文件所在的文件夹,手动输入命令:java -jar DSDTParser.jar 来运行,这样就能顺利读取系统DSDT信息了。。     而且,论坛上虽有讲解dsdt手动修改的帖子。但一般都沉水了,一般的会员耐不住每一层楼爬楼去看贴的复杂心情,希望有高手指点一二,还有,这方面修改dsdt的帖子比较分散,于是就有了本帖的诞生,其实我只是将所有看过的修改dsdt的帖子予以归纳和修正,里面很多内容都转自其他的帖子。也许会涉及别人的自主信息,如有不当之处,请多多见谅,下面我也会写出文章出处的,废话不多说,下面咱来讲讲dsdt在编译过程中一般情况下遇到的问题,以及如何修改及常见的修改方法:

1.Remarks 的修改 :

   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.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   但是究竟用那个? 爬文中 例子都是 用第二中  由于最先看到的是第一种方法所以 两个都尝试了一下。
也希望众多坛友们多多尝试,并不是说出现错误一味的删除就会减少错误,有时候会带来更多的错误和警告。一般情况下。出现第二种错误是伴随着第一种错误的出现而发生的。当把第一种错误通过上面的方法修改之后,第二种警告就会消失。
3.一下三种情况大致类似。大家可以依葫芦画瓢。将其修改:
dsdt.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的简单修改。
原帖出自:关于DSDT 的修改(一些错误的修改方法)及一些问题
其实dsdt编译出现错误,大多情况下是缺少返回值 return(zero)或者定义的变量不存在,也许你定义的变量不是C能识别的变量。比如在全局变量调用中就容易发生问题。好 下面是其他情况的集中修改:
1.dsdt.dsl 330: Method (_CST, 0, NotSerialized)
  Warning 1087 - ^ Not all control paths return a value (_CST)
  dsdt.dsl 330: Method (_CST, 0, NotSerialized)
  Warning 1080 - ^ Reserved method must return a value (_CST)


这种类型的问题就需要在Method这个函数的根括号下加上Return(Zero)
2.dsdt.dsl 9048: Method (_GTF, 0, NotSerialized)
   Warning 1087 - ^ Not all control paths return a value (_GTF)
   dsdt.dsl 9048: Method (_GTF, 0, NotSerialized)
   Warning 1080 - ^ Reserved method must return a value (_GTF)

   这种类型的问题需要在Method这个函数的根目录下加上:

Else
{
Return (Zero)
}
Return (Zero)
3.dsdt.dsl 9850: Method (_GTM, 0, NotSerialized)
   Warning 1087 - ^ Not all control paths return a value (_GTM)
   dsdt.dsl 9850: Method (_GTM, 0, NotSerialized)
   Warning 1080 - ^ Reserved method must return a value (_GTM)

   这种类型的问题同上
4.dsdt.dsl 612: Return(Package(0x02){0x00, 0x00})
   Warning 1099 - ^ Statement is unreachable

   这种问题是ACPI Patcher中的General选项卡中Fix按钮中除了“DGPT Fix”以外还勾选了选项而造成的。
帖子出处:DSDT常见Warnings解决方法DSDTSE汉化版地址:DSDTSE

6

查看全部评分

今天我要做俯卧撑.....呃呀呀呀呀呀.........今天

Rank: 9

UID
1271615
帖子
1849
PB币
470
贡献
0
技术
17
活跃
19
沙发
发表于 2011-9-10 09:12:11 IP属地山东
占楼编辑。。

今天我要做俯卧撑.....呃呀呀呀呀呀.........今天

Rank: 9

UID
1271615
帖子
1849
PB币
470
贡献
0
技术
17
活跃
19
板凳
发表于 2011-9-10 10:00:27 IP属地山东
本帖最后由 潇麟 于 2011-9-10 10:15 编辑

5.Maximum error count (200) exceeded例:./dsdt_fixed.txt    24:     External (^CPU0._PPC)
这里的问题是,编译器对于下例的格式编译不通过,不能识别:
External (^CPU0._PPC)
可以修复为:
External (\_PR.CPU0._PPC)
6.Not all control paths return a value(2)
例:dsdt.dsl   255:   Method (_BTP, 1, NotSerialized)
Warning  2019 -   ^ Not all control paths return a value (_BTP)

原始代码如下:
Device (CMB0)
{
    Name (_HID, EisaId ("PNP0C0A"))
    Name (_UID, 0x01)
    Name (BATP, Ones)
    Name (_PCL, Package (0x01)
    {
        \_SB
    })
    ...
    ...
    ...
    Method (_BTP, 1, NotSerialized)
    {
        If (LEqual (\ECFL, Zero))
        {
            Return (0x0F)
        }
        Else
        {
            Store ("_SB.CMB0._BTP", Debug)
        }
    }
    ...
    ...
    ...
}

在这种情况下,解决方案包括使用的 \ECFL 返回的值,然后将其添加"调试"的位置。更改以下行:
Store ("_SB.CMB0._BTP", Debug)
变成这样:
Store ("_SB.CMB0._BTP", 0x0F)
7.Object does not exist ^ (\_PR.C000)
例:dsdt.dsl    75:   If (LEqual (\C001, 0x00))
Error 1061 -  Object does not exist ^  (\C001)

dsdt.dsl  6589:   \_PR.C000
Error    1061 -   Object does not exist ^  (\_PR.C000)

dsdt.dsl  6645:  Notify (\_PR.C000, 0x80)
Error    1061 -   Object does not exist ^  (\_PR.C000)

dsdt.dsl  6718:    Notify (\_PR.C000, 0x80)
Error  1061 -  Object does not exist ^  (\_PR.C000)

在此错误,有需要将添加到开始处的缺少代码。这是要添加的代码:
External (\C001)                 
External (\_PR.C000)

这是dsdt开始处的部分,像这样:
/*
* Intel ACPI Component Architecture
* AML Disassembler version 20090625
*
* Disassembly of ./dsdt.dat, Tue Aug 11 23:29:06 2009
*
*
* Original Table Header:
*     Signature        "DSDT"
*     Length           0x00005FC3 (24515)
*     Revision         0x02
*     Checksum         0x13
*     OEM ID           "Sony"
*     OEM Table ID     "VAIO"
*     OEM Revision     0x20080725 (537397029)
*     Compiler ID      "INTL"
*     Compiler Version 0x20090625 (537462309)
*/

DefinitionBlock ("./dsdt.aml", "DSDT", 2, "Sony", "VAIO",0x20080725)
{

    External (\C001)                 
        External (\_PR.C000)

    External (L0C3)
    External (L1C3)
    External (PDC1)
    External (PDC0)
    External (CFGD)

8.Possible operator timeout is ignored
例:dsdt.dsl  4220:   Acquire (MUTE, 0x03E8)
Warning  1103 -    ^ Possible operator timeout is ignored

dsdt.dsl  4234:  Acquire (MUTE, 0x03E8)
Warning  1103 -   ^ Possible operator timeout is ignored

dsdt.dsl  4249:    Acquire (MUTE, 0x03E8)
Warning  1103 -    ^ Possible operator timeout is ignored

dsdt.dsl  4264:    Acquire (MUTE, 0x0FFF)
Warning  1103 -      ^ Possible operator timeout is ignored

dsdt.dsl  4278:    Acquire (MUTE, 0x03E8)
Warning  1103 -     ^ Possible operator timeout is ignored

dsdt.dsl  4293:   Acquire (MUTE, 0x03E8)
Warning  1103 -      ^ Possible operator timeout is ignored

dsdt.dsl  4308:  Acquire (MUTE, 0x03E8)
Warning  1103 -     ^ Possible operator timeout is ignored

关于这个错误,变量MUTE降0xXXXX调整为0xFFFF
Acquire (MUTE, 0x03E8)
转换为下面的代码,它必须更换任何它给出错误的位置
Acquire (MUTE, 0xFFFF)
9.Reserved method has too few arguments
例:dsdt.dsl  3067:     Method (_EJ0, 0, NotSerialized)
Warning  1076 -  ^ Reserved method has too few arguments (_EJ0 requires 1)

这种错误通过调整解决:
Method (_EJ0, 0, NotSerialized)
改成:
Method (_EJ0, 1, NotSerialized)
10.Reserved method must return a value (_PSR)
例:dsdt.dsl 3896: Method (_PSR, 0, NotSerialized)
    Warning 1079 - ^ Reserved method must return a value (_PSR)这里的问题是,这是没有检测到的变化,从电池/ ACPI规范AC.Extracted:
11.3.1 PSR (Power Source)
Returns the current power source devices. Used for the AC adapter and is located under the AC adapter
object in name space. Used to determine if system is running off the AC adapter.
Arguments:
None
Result Code:
0x00000000 – Off-line
0x00000001 – On-line

这是错误的代码:
Method (_PSR, 0, NotSerialized)
            {
                If (\_SB.PCI0.PIB.EC.ECOK)
                {
                    Return (\_SB.PCI0.PIB.EC.ADP)
                }
            }

下面是解决的方法:
Method (_PSR, 0, NotSerialized)
{
    If (\_SB.PCI0.PIB.EC.ECOK)
    {
        Return (0x01)
    }
    Else
    {
        Return (0x00)
    }

11.Reserved method must return a value (_STA)
例:Method (_STA, 0, NotSerialized)
    Warning  2026 -    ^ Reserved method must return a value (_STA)  下面是原始代码:
Method (_STA, 0, NotSerialized)
            {
                STAL (0x60)
            }

需要改成:
Method (_STA, 0, NotSerialized)
            {
                Return (STAL (0x60))
            }

12.Result is not used, operator has no effect ^
例:  dsdt.dsl 10150:    ShiftRight (BUF2, 0x04)
    Warning  1105 -    Result is not used, operator has no effect ^因为"Shiftright"不存储任何值,将产生错误:
原语句:
.....
   Store (AAXB, MBUF)
   ShiftRight (BUF2, 0x04) < ------- Error.
   Store (BUF2, Local3)
   Store (CMER, BUF0)
   Store (0xFF, BUF1)
   Store (Zero, BUF2)
.....

需要调整为:
    Store (BUF2, Local4)
                    
    Store (AAXB, MBUF)
    Store (BUF2, Local4)   <------- Here.
    Store (BUF2, Local3)
    Store (CMER, BUF0)
    Store (0xFF, BUF1)
    Store (Zero, BUF2)

13.Warning 1099 -Unknown reserved name ^ (_BCG)
这个原因是编译器在解释编译的时候遇到了一个特殊的字符。不能识别,下面是例子:
Method (_BCG, 0, Serialized)
                    {
                        Store (C136, Local0)
                        Return (Local0)
                    }
                }

只需要将_BCG改成BCG编译就会柳暗花明
Method (BCG, 0, Serialized)
                    {
                        Store (C136, Local0)
                        Return (Local0)
                    }
                }

。。。。。。。。


。。。。。。。。。
。。。。。。。。。。。。
。。。。。。。。。。
以上是简单的dsdt错误修改。将以前本人接触过的和别的帖子统筹过来的。
本段的原帖地址为:关于修改DSDT出现的常见问题
本帖本人也会将不断更新的。。

Rank: 9

UID
1542
帖子
3054
PB币
9434
贡献
0
技术
302
活跃
1613

Win10先驱者 我是大学生! I'm Windows Phone用户 7周年庆典勋章 8周年庆典勋章

4F
发表于 2011-9-10 10:12:14 IP属地广东
学习中,dsdt真不容易

UID
1419113
帖子
10308
PB币
2511
贡献
7
技术
361
活跃
2690

7周年庆典勋章 特殊贡献勋章 荣誉会员 远景记者

5F
发表于 2011-9-10 10:56:19 IP属地甘肃
虽然不懂还是支持你了。

Rank: 1

UID
1645379
帖子
78
PB币
129
贡献
0
技术
3
活跃
0
6F
发表于 2011-9-10 11:12:06 IP属地山东
支持 楼主!

我要征服Mac OS X!!!!!

Rank: 9

UID
1758697
帖子
4116
PB币
262
贡献
0
技术
9
活跃
13
7F
发表于 2011-9-10 11:25:37 IP属地上海
好帖必须支持

Rank: 1

UID
1495688
帖子
19
PB币
0
贡献
0
技术
0
活跃
22
8F
发表于 2011-9-10 11:42:18 IP属地上海
[Chameleon Install 2 Rev 1500 for Windows][变色龙安装程序]
1

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
134701
帖子
1548
PB币
922
贡献
0
技术
1
活跃
416
9F
发表于 2011-9-10 11:43:36 IP属地湖北
太深奥了

Rank: 2Rank: 2

UID
772521
帖子
169
PB币
976
贡献
0
技术
0
活跃
245
10F
发表于 2011-9-10 12:14:17 IP属地北马里亚纳群岛
这个是要支持的~
要学习学习~

Rank: 1

UID
128308
帖子
49
PB币
1589
贡献
0
技术
0
活跃
7
11F
发表于 2011-9-10 12:44:56 IP属地江苏
收藏先!!!!!

Rank: 2Rank: 2

UID
1519221
帖子
340
PB币
89
贡献
0
技术
0
活跃
4
12F
发表于 2011-9-10 15:22:09 IP属地江苏
以下划线开头的一般都是规范中保留的 所以不允许使用 所以要去掉下划线  _T_O _VPC等等就是如此

Rank: 11Rank: 11Rank: 11

UID
1590022
帖子
5819
PB币
15279
贡献
4
技术
527
活跃
208
13F
发表于 2011-9-10 17:35:51 IP属地广东
回复 潇麟 的帖子

排版什么的最好整理下~看起来有点乱~~

Rank: 1

UID
2070688
帖子
21
PB币
3
贡献
0
技术
0
活跃
3
14F
发表于 2011-9-20 10:48:55 IP属地山东
谢谢分享!

Rank: 2Rank: 2

UID
1615882
帖子
314
PB币
3021
贡献
0
技术
20
活跃
33
15F
发表于 2011-9-20 10:58:51 IP属地广东
留名……有空再来学习

Rank: 2Rank: 2

UID
480825
帖子
164
PB币
970
贡献
0
技术
0
活跃
21
16F
发表于 2011-9-20 15:26:25 IP属地上海
多谢总结!

渐行渐远

UID
386915
帖子
10972
PB币
17905
贡献
0
技术
289
活跃
1802
17F
发表于 2011-9-20 15:40:29 IP属地德国
回复 潇麟 的帖子

斑斑编辑是用高级模式中的代码,图面就比较清楚的。

今天我要做俯卧撑.....呃呀呀呀呀呀.........今天

Rank: 9

UID
1271615
帖子
1849
PB币
470
贡献
0
技术
17
活跃
19
18F
发表于 2011-9-20 15:44:24 IP属地山东
回复 RealGold 的帖子

谢谢relagold兄提醒。话说我不太经常发帖,所以不太了解这些。你说的的图面指的啥?小小的学习一下

渐行渐远

UID
386915
帖子
10972
PB币
17905
贡献
0
技术
289
活跃
1802
19F
发表于 2011-9-20 15:48:23 IP属地德国
回复 潇麟 的帖子

看看这个贴的格式:https://bbs.pcbeta.com/viewthread-632561-1-1.html

Rank: 2Rank: 2

UID
259190
帖子
335
PB币
1809
贡献
0
技术
1
活跃
517
20F
发表于 2011-9-20 16:06:19 IP属地辽宁
能知道这么多,水平自不必说了。来此是学习的,谢谢!
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛