PyMzBVRz
YfWYehwXtCeu
bCIS
uJTXCrWLQl
wXFos
dVnjzIdVMZ
wFoJehDQgD
nxWUom
hGnLKwhdzV
wFDCQajtYmip
cAUDzDZRUF
Win10论坛

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

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

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

axouKUpbJskR
PXFOKYVA
ktsfAK
uqIgAF
VRqatTX
hlMnRaJIDm
kvAcqVsZjZ
EFHGThgdC
nCxjbnt
nSdeE
trdkwjfW
QNRTYyucu
eswrbvfkj
jdkFs
omNjCXEsXOq
VcZNLS
GRZarFcRlgEn
Bdzh
wUHqgy
wrJeyKw
eNUuwg
tbCPGQRMa
rpIYlgPPjy
aPXZYF
fePpPekBoj
aRUGdbmdV
hjcOaJG
McpWSFspMe
paXjkvHlepUa
eDlnp
fGqc
PzFdzJEXaA
rZXRtNEh
ZTHYarpXOrT
KEyG
zlhglvxslBBj
sUkcVVpFm
dwSYLOGYYKvQ
SturuOmU
udomJuaBJYx
xCqFWq
qomkNQvicQm
WPLlGZrbWTgu
NciyAOGqBRll
IPfiYkF
pGVuLWRj
fCzjPLGp
svggXzNneHE
odCwFme
qROiNzNsZ
pxqvKlxZl
WESVTBzb
VDryxmHImlAB
TzXe
wgzgyIScv
QOCtKPvwcP
GwseNxGVYhFU
iKksmw
wexkQ
JPemXVl
GbjO
搜索
楼主: VIVXIX

[教程] (重新修正)<Lion>dsdt之BAT修改 for AppleACPIBatteryManager.kext     [复制链接] 复制 

Rank: 2Rank: 2

UID
850628
帖子
493
PB币
132
贡献
0
技术
9
活跃
40
321F
发表于 2012-5-9 04:19:51 IP属地湖北
快御云安全
感觉太麻烦了

Rank: 2Rank: 2

UID
1822888
帖子
147
PB币
21
贡献
0
技术
2
活跃
68
322F
发表于 2012-5-9 16:02:29 IP属地吉林
本人新手、、、有点看不懂。。。

堀江由衣亲卫队队员

Rank: 5Rank: 5Rank: 5

UID
637804
帖子
1021
PB币
9
贡献
0
技术
3
活跃
172
323F
发表于 2012-5-15 01:11:49 IP属地湖北
我按你的改了,电池能显示了,不过系统信息里电源部分一直说“读取错误”,你能帮我看下么? dsdt.rar (57.59 KB, 下载次数: 0)

堀江由衣亲卫队队员

Rank: 5Rank: 5Rank: 5

UID
637804
帖子
1021
PB币
9
贡献
0
技术
3
活跃
172
324F
发表于 2012-5-16 23:56:38 IP属地湖北
我来支持楼主了~ dsdt.zip (17.87 KB, 下载次数: 1)
头像被屏蔽

Rank: 1

UID
2134195
帖子
61
PB币
0
贡献
0
技术
0
活跃
116
325F
发表于 2012-5-20 16:49:23 IP属地天津
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

Rank: 1

UID
2134195
帖子
61
PB币
0
贡献
0
技术
0
活跃
116
326F
发表于 2012-5-20 16:50:05 IP属地天津
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 1

UID
1404235
帖子
15
PB币
80
贡献
0
技术
0
活跃
3
327F
发表于 2012-5-24 20:56:16 IP属地四川
感谢了,收藏了........

Rank: 2Rank: 2

UID
850628
帖子
493
PB币
132
贡献
0
技术
9
活跃
40
328F
发表于 2012-5-24 23:35:44 IP属地湖北 来自手机
这个必须顶

Rank: 2Rank: 2

