已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DSDT修改教程这就是重点了,实际上整个一个星期的工作绝大部分都是在如果驱动硬件上做文章了,虽然期间重装了三遍系统,但感觉轻车熟路,玩一样的。在驱动问题上确实走了很多的弯路,但是这个弯路有时候有事必须的,因为人总想做的完美一些,只有不停地尝试才能找到更好的 办法。1、显卡装完雪豹第一个想法就是希望能看到华丽的而且和windows不一样的界面,但事实又总是和想象的有所区别,界面是变了, 但是连进入系统式欢迎动画都是卡卡卡!所以第一个想法也是把显卡的驱动装上,于是google,一堆的驱动,一堆的方法,只是没有哪个具体说了怎样驱动 9300m gs的,没办法只好一个一个的试了,几乎把所有的驱动都试过了(没找到的,不知道的,不算),NVkushInstaller、NVinstaller v.52、NVIDIA_9000_Series_Driver_v2、NVdarwinInstaller1.2.5、Natit.kext一样的不一 样的都试了一遍,统统不行!然后又试EFI String,用OSX86Tools_1.0.150(这是个好东西),但是顶多就是强制分辨率,驱动的不能。还有人介绍的就是在 com.apple.Boot.plist里面加入1. GraphicsEnabler2. y不知是不是人品不好,这个东东在别人那挺好,在我这统统不管用。pcbeta逛了逛才接触到通过dsdt的修改来驱动显卡,让我兴奋 的不得了,凭直觉觉得用dsdt来驱动硬件应该是比较完美的方法,于是全身心投入到了dsdt的研究当中,由于之前一点都没有接触过dsdt(java编 程还是会的),只能在网上找方法然后依葫芦画瓢,但是开始根本不知道从何入手,比较简单的方法就是威廉的acpi patch,但是又不支持我这个类型的bios,只能手动修改!彷徨中一个大侠的出现让我看到了曙光,url=space.php?uid=487636xchobits/url 大侠把他自己的dsdt文件给了我,因为我们的本子都是差不多的,我把他的dsdt.aml放入drawn文件夹下后,奇迹出现了,透明效果一下出来了, 高兴的不得了!甚至安装了legacyHDA后,声卡也出声了!但问题也接踵而来,就是每次进系统时总是先要五国一次,然后强制重启就能正常进入,郁闷的不得鸟!我分析,毕竟我的硬件 不完全就是他的硬件,是不是某些地方的不同导致了五国,于是我决定自己修改dsdt!=2、DSDT首先要把xchobits的 aml文件反编译,干吗?学习!下载了iasl-win-20080729,反编译命令1.2. iasl-d dsdt.aml得到dsdt.dsl 文件,一开始我一直用写字板编辑,后来发现用UltraEdit-32相当的方便,在视图里面选择查看方式选择perl,看到左边的加号了,确保了每个 都不会错,大大降低了出错的几率。开始也不知道xchobits到底修改了哪里,就上网找教程, 很多,就按教程修改!首先提取自己的dsdt,用everestultimate+ACPI Patcher,先用everestultimate导出acpi_dsdt.bin,然后用ACPI Patcher点D/C按钮就得到dsl文件了。GTGP 是最基本的一个方法,很多函数都需要它,加入的位置只要不是放在子函数块里就ok了,我插入的位置:DefinitionBlock (dsdt.aml, DSDT, 2, Intel , CANTIGA , 0x06040000)Method (DTGP, 5, NotSerialized)/dtgp函数 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) . External (PDC1) External (PDC0) External (CFGD) External (_PR_.CPU0._PPC)RTC听说这个是防止bios重置的,(我到现在也不知道bios重置是个什么东西) Device (RTC) Name (_HID, EisaId (PNP0B00) Name (BUF0, ResourceTemplate () IO (Decode16, 0x0070, / Range Minimum 0x0070, / Range Maximum 0x01, / Alignment 0x02, / Length这里由0x08改成0x02 ) ) Name (BUF1, ResourceTemplate () IO (Decode16, 0x0070, / Range Minimum 0x0070, / Range Maximum 0x01, / Alignment 0x08, / Length这个不知道改不改 )/ IRQNoFlags () 直接用/屏蔽就是了/ 8 ) Method (_CRS, 0, Serialized) . HPET听说这个 是能解决cpu电源管理的 Device (HPET) Name (_HID, EisaId (PNP0103) Name (_CID, EisaId (PNP0C01) Name (BUF0, ResourceTemplate () IRQNoFlags ()/就是加入这四行的东西 0 / IRQNoFlags () / 8 / Memory32Fixed (ReadOnly, 0xFED00000, / Address Base 0x00000400, / Address Length ) ) Method (_STA, 0, NotSerialized) ./此处略 Method (_CRS, 0, Serialized) . / 此处略 至于_WAK里面的两 个Return(zero),我的dsdt里面自带了。显卡的GFX0加入PEGP里面 Device (PEGP) Name (_ADR, 0x00010000) Device (GFX0) Name (_ADR, Zero) Name (_SUN, One) Method (_DSM, 4, NotSerialized) Store (Package (0x1C) AAPL,slot-name, Buffer (0x0D) PCI-E Slot-1 , 0,compatible, Buffer (0x0B) NVDA,NVMac , 0,device_type, Buffer (0x08) display , 0,name, Buffer (0x0F) NVDA,Display-A , 1,compatible, Buffer (0x0B) NVDA,NVMac , 1,device_type, Buffer (0x08) display , 1,name, Buffer (0x0F) NVDA,Display-B , NVCAP, Buffer (0x18) /* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0008 */ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, /* 0010 */ 0x00, 0x00, 0x00, 0x00 , NVPM, Buffer (0x20) /* 0000 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0018 */ 0x00, 0x00, 0x00, 0x00 , VRAM,totalsize, Buffer (0x04) 0x00, 0x00, 0x00, 0x10/这里0x10代表256M显存,0x20代表512M , device_type, Buffer (0x0D) NVDA,GeForce , model, Buffer (0x1F) / 0x1F代表了Nvidia GeForce 9300M GS 256 MB的字数,一般按字数+空格+1然后在转16进制,Buffer的用法基本相同 Nvidia GeForce 9300M GS 256 MB , rom-revision, Buffer (0x21) DSDT ROM v1.0 by Echo #OS x86_64 , reg, Buffer (0x78) /* 0000 */ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0010 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x02, /* 0018 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0020 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, /* 0028 */ 0x14, 0x00, 0x01, 0x42, 0x00, 0x00, 0x00, 0x00, /* 0030 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0038 */ 0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x01, 0x02, /* 0040 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0048 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, /* 0050 */ 0x24, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, /* 0058 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0060 */ 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x02, /* 0068 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0070 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 , Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0) Return (Local0) Device (VGA) . /此处略 Method (_PRT, 0, NotSerialized) ./此处略 这里要注意那个 device(VGA),本来他是在GFX0之外的,但是我把它放到GFX0之内了,所以就有两个调用到它的地方要由PEGP.VGA改成 PEGP.GFX0.VGA,另外在VGA函数里面要调用之外的函数往往用.LPC等等,此刻就要记得在前面多加个了,前面就成了 .LPC。网上还看到了加入一下代码让原生AppleLPC加载来实现硬件电源管理的 Device (LPC) Name (_ADR, 0x001F0000)/* =加载原生 AppleLPC.kext= */ Method (_DSM, 4, NotSerialized) Store (Package (0x02) device-id, Buffer (0x04) 0x16, 0x29, 0x00, 0x00/最主要的就是这里 , Local0) DTGP (Arg0, Arg1, Arg2, Arg3, Refof (Local0) Return (Local0) /* = */0x16,0x29,0x00,0x00 这个字符串可以在AppleLPC.kext里面看到,你可以改成里面有的任意一个据说还要改两个地方,防止声音变形,不懂什么叫声音变形,照改就是了,这里是整个过程/viewthread.php?tid=594984&page=1&authorid=215483顺便把声卡的也加了进去 Method (_DSM, 4, NotSerialized) Store (Package (0x08) codec-id, Buffer (0x04) 0x3e, 0x29, 0xEC, 0x10/这里在用voodoo驱动时可以再ioreg里看到 , layout-id, Buffer (0x04) 0x78, 0x03, 0x00, 0x00 , device-type, Buffer (0x29) Realtek ALC888/1200 Intel 82801IB ICH9 , PinConfigurations, Buffer (0x00) /这里清空 , Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0) Return (Local0) 以上代码加入到HDEF中,我的没有只有AZAL,于 是就把AZAL改成了HDEF。好了,编译1. iasl dsdt.dsl放入Drawn里面,启动,照样五国,重启,正常进入,显卡声卡驱动,原生电源管理,关机再重启,还是五国,再重启,正常。这里先说明一下,在编译我自己的dsdt文件时,发现原始的dsdt文件居然也有31个Warnings, 11 个Remarks,虽然无伤大雅,但我是个追求完美的人,通过反编译别人的aml文件以及在网上搜索用一下方式解决:对于11dsdt.dsl1101: Add (Local0, 0x02)Warning1105 - Result is not used, operator has no effect采用把 (Local0, 0x02)改为 (Local0, 0x02, Local0)即可解决对于11dsdt.dsl7080: Method (_GTM, 0, NotSerialized)Warning1087 - Not all control paths returna value (_GTM)采用在判断语句后加入Return(Zero)方法 解决,例如:Method (_GTM, 0, NotSerialized) If (LEqual (SCFG, Zero) Name (PBUF, Buffer (0x14) /* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0010 */ 0x00, 0x00, 0x00, 0x00 ) CreateDWordField (PBUF, Zero, PIO0) CreateDWordField (PBUF, 0x04, DMA0) CreateDWordField (PBUF, 0x08, PIO1) CreateDWordField (PBUF, 0x0C, DMA1) CreateDWordField (PBUF, 0x10, FLAG) Store (GETP (PRIT), PIO0) Store (GDMA (And (SYNC, One), And (ICR3, One), And (ICR0, One), SDT0, And (ICR1, One), DMA0) If (LEqual (DMA0, Ones) Store (PIO0, DMA0) If (And (PRIT, 0x4000) If (LEqual (And (PRIT, 0x90), 0x80) Store (0x0384, PIO1) Else Store (GETT (PSIT), PIO1) Else Store (Ones, PIO1) Store (GDMA (And (SYNC, 0x02), And (ICR3, 0x02), And (ICR0, 0x02), SDT1, And (ICR1, 0x02), DMA1) If (LEqual (DMA1, Ones) Store (PIO1, DMA1) Store (GETF (And (SYNC, One), And (SYNC, 0x02), PRIT), FLAG) Return (PBUF) Else Return (Zero) Return (Zero) 最后两行Return(Zero)就是解决问题的两 行了。还有一种解决方法就是把Method (_GTM, 0, NotSerialized)改写成Method (_GTM),同样能去掉警告信息,不过我没有试过!对于1. 11dsdt.dsl 8623: Name (_T_0, Zero)2. Remark 5110 - Use of compiler reserved name (_T_0)这样的问题,采用把_T_0“改成T_0的 方法来解决。这样就可以做到Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 35 Optimizations鉴于每次进系统都要先五国一次才能正常进入,上论坛求助无果,决定用加法排查法找到 问题所在,就是在原始dsdt的基础上每修改一处代码就编译一次,然后放入drawin进一次mac,最后查到是声卡代码的问题导致五国。删除声卡代码, 用原始代码(AZAL)+voodooHDA驱动,解决问题。在排查过程中还发现了几个问题1、防止bios重置的RTC代码无需修改,也未发现bios重置问题,故决定用自带的代码;2、在HPET代码中也无需修改,只要加入了AppleLPC代码,一样可以加载原生cpu电源管理驱动,同时防止声音变形的那两处PNP0100和 PNP0000也不用修改,用voodooHDA驱动也不会出现声音变形。3、在Device (LPC)函数内加入1. Device (PNLF) Name (_HID, EisaId (APP0002) Name (_CID, backlight) Name (_UID, 0x0A) Name (_STA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学生交通安全知识教育主题班会课件
- 2026年度幼儿园教学骨干工作汇报课件:家园共育的实践与探索
- 山东省名校联盟2027届高三上学期开学全域学情综合诊断历史试卷(含答案)
- 30万立方米天然气储罐扩容项目可行性研究报告
- 2026年武术套路测试题及答案
- 2026年人体免疫系统测试题及答案
- 项目管理试题及答案
- 字体设计试题及答案
- 2026年大一c语言考试笔试题库及答案
- 2026年五上音乐测试题及答案
- 中华护理学会呼吸科专科护士考试题库(附答案)
- 腹透患者心理健康教育
- 景区安全工作培训课件
- 医疗咨询服务合同范本
- 综合实践设计参观农业基地
- 《SMT贴片技术培训》课件
- 2024年新人教版7年级道德与法治上册全册课件
- N1叉车司机作业模拟考试1000题及答案
- 外聘法律顾问报名表(律师事务所)
- 华东师大版八年级体育与健康全册教案
- (正式版)JBT 14762-2024 电动摩托车和电动轻便摩托车用阀控式铅酸蓄电池
评论
0/150
提交评论