DSDT与SSDT编译错误解决方案合集汇总

1.错误提示:syntax error, unexped PARSEOP_ZERO ▼

解决方案
Zero全部删除

2.错误提示:syntax error, unexped PARSEOP_ARG0 ▼

解决方案
直接删除Arg0

3.错误提示: Min/Max/Length/Gran are all zero,but no resource tag ▼

解决方案
修改前
IO(Decode16,
0×0000,
0×0000,
0×00,
0×00,

修改后
IO(Decode16,
0×0000,
0×0000,
0×00,
0×01,

4.错误提示:syntax error, unexped PARSEOP_PACKAGE ▼

解决方案
找到错误行,把错误行下方代码所有类似的代码全部删除
Package(0×06)
{
0×80000000,
0×80000000,
0×80000000,
0×80000000,
0×80000000,
0×80000000,
}

5.错误提示:syntax error, unexped PARSEOP_NAMESEG,expecting’(’ ▼

解决方案
找到如下代码删除
MUID
REVI
SFNC
XRG0

6.错误提示:Name already exists in scope(IGDS) ▼

解决方案
删除上方带FieldUnitObj的行代码
例如:External (DIDX, FieldUnitObj)整行删除即可

7.错误提示 ▼

Object does not exist (_SB.PCI0.LPCB.EC0.BPR)
Object does not exist (_PR.CPU0._TSS)
Object does not exist (_PR.CPU0._PTC)
Object does not exist (_SB.PCI0.LPCB.H_EC.GTVR)
Object does not exist (_SB.PCI0.GFX0._DSM)

解决方案
找到最上方对应的位置添加如下代码(注意观察需要修改的地方)
External (SB.PCI0.LPCB.EC0.BPR, IntObj)或External (SB.PCI0.LPCB.EC0.BPR, UnknownObj)
External (PR.CPU0.TSS, IntObj) External (_PR.CPU0.PTC, UnknownObj) External (_SB.PCI0.LPCB.H_EC.GTVR, IntObj)
External (SB.PCI0.GFX0._DSM, IntObj)

8.错误提示:Not a control method, cannot invoke (W008 is a BufferField) ▼

错误对应行
Store (^^PCI0.LPCB.EC.FBF2, W008 (Store (0x03, ^^PCI0.LPCB.EC.FDAT), Store (0xC0, ^^PCI0.LPCB.EC.FCMD)))

解决方案,格式问题,修改为如下方式
Store (^^PCI0.LPCB.EC.FBF2, W008)
Store (0x03, ^^PCI0.LPCB.EC.FDAT)
Store (0xC0, ^^PCI0.LPCB.EC.FCMD)

9.错误提示:153, 6126, syntax error, unexpected PARSEOP_NAME ▼

错误对应行
One
Name (SS4, One)

解决方案将One注释掉(就是删除)

10.错误提示:Store (^^PCI0.LPCB.EC0.MCUR, Local5) ▼

错误对应行:38235, 6085, Object not found or not accessible from scope (^^PCI0.LPCB.EC0.MCUR)

解决方案,上方添加
External(_SB.PCI0.LPCB.EC0.MCUR, MethodObj)

请注意:如果是在修改电池补丁的时候遇到,请使用以下补丁来解决(_BIF、DCP0、AAAJ、AAAK请修改为你自己错误代码对应的字段)

into method label _BIF code_regex (\^\^PCI0.LPCB.EC0.DCP0, replaceall_matched begin (B1B2(^^PCI0.LPCB.EC0.AAAJ,^^PCI0.LPCB.EC0.AAAK), end;

11.错误提示:15811, 6126, syntax error, unexpected '}' ▼

错误对应行:}

解决方案,找到上方的Arg0直接//注释掉就可以,如果注释后有更多的错误,建议在反编译的时候连同ssdt也一起编译,这样错误会更加的少。

12.错误提示:2085 Warning ResourceTag larger than Field (Tag: 64 bits, Field: 32 bits) ▼

所在代码: CreateDWordField (BUF0, _SB.PCI0._Y0F._LEN, MSLN)

修改方法:将 CreateDWordField修改为 CreateQWordField

13.错误提示:3111 Warning Result is not used, possible operator timeout will be missed ▼

所在代码:Acquire (MUT0, 0x0FFF)

修改方法:将0x0FFF改为0xFFFF

提醒:错误提示Possible operator timeout is ignored,也这样修改。

14.错误提示: 4754 Remark Use of compiler reserved name (_T_0) ▼

所在代码: Name (_T_0, Zero)

修改方法:将_T前边的短横删除,或者改为T0_0,当然,如果后边是其他数2,3等等,那么相应改为T2_2,T3_3即可

提醒:这种错误要注意,一般仅仅提示Name行所在的此种错误但是这个代码段中很多这样的错误,所以修改这种错误的时候,修改完Name行之后,这个代码段中的下边的所有此类错误要全部修改,然后再根据提示修改下一个代码段,否则你会吃惊的发现突然怎么出现这么多错误。这样比较简便而已。修改完之后,重新编译一下看看还有没有。

15.错误提示:10035 Warning Not all control paths return a value (WQAA) ▼

所在代码:Method (WQAA, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (T2D0, Local0)
Return (Local0)
}
……
……
If (LEqual (Arg0, 0x21))
{
Store (TDBB, Local0)
Return (Local0)
}
}

修改方法:在此代码段的倒数第二个大括号之后定位指针,然后按回车键,然后输入Return (Zero),效果如下:
Method (WQAA, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (T2D0, Local0)
Return (Local0)
}
……
……
If (LEqual (Arg0, 0x21))
{
Store (TDBB, Local0)
Return (Local0)
}
Return (Zero)
}

提醒:诸如此种错误提示,都是在代码段的最后一部分像上边修改方法一样,添加这样一个代码即可解决。

16.错误提示:11624 Error _HID suffix must be all hex digits (GH) ▼

所在代码:Name (_HID, "ABCDEFGH")

修改方法:将GH改为01即可。

17.错误提示:17 Error Name already exists in scope (\TNOT) ▼

所在代码:External (\TNOT)

修改方法:删除此行。

18.错误提示:7297 Warning Result is not used, operator has no effect  ▼

所在代码:Add (Local0, 0x02)

修改方法:此处修改为Add (Local0, 0x02,Local0)即可。

19.错误提示:
8866 Warning Not all control paths return a value (_CRS)
8866 Warning Reserved method must return a value (Buffer required for _CRS) ▼

所在代码:Method (_CRS, 0, NotSerialized)
{
If (IGDS)
{
Return (CRS)
}
}
}
}

