Win10论坛

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

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

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

搜索
查看: 262923|回复: 1003

[原创内容] 简单教程:看图学DSDT及SSDT制作     [复制链接]

家有麦宝

Rank: 9

UID
1557992
帖子
2204
PB币
2586
贡献
0
技术
330
活跃
79

7周年庆典勋章

发表于 2012-5-10 20:13:01 |显示全部楼层
本帖最后由 imura 于 2012-6-21 19:54 编辑

一、适用人群
主板型号在列表清单内的,详见下帖
http://bbs.pcbeta.com/viewthread-948510-1-1.html
以上主板补丁大多可以解决使用原生电源管理的问题,但可能无法睡眠或睡眠不正常。
无睡眠后bios重启补丁
要使用原生电源管理,请删掉NullCPUPowerManagement.kext


二、准备工作
Windows: 
1.aida64(原everest)
2.DSDT Editor For Windows,跟mac版操作一样
Mac:
1.DSDT Editor For mac
2.Chameleon wizzard 4.1

注:DSDT Editor必须有Java Run Time支持,mac下会自动上网安装,windows下请自行下载Java Run Time

三、其他DSDT制作参考资料
1.DSDT(USB内建.HUB修改等...)
2.
DSDT修改(App store登陆问题,网卡内建)


四、操作步骤(以本人的配置为例)
  • Windows下操作
  • aida64导出acpi_dsdt.bin
ACPI_TOOL.jpg


acpi_dsdt.jpg

2.导出acpi_ssdt.bin和acpi_ssdt-1.bin等,Windows请在非超频状态下,开启bios中Intel CPU Speedstep功能
各主板的bios设置可能不一样,基本上就是要Windows能够自己调整cpu频率的情况下导出
如下图,ssdt从上往下依次另存为acpi_ssdt.bin,acpi_ssdt-1.bin,acpi_ssdt-2.bin。。。
有几个存几个,本人只有两个

acpi_SSDTjpg.jpg

3.顺便把显卡的Bios(rom)也导出来
VideoBiosDump.jpg

  • 文件改名
屏幕快照 2012-05-10 下午7.33.15.png

依次改名:效果如下图
屏幕快照 2012-05-10 下午7.34.04.png

  • Mac环境:用DSDT EDITOR给DSDT打补丁

1.打开acpi_dsdt.aml


屏幕快照 2012-05-10 下午7.34.40.png


2.选择主板相应的dsdt补丁
屏幕快照 2012-05-10 下午7.36.27.png

3.应用补丁,选apply

屏幕快照 2012-05-10 下午7.36.36.png


4.按F5编译

屏幕快照 2012-05-10 下午7.37.08.png

5.弹出编译错误信息窗口,先按右下解Fix Errors自动修复错误
一般补丁都可以做到 0 Errors

有Warning和remarks可以暂时忽略

但不能有Errors

本篇暂不提及常见Error的解决方法

屏幕快照 2012-05-10 下午7.37.37.png


6.无Error,另存为aml为 DSDT.aml
屏幕快照 2012-05-10 下午7.40.34.png


  • 用DSDT EDITOR编译SSDT
打开acpi_ssdt.aml,按F5编译为ssdt.aml
无Error则依次存为SSDT.aml,SSDT-1.aml,SSDT-2.aml

  • 变色龙设置:org.chameleon.boot.plist
打开Chameleon Wizzard,选org.chameleon.boot.plist
如图,以下为基本设置
屏幕快照 2012-05-10 下午7.43.07.png


将DSDT.aml,SSDT.aml,显卡rom放到变色龙Extra目录下


屏幕快照 2012-05-10 下午7.36.08.png
9

查看全部评分

家有麦宝

Rank: 9

UID
1557992
帖子
2204
PB币
2586
贡献
0
技术
330
活跃
79

7周年庆典勋章

发表于 2012-5-10 20:13:17 |显示全部楼层
本帖最后由 imura 于 2012-6-14 18:22 编辑

