原文:http://zengyi2008.blog.163.com/blog/static/121420642008729112454756/
龙芯2F频率调节
把我在 另一个帖子灌水时翻阅的一些资料整理一下
参考网站:
http://www.kd50.ustc.edu.cn/
http://www.st.com/stonline/products/families/computer/microprocessors/loongson.htm
http://www.loongsondeveloper.com/
datasheet: http://www.st.com/stonline/products/literature/bd/13577/stls2f01.pdf
UserGuide中文版: http://www.kd50.ustc.edu.cn/docs/loongson2f-userguide.pdf
UserGuide英文版: http://www.loongsondeveloper.com/doc/Loongson2FUserGuide.pdf
HardwareReference: http://www.loongsondeveloper.com/doc/stls2fhdref.pdf
序幕:
缘起于有意无意地摆渡到此处
http://www.lemote.com/bbs/viewthread.php?tid=5654&page=1&fromuid=460#pid49063
foxsen有云:“2F有8档可以软件设置的频率,从0到全速。”
第一幕:
继而摆渡到中文版UserGuide,其116和117页的表格透露了天机
表 11-6 寄存器详细描述
位域 字段名 访问 复位值 说明
CR80: Chip_config0
2:0 Freq_scale 读写 3'b111 软件降频控制
CR94: Chip_sample1
9:0 sys_clksel 只读 sys_clksel 时钟倍频控制引脚值
CR80的bit2:0,3位二进制位,8种组合,而且是可读写的,应该就是foxsen高人所指点的寄存器了。另外它的复位值是111,从常理理解这应该是最大值,也就是说CPU复位之后即工作在最高频率,软件只能通过这个寄存器把它调小,不然就不叫“降频控制”而叫“超频控制”了 。
至于CR94,“时钟倍频控制”着实让我兴奋了一下,可惜是只读的,看来这只是引脚值的采样寄存信号,要改倍频还得找到引脚定义通过硬跳线改啊。
第二幕:
继续对着UserGuide YY,居然让我找到个BUG,107页表 11-1IO地址空间分配说的是0x1fe00000开始的256字节是Registers,接下来的0x1fe00100的256字节是PCIHeader,可后面的文字描述却正好相反,0x1fe00100开始的是Registers! 唉,暂且以文字描述为准吧,那么CR80寄存器的地址就应该是0x1fe00180。
我没有2F盒子,以下纯粹纸上谈兵。记得一点PMON的命令,内存读命令是d,写命令是m,测试CPU频率的命令是test 8。
如果之前的推断正确的话
[Copy to clipboard] [
- ]
CODE:
d -b 0x1fe00180
读出来的应该是复位值0x17,把它改小一点,比如0x16,再看看CPU频率,应该会变小一点
[Copy to clipboard] [
- ]
CODE:
m -b 0x1fe00180 0x16
test 8
第三幕:
CR80控制寄存器只能降频,看来其目的是在于高级电源管理以降低功耗,那么想超频怎么办呢?从CR94入手吧。
总于让我通过ST的网站找到了HardwareReference,14页的Clocksignals有两组控制引脚,CLKSEL[4:0]是控制CPU的倍频的,CLKSEL[9:5]是控制DDR内存的倍频的,正好对应CR94的bit9:0,是不是跟2E很像啊,不知道2F的板子上有没有把跳线引出来,如果没有的话就比较麻烦了,44页有pinarrangement,骨灰级的想想怎么hacking吧。
结局:
CR80控制寄存器对笔记本的意义还是很大的,通过对cpufreq之类的patch实现动态频率调节,可以减少发热延长电池使用时间。
要想超频的话看来还是得来硬的,不过也别报太大希望,看看datasheet的revision history,6月6号的更新把clock frequency改成900MHz了,看来2F要想上1G还有点难。