修改方法:
前后都添加代码。
Method (RES, 0, NotSerialized)
{
Return (Zero)
}
Method (_CRS, 0, NotSerialized)
{
If (IGDS)
{
Return (CRS)
}
Else
{
Return (RES)
}
}
}
}

20.错误提示:3588 Warning ResourceTag larger than Field (Tag: 16 bits, Field: 8 bits) ▼

所在代码:CreateByteField (BUF0, _SB.PCI0.LPCB.N393.LPT1._CRS._Y16._MIN, IOL0)

修改方法:将CreateByteField改为CreateWordField

21.错误提示:3421 Warning ResourceTag larger than Field (Tag: 64 bits, Field: 32 bits) ▼

所在代码:CreateDWordField (BUF0, _SB.PCI0._Y0F._LEN, MSLN)

修改方法:将CreateDWordField 改为CreateQWordField。

22.错误提示:11875 Warning Unknown reserved name (_VPC) ▼


所在代码: Name (_VPC, Zero)

修改方法:搜索VPC,我们看到大部分的VPC之前都没有短横。所以删除所有搜索到的带短横的VPC之前的短横。

提醒:看到VPC,就想到联想电脑,VPC即Virtual power control.
附:如果错误是Unknown reserved name (_CFG),指向 Method (_CFG, 0, NotSerialized),那么删除CFG之前的短横即可,因为这个一般只有一个。

23.错误提示:not a control method : PS0X()  ▼

修改:
1.直接删除 PS0X()
2.修改为 Return (PS0X)

24.错误提示: warning: ResourceTag larger than Field(Tag:64its,Field:32bits)
146 Remark Effective AML package length is zero ▼