第二篇 准备写网卡内建,USB内建
这里其实基本参考Z大的文章即可,我简单补充一下。此操作在Mac下比较方便
一、准备软件
1.DSDT Editor For mac
2.IORegistryExplorer
二、参考资料
1.[分享]DSDT修改第一季(包括App store登陆问题,自动降频),附上mac下和win下安装Lion教程

三、网卡内建方法
1.最简单的方法是在变色龙参数里设置 Ethernet Built In
用Chameleon Wizzard来管理org.chameleon.boot.plist比较方便,打个勾保存一下。
此方法简单易行,但不是每台机子都支持。不搞DSDT完美的人可试用一下,不行再往下看

2.DSDT里内建,最关键的是在设备描述代码中,加入
  1.                 Method (_DSM, 4, NotSerialized)
  2.                 {
  3. ……代码省略
  4.             }
复制代码
3.网卡内建模板,以及在DSDT中插入的位置,以下为了简便起见,会引用Z大不少图片和文字,在此表示感谢
本模板一方面是为了完成网卡内建,另一方面是为了显示美观,其中有些代码,我也不知道作用,但反正能用。:)
  1. Device (P0P5)
  2.             {
  3.                 Name (_ADR, 0x001C0001)
  4.                 Method (_PRW, 0, NotSerialized)
  5.                 {
  6.                     Return (GPRW (0x09, 0x04))
  7.                 }
  8.                 Method (_PRT, 0, NotSerialized)
  9.                 {
  10.                     If (PICM)
  11.                     {
  12.                         Return (AR05)
  13.                     }
  14.                     Return (PR05)
  15.                 }
  16.                 Device (GIGE)  //网卡代码从这里开始,GIGE只是个命名而已,你想用什么就用什么,但要保持整个DSDT上下文统一
  17.                 {
  18.                     Name (_ADR, Zero) //网卡的地址,必须根据IORegistryExplorer来填写,下文介绍
  19.                     Name (_SUN, one) //网卡所在的插槽,Zero,One,0x02,0x03等均可,填写完了在系统信息中pci卡里会显示 PCI-SLOT1
  20.                     Method (_DSM, 4, NotSerialized)//内建代码开始
  21.                     {
  22.                         Store (Package (0x0A) //下面有5组10个数据,10的16进制代码0x0A
  23.                             {
  24.                                 "model",
  25.                                 Buffer (0x17) //0x17,表示下面描述的字符个数,转16进制,可大于0x17,但不能小于0x17
  26.                                 {
  27.                                     "Realtek RTL8168D/8111D"//根据你自己的型号随便写,最后数一下个数就可以了,下面代码同样也是如此处理
  28.                                 },
  29.                                 "codec-id",
  30.                                 Buffer (0x04)
  31.                                 {
  32.                                     0x68, 0x81, 0x00, 0x00 //这里我也不是太了解。Z大用的是Device id吧,8168网卡就这样写吧。好像写错了照样内建
  33.                                 },
  34.                                 "built-in",
  35.                                 Buffer (One)
  36.                                 {
  37.                                     0x01
  38.                                 },
  39.                                 "device_type",
  40.                                 Buffer (0x09)
  41.                                 {
  42.                                     "Ethernet"
  43.                                 },
  44.                                 "name",
  45.                                 Buffer (0x36)
  46.                                 {
  47.                                     "Realtek RTL8168D/8111D PCI-E Gigabit Ethernet Adapter"
  48.                                 }
  49.                             }, Local0)
  50.                         DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  51.                         Return (Local0)
  52.                     }//网卡内建代码结束
  53.                 }//网卡代码结束
  54.             }
复制代码
3.利用IORegistryExplorer来查找网卡地址及代码插入位置

