Win10论坛

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

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

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

搜索
查看: 52143|回复: 257

[教程] A卡桌面版DSDT完美驱动教程~~     [复制链接]

Rank: 7Rank: 7Rank: 7

UID
1457182
帖子
1497
PB币
2512
贡献
0
技术
496
活跃
439
发表于 2014-2-8 22:37:12 |显示全部楼层
前言:折腾黑苹果那么久了,也掌握了一些技术,闲着无聊就发个教程,让还未成功的朋友少走一些弯路
PS:移动版的我没测试过,不过有可能会有很多问题,还会涉及到改FB那些,本帖不作讨论
需要工具:
IORegistryExplorer(查看显卡位置)
DSDT Editor(编辑DSDT)

楼下发教程~~
5

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
1457182
帖子
1497
PB币
2512
贡献
0
技术
496
活跃
439
发表于 2014-2-8 22:37:29 |显示全部楼层
本帖最后由 YSC3839 于 2014-2-9 20:18 编辑

首先要确定显卡在DSDT中的位置(如果你找得到就跳过)打开IORegistryExplorer,在查找那一栏输入display
Snip20140208_5.png

仔细看左边的列表,红框的地方就是具体位置,PCI0 PEG0 PEGP,这就是显卡在DSDT里的位置了

然后我们要用到DSDT Editor(当然其他工具也可以)
打开DSDT Editor,点击菜单 File > Extract DSDT,就会提取本机的DSDT了
然后在左边列表找到刚才记下的位置
Snip20140208_6.png

在这里,可以看到代码是这样的
Snip20140208_7.png

我们在
  1. Name (_ADR, 0xFFFF)
复制代码
的下一行粘贴这段代码,这里发最精简代码,一些额外的将在下面介绍
  1. Method (_DSM, 4, NotSerialized)
  2.                     {
  3.                         Store (Package ()
  4.                             {
  5.                                 "@0,name",
  6.                                 Buffer ()
  7.                                 {
  8.                                     "ATY,Vervet" //这里改成你自己的FB
  9.                                 },
  10.                                 "@1,name",
  11.                                 Buffer ()
  12.                                 {
  13.                                     "ATY,Vervet" //这里改成你自己的FB
  14.                                 },
  15.                                 "@2,name",
  16.                                 Buffer ()
  17.                                 {
  18.                                     "ATY,Vervet" //这里改成你自己的FB
  19.                                 },
  20.                                 "VRAM,totalsize",
  21.                                 Buffer (0x04)
  22.                                 {
  23.                                     0x00, 0x00, 0x00, 0x40 //改成自己的显存
  24.                                 },
  25.                                 "model",
  26.                                 Buffer ()
  27.                                 {
  28.                                     "AMD Radeon HD 6750" //这里改成你自己的显卡名称
  29.                                 },
  30.                                 "device-id",
  31.                                 Buffer (0x04)
  32.                                 {
  33.                                     0xb8, 0x68, 0x00, 0x00 //改成你自己的ID
  34.                                 },
  35.                                 "hda-gfx",
  36.                                 Buffer (0x0A)
  37.                                 {
  38.                                     "onboard-1"
  39.                                 }
  40.                             }, Local0)
  41.                         DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  42.                         Return (Local0)
  43.                     }
复制代码
这里的FB可以去看变色龙源代码 forge.voodooprojects.org/p/chameleon/source/tree/HEAD/trunk/i386/libsaio/ati.c
打开网页后搜索你的显卡型号或者显卡ID
Snip20140208_8.png

注意图中那些Null都是没用的,如果有多个你不确定的话,复制下FB的名称然后在最前面看看是几个接口的(去掉k)
Snip20140208_10.png
比如Vervet是4个的,当然假如试了这个有问题的话就换其他的
然后复制到前面DSDT那里,我的显卡是3个接口,所以我DSDT里面就是@[email protected],有多的话就依此类推@[email protected]@5……忘记说了……那里的ID要改成驱动里面有的……
5000系列免驱ID 6898 6899 68E0 68E1 68D8 68C0 68C1 68D9 68B8 68B0 68B1 68A0 68A1
6000系列
6768 6770 6779 6760 6761 6750 6758 6759 6740 6741 6745 6738 6739 6720 6722 6718 6719 6840 6841 6704
7000系列
2600 2200 6790 6798 679A 679E 6780 6820 6821 6825 6827 682D 682F 6839 683B 683D 683F 6800 6801 6806 6808 6810 6818
找跟自己ID相似的,或者同一个核心的,比如我的6750是5750的马甲,而5750和5770是同核心的,5770也能免驱,所以写5770的ID,5770的ID是68B8,然后倒过来写在DSDT就是0xb8, 0x68, 0x00, 0x00
显存对应数值列表
<00000020>512MB
<00000028>640MB
<00000030>768MB
<00000040>1GB
<00000060>1.5GB
<00000080>2GB
<000000C0>3GB
这个似乎不能超过4GB,不知苹果怎么设计的
前面的代码是最精简的代码,起码能驱动,但是可能还会出现一些问题,所以我们可以添加一些额外代码
1、在系统报告 PCI卡里显示的
  1. "@0,compatible",
  2. Buffer ()
  3. {
  4.     "ATY,Vervet" //这里改成你自己的FB
  5. },
  6. "@0,device_type",
  7. Buffer (0x08)
  8. {
  9.     "display"
  10. },