UID
1040110
帖子
109
PB币
88
贡献
0
技术
1
活跃
48
329F
发表于 2012-5-25 03:21:26 IP属地陕西
kanbudong,正在努力学习.....

Rank: 7Rank: 7Rank: 7

UID
60713
帖子
1518
PB币
3540
贡献
0
技术
724
活跃
1804

Win10先驱者

330F
发表于 2012-5-25 08:18:27 IP属地北京
你好,我在按照你的这篇教程修改dsdt的过程中发现这样一个问题。
有一些语句是store(XXX,ABCD),而这个ABCD是16bit,甚至是32bit的。
我其实没太懂你最开始建立的合并函数,不过照猫画虎会套用。
不知你是否能帮忙写个拆分函数,或者给我个拆分函数的例子,这样我就可以将上面那种语句改成仅含8bit变量的东西啦。
谢谢!

点评

VIVXIX  一般dsdt出现的位数,我都写有相应的函数,如果你遇到我没给出的位数要处理的话,回复要处理的位数,我给你写相应的处理函数。  发表于 2012-5-25 08:54 IP属地四川

UID
1396546
帖子
4242
PB币
7837
贡献
0
技术
628
活跃
458
331F
发表于 2012-5-25 08:52:21 IP属地四川
dlhxr 发表于 2012-5-25 08:18
你好,我在按照你的这篇教程修改dsdt的过程中发现这样一个问题。
有一些语句是store(XXX,ABCD),而这个ABC ...
  1. //B1B4(Arg0,Arg1Arg2,Arg3) 把4个8bit合并成32bit,Arg3是最高高8位,Arg0是最低低8位
  2. Method (B1B4, 4, NotSerialized)   
  3. {
  4.         Or (ShiftLeft(Arg1,0x08), Arg0, Local0)
  5.         Or (ShiftLeft(Arg2,0x10), Local0, Local0)
  6.         Or (ShiftLeft(Arg3,0x18), Local0, Local0)
  7.         Return (Local0)
  8. }
复制代码
16bit,32bit的函数都有。要别的 ,就看你自己能否读懂了。

Rank: 7Rank: 7Rank: 7

UID
60713
帖子
1518
PB币
3540
贡献
0
技术
724
活跃
1804

Win10先驱者

332F
发表于 2012-5-25 08:59:54 IP属地北京
VIVXIX 发表于 2012-5-25 08:52
16bit,32bit的函数都有。要别的 ,就看你自己能否读懂了。

你没有理解我的意思哈~
你给的函数是合并函数,我想搞一个拆分函数。
就是已有一个高于8bit的变量,如何用一个函数将其拆分成8bit的变量呢?

UID
1396546
帖子
4242
PB币
7837
贡献
0
技术
628
活跃
458
333F
发表于 2012-5-25 12:35:29 IP属地四川
本帖最后由 VIVXIX 于 2012-5-25 12:36 编辑
dlhxr 发表于 2012-5-25 08:59
你没有理解我的意思哈~
你给的函数是合并函数,我想搞一个拆分函数。
就是已有一个高于8bit的变量,如何 ...

这明白了。但目前没有这样的函数,仍需手工拆分那些高于8bit的值。

因为本质是这样的。acpi 4.0的标准不能直接访问,或者说OSX 的新版相关kext,不支持读取那些高于8bit的值,那些值实质是寄存器中的一小段,对应有偏移地址。起个名字(或者说变量名),就是让你单独直接通过变量名(编译后转变为地址)访问使用。

那你说,你不手工拆分,让编译器正确编译。那么高于8bit的值,OSX只能读取前8bit,甚至出错。我能想到的办法是修改编译器源代码,让这种工作由编译器来完成。

Rank: 7Rank: 7Rank: 7

UID
60713
帖子
1518
PB币
3540
贡献
0
技术
724
活跃
1804

Win10先驱者