在网卡已经驱动的情况下,IORegistryExplorer里搜索IOEthernetInterface,找到自己网卡的位置
以上图为例,在PCI0@0-POP5@1C,1设备下
那么在dsdt代码中,打开device(PCI0)找到POP5,在POP5这段代码的大括号内添加网卡信息

上图中GIGE@0,那么Name(_ADR,Zero)或Name(_ADR,0x00000000)
如GIGE@9,那么Name(_ADR,0x00000009)
如果像POP5@1C,1那样的,GIGE@1A,2那么Name(_ADR,0x001A0002)
以此类推

完成后编译无错,保存为aml,重启电脑后,像上图一样查看IORegistryExplorer,IOBuiltin是YES那就代表内建成功



4

查看全部评分

家有麦宝

Rank: 9

UID
1557992
帖子
2204
PB币
2586
贡献
0
技术
330
活跃
79

7周年庆典勋章

发表于 2012-5-10 20:13:35 |显示全部楼层
占楼备用

家有麦宝

Rank: 9

UID
1557992
帖子
2204
PB币
2586
贡献
0
技术
330
活跃
79

7周年庆典勋章

发表于 2012-5-10 20:13:56 |显示全部楼层
占楼备用

Rank: 7Rank: 7Rank: 7

UID
1021130
帖子
705
PB币
1034
贡献
0
技术
124
活跃
1812

7周年庆典勋章

发表于 2012-5-10 20:20:38 |显示全部楼层
好贴子,学习了!一定要顶!

哦哦也也嗷嗷嗷

Rank: 7Rank: 7Rank: 7

UID
1385882
帖子
1293
PB币
1166
贡献
0
技术
27
活跃
232
发表于 2012-5-10 20:24:00 |显示全部楼层
我来标记一下!!!!!! 慢慢学习!!!!

UID
2409498
帖子
27335
PB币
927
贡献
4
技术
1346
活跃
696
发表于 2012-5-10 20:27:31 |显示全部楼层
来顶龙猫的帖子~~~~

家有麦宝

Rank: 9

UID
1557992
帖子
2204
PB币
2586
贡献
0
技术
330
活跃
79

7周年庆典勋章

发表于 2012-5-10 20:45:35 |显示全部楼层
本帖最后由 imura 于 2012-5-10 20:55 编辑
p.H 发表于 2012-5-10 20:27
来顶龙猫的帖子~~~~

我应该把DSDT紫米大大还有z大的教程也链上去的

最好还做个DSDT常见错误的解决方法帖,需要时间收集啊

Rank: 9

UID
697283
帖子
2199
PB币
3577
贡献
0
技术
151
活跃
960

7周年庆典勋章

发表于 2012-5-10 21:29:50 |显示全部楼层
支持,学习了

♛Hackintosh拾荒者♛

Rank: 7Rank: 7Rank: 7

UID
281520
帖子
2102
PB币
14740
贡献
0
技术
4
活跃
812

7周年庆典勋章

发表于 2012-5-10 23:23:21 |显示全部楼层
辛苦了,后来的同学有福了!

与美人相约,幸会。

Rank: 7Rank: 7Rank: 7

UID
2288409
帖子
2098
PB币
1498
贡献
0
技术
0
活跃
1119

十一周年 7周年庆典勋章

发表于 2012-5-10 23:29:25 |显示全部楼层
SSDT有Error怎么修改?我没修改直接放进去的

Rank: 5Rank: 5Rank: 5

UID
44061
帖子
737
PB币
1637
贡献
0
技术
59
活跃
347
发表于 2012-5-10 23:41:36 |显示全部楼层
imura 发表于 2012-5-10 20:45
我应该把DSDT紫米大大还有z大的教程也链上去的

最好还做个DSDT常见错误的解决方法帖,需要时间收集啊

acpi_ssdt.aml  好多错误,点了fix还是这m多。。疯了我
怎么解决啊
未命名.jpg

Rank: 5Rank: 5Rank: 5