所在代码: Package (0x00) {},

修改方法:将 Package (0x00) {} 修改成 Package (0xFF) {}

25.错误提示:40 Warning _REG has no corresponding Operation Region ▼

所在代码:Method (_REG, 2, NotSerialized)

修改方法:删除_REG之前的短横即可

26.错误提示:220 Error syntax error, unexpected PARSEOP_PACKAGE ▼


所在代码:Package (0x06)
{
0x80000000,
0x80000000,
0x80000000,
0x80000000,
0x80000000,
0x80000000
}
Package (0x06)
{
0x80000000,
0x80000000,
0x80000000,
0x80000000,
0x80000000,
0x80000000
}
……
……
修改方法:我们看到有很多这样的Package,那么我们删除标注行之后一直到下一个NAME之前的
Package (0x06)
{
0x000004B0,
0x00003848,
0x0000000A,
0x0000000A,
0x00000C00,
0x00000C00
}
提醒:删除之后,出现另一个同样错误,所以一共删除两处

27.错误提示: 84 Warning Reserved method should not return a value (_PDC) ▼


所在代码:Return (Local0)

修改方法:我们追根求源,找到这段代码
Method (_PDC, 1, NotSerialized)
{
Store (CPPC, _PR.CPU0._PPC)
Store (CPDC (Arg0), Local0)
GCAP (Local0)
Return (Local0)
}
我们发现删除Method (_PDC, 1, NotSerialized)中PDC前边的短横即可轻易解决问题。

提醒:类似的错误提示都这样处理,观察上下文,跟修改语病一样。

修正:此处经过lihuanzi2007的指导,我仔查阅了相关修改,发现这样修改确实不妥,做出以下修正
将Return (Local0)改为Return (Zero)

28.错误提示: 63 Warning Statement is unreachable ▼

所在代码:0x09

修改方法:追根溯源,代码段:
Method (_PRW, 0, NotSerialized)
{
Return (GPRW)
0x09
0x04
}
我们删除下边两行即可解决问题。
0x09
0x04

29.错误提示:67 Error Object does not exist (ON) ▼

所在代码: _ON ()

修改方法:删除此行即可。(错误)

提醒:大部分此类的错误都这样解决。例外在第七条。

修正:此处修改方法有误,应如此修改:
既然不存在这个项,我们就在SSDT的开头添加。添加的代码样式:External (ON)
我们看一下SSDT开头的格式:
DefinitionBlock ("SSDT_7.aml", "SSDT", 1, "OptRef", "OptTabl", 0x00001000)
{
External (DID8)
External (NXD8)
……
……
那我们这样修改:
DefinitionBlock ("SSDT_7.aml", "SSDT", 1, "OptRef", "OptTabl", 0x00001000)
{
External (ON)
External (DID8)
……

30.错误提示:156 Error Object does not exist (_SB.PCI0.GFX0.HDSM) ▼

所在代码: Return (_SB.PCI0.GFX0.HDSM (Arg0, Arg1, Arg2, Arg3))

修改方法:删除“.HDSM (Arg0, Arg1, Arg2, Arg3)”

31. 4467, 6126, syntax error, unexpected PARSEOP_IF, expecting PARSEOP_CLOSE_PAREN or ','

错误对应处:Store (Zero, ECRW (If (PM0H)

原因:主要是PM6H和PM0H的代码混在一起了,这是常见的问题

原始

                If (LEqual (PM6H, One))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status
                    Store (Zero, ECRW (If (PM0H)
                            {
                                CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length
                                Store (Zero, F0LN)
                            }))
                }

修改

                If (LEqual (PM6H, One))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, ECRW)  // _RW_: Read-Write Status
                    Store (Zero, ECRW)
                }
                
                If (PM0H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, F0LN)  // _LEN: Length
                    Store (Zero, F0LN)
                }

32.DSDT错误Error:Invalid combination of length and Min/Max fixed flags

错误代码类似于 0x0000, // Length 这样或者 0x0000000000000000, // Length 十六进制代码。
把 0x0000, // Length 改成 0x0001, // Length 即可修复错误,如果是别的数值0X10FFF这样的数值,我们可以用系统自带的计算器将这个数值转
成十进制然后加一再转换成十六进制就可以了。