复制代码
这段代码添加上去后会显示出一个类型是“显示器控制器”的项目

2、系统报告 EFI驱动程序版本
  1. "ATY,EFIVersion",
  2. Buffer (0x0A)
  3. {
  4.     "01.00.456"
  5. },
复制代码
可以随便写,长度不要超出就没问题

3、ROM 修正版
  1. "ATY,Rom#",
  2. Buffer (0x0E)
  3. {
  4.     "144-L0306-S65"
  5. },
  6. "ATY,Card#",
  7. Buffer (0x0E)
  8. {
  9.     "144-L0306-S65"
  10. },
复制代码
这个也能随便写

4、PCI卡中显示显卡信息
  1. "device_type",
  2. Buffer ()
  3. {
  4.     "ATY,VervetParent" //这个要改成你的FB+Parent
  5. },
复制代码
不过添加这个后PCI卡那里会显示两个(我的是这样的),所以我没添加

5、插槽名称
  1. "AAPL,slot-name",
  2. Buffer ()
  3. {
  4.     "PCIe"
  5. },
复制代码
这个也能随便写,不过我加了没用……

6、PCI卡中显示的名称(这个我没测试过,请大家测试)
  1. "name",
  2. Buffer ()
  3. {
  4.     "AMD Radeon HD 6750"               
  5. },
复制代码
也是可以随便写

7、高分屏用的(这是@xiao201261回复给我的,我没测试)
  1. "AAPL00,DualLink",
  2. Buffer (0x04)
  3. {
  4.     0x01, 0x00, 0x00, 0x00
  5. },
复制代码
还有很多,大家可以上网找~~
添加完这个之后看你需要添加HDMI代码
  1. Device (HDAU)
  2.                 {
  3.                     Name (_ADR, One)
  4.                     Method (_DSM, 4, NotSerialized)
  5.                     {
  6.                         Store (Package (0x02)
  7.                             {
  8.                                 "hda-gfx",
  9.                                 Buffer (0x0A)
  10.                                 {
  11.                                     "onboard-1"
  12.                                 }
  13.                             }, Local0)
  14.                         DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  15.                         Return (Local0)
  16.                     }
  17.                 }
复制代码
注意HDAU的位置要与PEGP同级,就像这样
Snip20140208_11.png

代码都添加好之后我们选择菜单上的Patch > Open,找到DTGP.txt(这个文件DSDT Editor自带了,在Patches文件夹里面),打开后点Apply
Snip20140208_12.png

Snip20140208_13.png

然后关闭Patch窗口,按F5编译试试,有Error的话要解决后才能编译成功,编译后点菜单上的IASL > Save AML,保存AML文件,然后放到引导程序的文件夹里面就大功告成了!重启查看效果吧~~
4

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
1457182
帖子
1497
PB币
2512
贡献
0
技术
496
活跃
439
发表于 2014-2-8 22:37:55 |显示全部楼层
本帖最后由 YSC3839 于 2014-2-9 20:06 编辑

这一层楼我是来讲解一些DSDT的Warning和Remark的修复方法的
1、遇到
RemarkUse of compiler reserved name (_T_0)
按Command+F把"_T_0"替换成"T_0"(不含引号)
_T_1 _T_2等问题方法一样~~
2、遇到
WarningPossible operator timeout is ignored
找到这一行,应该是Acquire (MUT0, 0x0FFF)这样的代码,把"0x0FFF"改成"0xFFFF"(不含引号)
3、遇到
WarningReserved method must return a value (Integer/String/Buffer/Package/Reference required for XXX)
这个问题是函数没有返回导致的,先找到那个函数,然后在最后面加入Return (Zero)即可 Snip20140208_15.png



最后发一下需要的工具
IORegistryExplorer http://bbs.pcbeta.com/viewthread-1433743-1-6.html
DSDT编辑 http://bbs.pcbeta.com/viewthread-1460313-1-1.html(Maciasl)
DSDT Editor (需要装Java,Mac Win通用) DSDTEditor-Linux-Mac-Win.zip (1.41 MB, 下载次数: 1357)
3

查看全部评分

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

UID
2881599
帖子
18654
PB币
94487
贡献
1
技术
23549
活跃
2823

热心会员 8周年庆典勋章

发表于 2014-2-8 22:40:41 |显示全部楼层
前排支持一下~ 期待你的教程!

Rank: 7Rank: 7Rank: 7

UID
4403390
帖子
1918
PB币
1441
贡献
0
技术
54
活跃
456
发表于 2014-2-8 22:40:54 |显示全部楼层
YSC3839 发表于 2014-2-8 22:37
再占一层楼~~~