UID
2603785
帖子
759
PB币
1426
贡献
0
技术
11
活跃
15
发表于 2012-5-10 23:49:11 |显示全部楼层
这个必需顶!。。。imura

家有麦宝

Rank: 9

UID
1557992
帖子
2204
PB币
2586
贡献
0
技术
330
活跃
79

7周年庆典勋章

发表于 2012-5-11 06:45:45 |显示全部楼层
aksoft 发表于 2012-5-10 23:41
acpi_ssdt.aml  好多错误,点了fix还是这m多。。疯了我
怎么解决啊

Requires Package
把Return (Zero)改成 Return (Package(Zero){})

not all control Paths Return a Value(_CST)
应该添加一个访回值,一般是Return (Zero)
在函数(方法?)最后面, 这一大段代码大括号} 之前添加
但同样因为后面又有must Return a Values(Package Required for _CST)
所以这里访回值应该是一个Package,故不是Return(Zero)
而是
Return (Package(Zero){})

家有麦宝

Rank: 9

UID
1557992
帖子
2204
PB币
2586
贡献
0
技术
330
活跃
79

7周年庆典勋章

发表于 2012-5-11 07:24:52 |显示全部楼层
lizuyang 发表于 2012-5-10 23:29
SSDT有Error怎么修改?我没修改直接放进去的

SSDT其实跟DSDT一样的语法
Error一样要修改,不同板子SSDT都不一样

Rank: 5Rank: 5Rank: 5

UID
933479
帖子
778
PB币
1796
贡献
0
技术
14
活跃
193
发表于 2012-5-11 08:35:14 |显示全部楼层
有个问题要请教龙猫兄,变色龙里那个c-state generate不需要勾么?我开这个的时候,启动日志里就有C-State Generated with SSDT,如果不加的话,就没有。那么,不加的时候,SSDT到底启用了没有,该怎么验证?

家有麦宝

Rank: 9

UID
1557992
帖子
2204
PB币
2586
贡献
0
技术
330
活跃
79

7周年庆典勋章

发表于 2012-5-11 08:46:30 |显示全部楼层
lsls01 发表于 2012-5-11 08:35
有个问题要请教龙猫兄,变色龙里那个c-state generate不需要勾么?我开这个的时候,启动日志里就有C-State  ...

用了SSDT.aml,就Drop SSDT可以了。如果不用SSDT.aml,那么你把c-state p-state选上吧,让变色龙帮你管理电源

至少到底启用了没有。温度监控软件来看呗
或者SMC Monito,搜索一下吧。挺长一段

Rank: 1

UID
1594920
帖子
109
PB币
87
贡献
0
技术
0
活跃
0
发表于 2012-5-11 10:41:43 |显示全部楼层
y460路过,帮顶!!!!谢谢!!!

Rank: 5Rank: 5Rank: 5

UID
44061
帖子
737
PB币
1637
贡献
0
技术
59
活跃
347
发表于 2012-5-11 10:49:46 |显示全部楼层
imura 发表于 2012-5-11 06:45
Requires Package
把Return (Zero)改成 Return (Package(Zero){})

无error了,哈哈,编译成功,中午 试试
安装 10.7.4,都dsdt,应该没啥问题吧

家有麦宝

Rank: 9

UID
1557992
帖子
2204
PB币
2586
贡献
0
技术
330
活跃
79

7周年庆典勋章

发表于 2012-5-11 10:59:56 |显示全部楼层
本帖最后由 imura 于 2012-5-11 11:01 编辑
aksoft 发表于 2012-5-11 10:49
无error了,哈哈,编译成功,中午 试试
安装 10.7.4,都dsdt,应该没啥问题吧

显卡,声卡,网卡内建应该都还没做吧

安装应该没问题了

找个U盘做变色龙引导,extra目录下放dsdt,

用U盘引导安装原版。mbr的需要替换osinstall.mpkg


回顶部
Copyright (C) 2005-2020 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件