收藏一篇文章 2e软超频方法

 

X档案-其实2E盒子也可以实现动态调节频率!

http://www.lemote.com/bbs/viewthread.php?tid=16061

我又来抛砖引玉啦,嘿嘿,虽然现在说“自动动态调节”还算不上, 但是经过我的实践已经可以通过软件调节外频,这样喜欢折腾超频的同学不用拆开盒子了,即使你不喜欢超频,降频也还是有好处的吧,比如说下BT的时候把外频 降到最低,既降温又省电还长寿,等下载完了看电影时再把频率升上去,甚至还可以稍微超点以对付码率较高的片子,反正这一切都不需要拆开盒子甚至不需要重 启,随便怎么折腾,一条命令立即见效,哈哈~

好,现在切入正题,首先拆开盒子看一下它用的是什么PLL IC,电路板正面音频插孔旁边那颗就是啦,最明显的特征就是旁边有颗晶振。2E盒子用的PLL IC型号是Winbond W83194BG-B,在华邦的网站上可以下载到它的datasheet:
http://www.winbond.com/hq/enu/ProductAndSales/ProductLines/ComputerLogicIC/ClockGenerator/ClockforIntelChipsets/W83194BG-B.htm
(还是lead free的哦,环保意识不错,表扬一下)

这颗IC提供了FS[4:0]一共5个bit来设置时钟频率,盒子的主板上只提供了FS[3:0]这4位的跳线,对照了一下盒子的主板说明书,它使用的是 3V66这一路时钟输出,而不是CPU,3V66可以在56.7MHz~100MHz之间调节,唔~够用了,而且可以通过I2C总线修改Reg0中的 SSEL[4:0]来调节,那我们赶快跳到I2C去吧。

盒子自带的内核没装I2C驱动,需要自己编译一下,编译内核的方法参考论坛里其他帖子吧,找不到就用摆渡,搜索栏里加上site:www.lemote.com)。 menuconfig的时候把Device Drivers->I2C support->下面的I2C support和I2C device interface选上,还有I2C Hardware Bus support->下面的VIA 82C596/82C686/823x也选上。

然后还需要apt-get install lm-sensors软件包,我们所要用到的作案工具都在里面了。如果你的I2C device interface是编译成模块的话还要先modprobe i2c-dev加载一下驱动。

然后运行

CODE:
sudo i2cdetect -l

会发现一条SMBus,bus number是0,接着运行

CODE:
sudo i2cdetect 0

会发现3个设备,地址分别是0x2d,0x50,0x69,如果运行

CODE:
sudo sensors-detect 0

还 可以帮我们识别出0x2d是lm80,0x50是内存上的SPD EEPROM,ISA总线上还挂着VT82C686 Integrated Sensors,呵呵,有空再研究一下sensor,看看电压温度什么的正不正常。那只有0x69没识别出来了,它是否就是我们要找的PLL IC呢?bingo!猜对了!
可它的datasheet里明明写着“The I2C address is defined at 0xD2"呀?这个问题也困扰了我一阵,后来down了一份I2C的spec大概看了下,忽然开窍了,I2C只用了高7位寻址,第0位是读写控制位,怪不 得i2cdetect最多只会搜索0x00~0x7f,那么把0xD2右移一位(除以2)不就是0x69了吗,哈哈,豁然开朗
运行

CODE:
sudo i2cdump 0 0x69

就 可以显示出这颗PLL IC的寄存器值了,由于采用的是默认的byte读写方式,"The registers NO. is increased by 1 if use byte data read/write protocol",所以reg0就应该用地址0x01访问。而地址0x0c和0x0d的值分别是0x32和0x11,从DS得知这两个寄存器是chip ID,身份确认是W83194BG-B无疑了,而且是VERSION A的芯片,注意A和B的频率表有几项不一样的,DS后面有个表格说明,之前列出来的是VERSION B的表。
reg0的bit6~2分别对应SSEL4~0,bit1则是EN_SSEL,0表示通过硬跳线选择频率,1表示通过软件选择频率。知道这些我们就可以通过i2cset调节频率了,激动人心的时刻即将来临。
比如查表得知56.7MHz的SSEL[4:0]=01101,72.7MHz的SSEL[4:0]=00101,那么对应的命令分别是

CODE:
sudo i2cset 0 0x69 0x01 0x36 # 56.7MHz
sudo i2cset 0 0x69 0x01 0x16 # 72.7MHz

怎 么验证我们的设置有没有生效呢,我尝试了运行nbench,没有变化;mplayer -benchmark,也没有变化。可是用mplayer正常播放同一部电影,视频解码的CPU占用率56.7MHz明显比72.7的高,而且在 56.7MHz下因码率较高而出现音像不同步的片段在72.7MHz下则播放的很流畅毫无停顿,CPU占用率还不到100%,可见设置是生效了的。我猜测 可能那些benchmark用的是软件时钟而不是RTC时钟,频率快了之后它们的时钟也快了,所以最后算出来的结果不变。当然还有一种终极检验方法,那就 是重启,只要不断电,PLL的设置是不会变的,所以如果你重启的话就会看到CPU主频已经变了。

我的linux知识有限,编程也快忘光了,所以那些砖啊玉啊也只能抛到这了,呵呵,如果有高手帮忙写成个小软件,或者解决一下上面说的时钟的问题,那就是我们2E用户的福气啦。我目前只会把那两条命令写成脚本,降频超频一条命令搞定。



LFLM010018 / 2007.01.05
Fulong 2E + ZyDAS ZD1211 802.11 b/g wifi usb dongle