打算占多少楼才来教程

远景大水比们のLeader

Rank: 7Rank: 7Rank: 7

UID
4026306
帖子
2708
PB币
3418
贡献
0
技术
9
活跃
494

活动参与先锋 8周年庆典勋章

发表于 2014-2-8 22:47:03 |显示全部楼层
Macbook、 发表于 2014-2-8 22:40
打算占多少楼才来教程

一眼看过去,两楼!

Rank: 7Rank: 7Rank: 7

UID
253574
帖子
648
PB币
3595
贡献
0
技术
3
活跃
662
发表于 2014-2-8 22:47:35 |显示全部楼层
A卡前排强力支持。

Rank: 7Rank: 7Rank: 7

UID
4403390
帖子
1918
PB币
1441
贡献
0
技术
54
活跃
456
发表于 2014-2-8 22:51:35 |显示全部楼层
YSC3839 发表于 2014-2-8 22:37
占楼,发教程~~

期待中的楼层,,楼主快啊

Rank: 11Rank: 11Rank: 11

UID
3545481
帖子
8856
PB币
38337
贡献
0
技术
7844
活跃
2673

Win10先驱者 我是大学生! 远景美化达人 远景技术达人 远景智多星

发表于 2014-2-8 22:55:21 来自手机 |显示全部楼层
那我就前排挤一挤吧

Rank: 7Rank: 7Rank: 7

UID
1457182
帖子
1497
PB币
2512
贡献
0
技术
496
活跃
439
发表于 2014-2-9 02:28:09 来自手机 |显示全部楼层
自己顶一下吧

-

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15413
PB币
466
贡献
0
技术
82
活跃
1706

十周年 Win10先驱者 8周年庆典勋章

发表于 2014-2-9 12:08:29 |显示全部楼层
  ge=yes完美驱动

-

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15413
PB币
466
贡献
0
技术
82
活跃
1706

十周年 Win10先驱者 8周年庆典勋章

发表于 2014-2-9 12:11:09 |显示全部楼层
推荐下:
  1.                         "AAPL00,DualLink",
  2.                         Buffer (0x04)
  3.                         {
  4.                             0x00, 0x00, 0x00, 0x00   //  是高分屏改0x01, 0x00, 0x00, 0x00                        
复制代码


Rank: 7Rank: 7Rank: 7

UID
1457182
帖子
1497
PB币
2512
贡献
0
技术
496
活跃
439
发表于 2014-2-9 18:56:57 |显示全部楼层
xiao201261 发表于 2014-2-9 12:11
推荐下:

这个可以,找时间加一点额外的DSDT代码上去,话说我1600x900这个代码有什么用嘛?

-

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15413
PB币
466
贡献
0
技术
82
活跃
1706

十周年 Win10先驱者 8周年庆典勋章

发表于 2014-2-9 18:59:38 |显示全部楼层
YSC3839 发表于 2014-2-9 18:56
这个可以,找时间加一点额外的DSDT代码上去,话说我1600x900这个代码有什么用嘛?

分辨率1600x900?

Rank: 7Rank: 7Rank: 7

UID
1457182
帖子
1497
PB币
2512
贡献
0
技术
496
活跃
439
发表于 2014-2-9 19:53:06 |显示全部楼层
xiao201261 发表于 2014-2-9 18:59
分辨率1600x900?

是的,接口HDMI,有什么用?

-

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15413
PB币
466
贡献
0
技术
82
活跃
1706

十周年 Win10先驱者 8周年庆典勋章

发表于 2014-2-9 20:02:46 |显示全部楼层
YSC3839 发表于 2014-2-9 19:53
是的,接口HDMI,有什么用?

  没用  对于我这桌面显卡有内屏的必须用

Rank: 7Rank: 7Rank: 7

UID
1457182
帖子
1497
PB币
2512
贡献
0
技术
496
活跃
439
发表于 2014-2-9 20:04:26 |显示全部楼层
xiao201261 发表于 2014-2-9 20:02
没用  对于我这桌面显卡有内屏的必须用

内屏?桌面显卡也有内屏?

Rank: 7Rank: 7Rank: 7

UID
1457182
帖子
1497
PB币
2512
贡献
0
技术
496
活跃
439
发表于 2014-2-9 20:05:19 |显示全部楼层
教程已更新~~顶起!

-

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15413
PB币
466
贡献
0
技术
82
活跃
1706

十周年 Win10先驱者 8周年庆典勋章

发表于 2014-2-9 20:05:34 |显示全部楼层
YSC3839 发表于 2014-2-9 20:04
内屏?桌面显卡也有内屏?

一体机蛋疼

Rank: 7Rank: 7Rank: 7

UID
1457182
帖子
1497
PB币
2512
贡献
0
技术
496
活跃
439
发表于 2014-2-9 20:19:11 |显示全部楼层
xiao201261 发表于 2014-2-9 20:05
一体机蛋疼

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