33.DSDT错误Object does not exist (DTGP)

Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, Buffer (0x10)
                {
                    /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
                    /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                }))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                            0x03
                        }, Arg4)
                    Return (One)
                }
                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }
        Store (Buffer (One)
            {
                0x00
            }, Arg4)
        Return (Zero)
    }

添加以上的DTGP函数,把以上代码添加到顶部42行左右

34.DSDT错误Control Method should be made Serialized(due to creation of named objects within)

对应错误行内容

Method (UXDV, 1, NotSerialized)
    {
        Store (0xFF, Local0)
        Name (T_0, Zero)
        Store (Add (Arg0, Zero), T_0) /* \UXDV.T_0_ */
        If (LEqual (T_0, 0x03F8))
        {
            Store (Zero, Local0)
        }

问题出在 Method (UXDV, 1, NotSerialized) 这句代码上。
修复方法:
将 Method (UXDV, 1, NotSerialized) 修改成 Method (UXDV, 1, Serialized) 即可

修复前代码:

Method (UXDV, 1, NotSerialized)
    {
        Store (0xFF, Local0)
        Name (T_0, Zero)
        Store (Add (Arg0, Zero), T_0) /* \UXDV.T_0_ */
        If (LEqual (T_0, 0x03F8))
        {
            Store (Zero, Local0)
        }

修复后代码:

Method (UXDV, 1, Serialized)
    {
        Store (0xFF, Local0)
        Name (T_0, Zero)
        Store (Add (Arg0, Zero), T_0) /* \UXDV.T_0_ */
        If (LEqual (T_0, 0x03F8))
        {
            Store (Zero, Local0)
        }

35.DSDT错误syntax error,unexpected PARSEOP_xxxx错误,这里的xxxx会不同,或为LOCAL0、LOCAL1、ARG0、Zero等

点击错误提示软件定位到如下代码:

Store (CMSR (0x63), Local1)
Store (CMSR (0x64), Local0)
Store (^^^GFX0.DD1F.LGBR, Local1)
Local1
Store (^^^GFX0.DD1F.LGBR, Local0)
Local0
Or (ShiftLeft (Local1, 0x04), Local0,Local0)
Or (ShiftLeft (Local0, 0x10), CAUS, Local0)
Store (Zero, ^^EC0.WHOK)
Store (Zero, CAUS)
Return (Local0)

以上代码只是类似,或许你的与此代码不同,大致的修改方法一样

修复方法:
这是语法错误。即应该是要对” Local0”进行某种操作,可是代码中却只有要操作的对象,没有操作的动作。我们只需要将Local0或错误提示时的字符串用//注释掉或者删除即可

36.DSDT错误syntax error,unexpected ‘}’,expecting ‘(’

该DSDT的错误一般是用比较旧的方法来提取导致的,此错误一般会在haswell平台的都会出现,而且此错误是个关键错误,一般会出现几个甚至是几十个的错误警告。

修改方法:
编译时提示是语法错误,定位代码到如下代码:

If (CondRefOf (\_SB.PCI0.XHC.PS0X))
   {
      PS0X
   }

即应该是要对 PS0X 进行某种操作,可是代码中却只有要操作的对象,没有操作的动作。在 PS0X 后加上一对小括号,如 PS0X ( ) 。 或者对 PS0X
加一个操作,如 Store(Zero, PS0X) 。
或者External (PS0X,MethodObj)语句把 PS0X定义成方法,那么执行应该用 PS0X()。
其它一样的错误提示的修改方法相同,只是不是同样的字母。修改好所有这样的错误后, Object does not exits () 的提示就全都消失了。

37.

如果以上内容有误,或者您有更过DSDT/SSDT的错误修改方式,请您提交给我。QQ群:1群:144231906!2群:37255828,如果群满了,就加后面的群,网站主页有。欢迎您的加入!

imacos.top

我还没有学会写个人说明!

相关推荐

1 条评论

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

DSDT与SSDT编译错误解决方案合集汇总
嘿!有什么能帮到您的吗?