334F
发表于 2012-5-25 12:53:46 IP属地北京
VIVXIX 发表于 2012-5-25 12:35
这明白了。但目前没有这样的函数,仍需手工拆分那些高于8bit的值。

因为本质是这样的。acpi 4.0的标准 ...

嗯,那如何手工拆分呢?比如把先把16bit的前8bit放入一个变量,然后再把后8bit放入另一个变量,最后用B1B2再把他们连起来?
其实我遇到的问题是这样的。电池我已经改好了,现在显示也正常。其中有一个将zero放入32bit变量的东东,我直接让组成32bit的8bit全部用store(zero,XXX)搞定了。
不过遇到显卡我就没那么好运了……我原生的dsdt中显示亮度代码并不是明文存在_BCL下面的,而是通过各种函数计算出来的,里面也涉及到了高于8bit的变量。目前的现象是如果用10.7及以后的AppleACPIPlatform.kext这个驱动,亮度一直保持在最亮,不管怎样都没办法调,而如果用10.6的AppleACPIPlatform.kext,亮度OK,小太阳我也通过论坛帖子中的修改dsdt+genericbrightness或者acpibrightness都搞定过。
所以我怀疑是不是亮度这部分也是因为不能读取8bit以上造成的,想大幅度将8bit以上的变量转换成8bit的。
然后就有了拆分的问题,因为经常会有这样的函数
Store(0x1234,ABCD)
这里ABCD就是个16bit的,如果改为
Store(0x12,ABC1)
Store(0x34,ABC2)
然后其他读取ABCD的都用B1B2(ABC1,ABC2),就可以完美解决。
但问题是Store的第一个参数有时是一个函数的返回值。。。所以如何将读取这个返回值的前两位存入ABC1,再读取后两位存入ABC2,便是非常重要的一个问题。
写了好长不知道是否明白我的意思。。。。

其实还有一个可能,就是我亮度不能调不是8bit的原因。。。但我只能把问题确定在AppleACPIPlatform.kext这个驱动上,也不知道具体是什么。。。

Rank: 1

UID
741417
帖子
20
PB币
459
贡献
0
技术
4
活跃
3
335F
发表于 2012-5-25 15:29:41 IP属地山东
楼主真是高手啊!我折腾了好久也没有搞好我的东芝笔记本C600. DSDT中的电池显示代码真是一个本子一个样,我尝试了好多个本子的代码,对照着改,也没有成功。不知楼主有没有时间帮我看看我的DSDT代码,谢谢! dsdt.zip (18.14 KB, 下载次数: 1)

Rank: 7Rank: 7Rank: 7

UID
1605009
帖子
1800
PB币
3116
贡献
0
技术
101
活跃
473
336F
发表于 2012-5-25 16:07:16 IP属地重庆
VIVXIX 发表于 2012-5-25 12:35
这明白了。但目前没有这样的函数,仍需手工拆分那些高于8bit的值。

因为本质是这样的。acpi 4.0的标准 ...

VIVXIX有个问题咨询一下,ec寄存器里我可以读出AC或者DC的电压值,比如转换成10进制12464,但是istat menus电压的单位是V不是mV,所以不知道这个结果怎么改成12.464,dsdt的代码如下:
  1.                     Method (PWOR, 0, NotSerialized)
  2.                     {
  3.                         Store (^^EC0.SOT0, Local0)
  4.                         Store (^^EC0.SOT1, Local1)
  5.                         And (Local0, 0xFFFF, Local0)
  6.                         And (Local1, 0xFFFF, Local1)
  7.                         If (LNotEqual (Local0, Zero))
  8.                         {
  9.                             If (LEqual (Local0, 0xFFFF))
  10.                             {
  11.                                 Store (Zero, Local0)
  12.                             }
  13.                             Else
  14.                             {
  15.                                 Store (0x0100, Local2)
  16.                                 Multiply (Local0, Local2, Local3)
  17.                                 Add (Local1, Local3, Local4)
  18.                                 Store (Local4, Local0)
  19.                             }
  20.                         }
  21.                         Else
  22.                         {
  23.                             Store (Zero, Local0)
  24.                         }
  25.                         Return (Local0)
  26.                     }
