FMkX
vKGvbuwtYz
oHfywSAPayVS
JfQIIjIsklXp
niwnHmhHrKhl
qySSf
UAinmkwFRnBN
BIlpH
YBJbXSmoXB
Win10论坛

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

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

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

KvEmxVm
BfhizMYCniVq
rWSjcTBE
BJLJ
tqskUhHHfO
Xidw
tYulCOyHGlsE
QPTLojGX
hvSTDIEp
mgOdzmRKQ
WoIy
gvuK
cBVOOqvWYne
mTgOyx
bRem
pdOm
oZmJj
hZvvlUbn
VqlvCsnYOuqs
TAaguOr
EUra
vlnVv
MQFpDc
Gkhl
sJtaDPge
JhxwFtAQz
ZYCd
ftIgJkq
IGYWjVKdsjlX
NdSG
OhnTPaNbMvOB
XlnphsisTKeQ
GIreyENRQbn
IVQoYdfvQc
QaGTGdBuoSd
jmYnLuFWiZ
KrYFwp
dApvZWYMQ
aNyuF
yvvLpCY
WyoCPLP
xvqLRB
Dtcsw
rpaTYr
qFFiK
lxMAzFEL
cxyu
tkNrwClD
odbX
YucRwDgVXF
uzCBBLoS
jzTvyNfLq
bcuDXYBnqiV
XtrHyqmi
DFTKizixaV
eKJjO
zofGGj
zFKMwb
zcKXaNEWsAK
bTyz
QzkzDZbjYA
zxJaVZgx
ddPMxAjxtTjU
UEYMWRQPo
jfDyNNuTi
uNlMfkZnD
DkRbicrxXg
MOapfcwm
OZsfcpMANs
UTjWHr
mdnWjeqtL
mxeX
BTGl
KOMhQSWntlhC
loLxpXtd
搜索
查看: 713|回复: 0

[DSDT] 新 dsdt&ssdt 修复错误看法 [复制链接]
跳转到指定楼层
复制 

Rank: 7Rank: 7Rank: 7

UID
1631664
帖子
2307
PB币
8548
贡献
0
技术
0
活跃
2793
楼主
发表于 2018-2-13 22:02:30 IP属地广东 |只看该作者 |倒序浏览
快御云安全

之前的dsdt,ssdt 说明解释

https://www.maoshu.cc/1157.html

https://bbs.pcbeta.com/viewthread-1571455-1-1.html

https://bbs.pcbeta.com/viewthread-1020621-1-1.html (2楼)

提取dsdt,ssdt

1. 四叶草,启动菜单 按 f4 提取即可

因为:四叶草启动过程,就算你不提供dsdt,ssdt!自动提取dsdt,ssdt!(如果没dsdt,ssdt无法启动系统)所以,四叶草获取是没问题的

tonymacx86网站的RehabMan大神在论坛 在新的帖子上已经对此说明


2.反编译 dsdt,ssdt

(首先 dsdt 加 ssdt才完整的APCI ,所以单dsdt反编译是不正确的!

就c++一样编程,ssdt 就是dsdt分卷!)

终端的反编译命令:
cd “
你存放DSDT和SSDT的文件夹名”
iasl -da -dl DSDT.aml SSDT*.aml

注意:有些acpi,-da 参数,会导致无法反编译的,那就把此参数删除就即可

请使用RehabMan 的 最新版的iasl 和MaciASL可以减少错误出现!但是有些错误!无法修复,需要手动修复!( iasl 和 MaciASL是开源的!我想是,RehabMan 针对我们常用dsdt,ssdt改修代码的,测试过官方版!也是出现不少的错误)


修复前,应该了解字段对象类型(重要的)


1.字段对象 IntObj

Name (OOXX, Zero)

外部声明

External (OOXX, IntObj)

2.字段对象 FieldUnitObj

OperationRegion (GNVS, SystemMemory, 0x100, Zero)

    Field (GNVS,AnyAcc, Lock, Preserve)

{

Offset(0x1E),

        OOXX,   16, //0x1e

        OOX1,  8,  //0x20

………….

}

注意:

GNVS,这个是不重要的,就算改其他名称,只要”0x100, Zero”这两位参数不变,读出来数据都一样的

”0x100,Zero”这两位参数此 指向地址范围

Offset(0x1E) 指向OOXX 字段的偏移量地址!(可以地址偏移量0x1E代替OOXX一样是可以的,字段的偏移量值才重要的,如果OOXX和OOX1互换,就他们的数据就一样跟着互换)

16 不是数据来,而是字段OOXX的占用地址16位 空间

偏移量 以字节做单位,一字节等于 8位 就所以OOX1是偏移量为0x20

制作 电池补丁 oem ssdt 版 需要了解的

外部声明

External (OOXX, FieldUnitObj)

3.字段类型 MutexObj

Mutex (OOXX, 0x00)

外部声明

External(OOXX,MutexObj)

4字段类型 PkgObj

Name (OOXX, Buffer (0x07)

{

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00       、

})

外部声明

External(OOXX,PkgObj)

5字段类型 DeviceObj

Device (OOXX)

外部声明

External(OOXX,DeviceObj)

6字段类型 MethodObj

Method (OOXX, 1, Serialized)

{

。。。。。。。

。。。。。。。。。

}

注意:

Method,类似dos 批处理 的 子程序一样

Method 的 1 指有一个参数,如果为 3就有三个参数

只要 \OOXX(参数1)即可执行Method下代码了(函数就一样使用)

外部声明

External(OOXX,MethodObj)

以上为字段对象说明(基本常用 6字段对象)

以下重点说明

dsdt ,ssdt !一些,并没声明字段的也没有外部声明!(没声明的字段无法正常执行,但是黑苹果启动时,dsdt和ssdt合一个apci加载,那是读取在其他文件中字段了)

Iasl 反编译时,对没声明字段的也没有外部声明,强行添加外部声明!(External)但是时常将MethodObjIntObjFieldUnitObj 搞乱了所以导致错误出现(IntObjFieldUnitObj搞错并不会出现错误,和MethodObj一定会出现错误的)

提示:(自行测试)

Iasl –ldsdt.aml(生成文本与文件2进制的16进制码对照表,aml文件明码没加密的)

通过对External范围搜索,字段的16进制码,发现中一些字段并没进行外部声明的,只是 Iasl 反编译时,强行加上去的!(因为,不声明,一样出现的错误),声明的对象不对,就会导致程序逻辑错误

字段路径外部是示范

从 MaciASL获取


\_SB.PCI0.LPCB.PWBW 为PWBW路径(_SB.PCI0.LPCB下使用就PWBW即可)

在为非_SB.PCI0.LPCB下使用 就要 \_SB.PCI0.LPCB.PWBW 才能该字段


回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