分享

简单教程:看图学DSDT及SSDT制作

 长翅膀的牛8558 2017-08-19
本帖最后由 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那就代表内建成功



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多