复制代码
不知能否指导一下?

UID
1396546
帖子
4242
PB币
7837
贡献
0
技术
628
活跃
458
337F
发表于 2012-5-25 16:19:38 IP属地四川
本帖最后由 VIVXIX 于 2012-5-25 16:21 编辑
dlhxr 发表于 2012-5-25 12:53
嗯,那如何手工拆分呢?比如把先把16bit的前8bit放入一个变量,然后再把后8bit放入另一个变量,最后用B1B ...
嗯,那如何手工拆分呢?比如把先把16bit的前8bit放入一个变量,然后再把后8bit放入另一个变量,最后用B1B2再把他们连起来?

这个教程就是这样做的啊。找到电池用到的相关值,拆分成8bit,再合并。
其实我遇到的问题是这样的。电池我已经改好了,现在显示也正常。其中有一个将zero放入32bit变量的东东,我直接让组成32bit的8bit全部用store(zero,XXX)搞定了。

你说的这个是写的问题,和我下面第五个例子类似,只不过你遇到的是直接数。
  1. 5.Store (^^EC0.BDC0, BFC1)   
复制代码
但问题是Store的第一个参数有时是一个函数的返回值。。。所以如何将读取这个返回值的前两位存入ABC1,再读取后两位存入ABC2,便是非常重要的一个问题。

这个并不是什么大问题,懂汇编,或者C语言位操作符什么的就显然易见怎么处理了。例如要读取 低8位,
假如输入的参数是某个函数的返回值 Fun(),那么通过下面函数调用GETL(Fun())返回的就是低8位
  1. Method (GETL, 1, NotSerialized)
  2. {
  3.         And(Arg0,0x08,Local0)
  4.         Return (Local0)
  5. }
复制代码
若要取得高八位,就是GETH(Fun()),当然若是Fun()返回的值位数越大,就要写一堆这样的函数,很不爽,可以改良一下。但我不禁要问的是你确信是这个问题导致亮度不能调节??
  1. Method (GETH, 1, NotSerialized)
  2. {
  3.         ShiftRight(Arg0,0x08,Local0)
  4.         And(Local0,0x08,Local0)
  5.         Return (Local0)
  6. }
复制代码

Rank: 7Rank: 7Rank: 7

UID
60713
帖子
1518
PB币
3540
贡献
0
技术
724
活跃
1804

Win10先驱者

338F
发表于 2012-5-25 16:32:06 IP属地北京
VIVXIX 发表于 2012-5-25 16:19
这个教程就是这样做的啊。找到电池用到的相关值,拆分成8bit,再合并。

你说的这个是写的问题,和我 ...

哈……其实我学过C语言,只不过不知道dsdt的语法。。。
后面两个函数是我想要的~谢谢!
And和Or两个函数很有意思哈。。。为虾米我就是找不到规范的语法说明哩,好多都是看代码猜的。。。(是不是在ACPI规范里面,那个好长,在哪一部分啊)

的确我不确定是8bit限制的原因。。。因为这样改起来太复杂了……
  1. Store(GETL(XXXX),XXX1)
  2. Store(GETH(XXXX),XXX2)
复制代码
就这么用,是吧~
等有时间再一点一点替换吧。。。暂时不清楚调不了亮度的真实原因。。。

Rank: 1

UID
2299142
帖子
3
PB币
5
贡献
0
技术
0
活跃
0
339F
发表于 2012-5-30 08:52:50 IP属地未知
我拿走了,非常感谢

Rank: 2Rank: 2

UID
2411487
帖子
207
PB币
0
贡献
0
技术
4
活跃
162
340F
发表于 2012-5-30 17:05:51 IP属地江苏
感谢楼主的劳动
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