CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 11394|回复: 4

查看CubieBoard1的CPU温度

[复制链接]
发表于 2014-8-11 19:02:42 | 显示全部楼层 |阅读模式
本帖最后由 helloguy 于 2014-8-11 19:13 编辑

我有一块CubieBoard1一直苦于无法得到CPU的温度。最近看到“如何得知 CubieTruck CPU 溫度”,既然A20都有温度传感器,那A10应该也带有。通过A20的User Manual发现温度传感器寄存器位于CPU触摸屏控制器(TP Controller)中。反过来查找A10的User Manual 发现A10也是一样的,只是手册中时一笔带过的,甚至连寄存器地址都写错了。A10的温度数据寄存器位于0x01c25020,低12位有效。与A20的地址是一样的。
        既然如此就好办了:
第一步,加载SUNXI调试模块(我用的是CBOS系统,用lubuntu的可以自己试试):
  1. modprobe sunxi-dbgreg
复制代码
没任何提示,说明加载成功。
第二步,将文中的脚本复制到CubieBoard下发现无法使用,一大堆错误提示。
        原脚本如下:
  1. #! /bin/sh

  2. echo ‘f1c25000:27003f’ > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write;
  3. echo ‘f1c25010:40000′ > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write;
  4. echo ‘f1c25018:10fff’ > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write;
  5. echo ‘f1c25004:10′ > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write;
  6. echo ‘f1c25020′ > /sys/devices/virtual/misc/sunxi-dbgreg/rw/read;

  7. output=$(tail -n 1 /var/log/syslog | awk ‘{print $7}’)
  8. degree=$(((output-1447)/10))
  9. point=$(((output-1447)%10))
  10. printf “Your CubieTruck’s CPU current temperature is ‘\033[31m%d.%d\033[0m’ degree Celsius.\n" $degree $point
复制代码
于是研究了一下脚本,发现是对相关寄存器的操作,模仿的改了好久脚本终于可以使用了。
        脚本大致如下(现在没开CubieBoard凭印象改的):
  1. #! /bin/sh
  2. echo f1c25000:27003f > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write
  3. echo f1c25010:40000 > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write
  4. echo f1c25018:10fff > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write
  5. echo f1c25004:10 > /sys/devices/virtual/misc/sunxi-dbgreg/rw/write
  6. echo f1c25020 > /sys/devices/virtual/misc/sunxi-dbgreg/rw/read
  7. output=$(demsg | tail -n 1 | awk '{print $3}')
  8. degree=$(((output-2000)/10))
  9. point=$(((output-2000)%10))
  10. printf "Your CubieBoard’s CPU current temperature is '\033[31m%d.%d\033[0m' degree Celsius.\n" $degree $point
复制代码
将脚本保存为temperature.sh(名字可以任意,扩展名要为.sh)。
        其中 第2句话是表示向虚拟地址为0xf1c25000的寄存器写入数据0x0027003f,虚拟地址0xf1c25000即代表物理地址为0x01c25000的寄存器(TP Control Register 0)(具体可查看A10的User Manual ,在这里可以找到   http://docs.cubieboard.org/resources   呃,A10的手册中写错了,可以看看A20的手册)。
        第6句话实现将虚拟地址为0xf1c25020的寄存器(Temperature Data Register)数值读出,数值打印在dmesg最后一行。
        第7句话,表示将dmesg日志最后一行的第三个空格后的数值赋值给output变量。
        第8、9、10 三句话分别完成计算并取出温度的整数部分、小数部分、显示结果。
第三步,添加可执行权限:
  1. chmod +x temperature.sh
复制代码
输入  ./temperature.sh 即可看到打印出CPU的温度了。
        原文中使用的是减去1447,发现实际输出值有90多。于是改到2000,输出37度左右,应该差不多。具体要减多少,还需要标定。
        sunxi-dbgreg寄存器调试模块的用法可以使用
  1. cat /sys/devices/virtual/misc/sunxi-dbgreg/rw/write
复制代码
         查看。
        在开机第一次运行脚本前需要加载sunxi-dbgreg模块,如第一步所示。
PS:吐槽下AllWinner的手册,做的不好,约等于仅仅说了各个寄存器的名称,数值具体含义都没说。还有些错误,有的甚至直接省略。..|.,
以上。






回复

使用道具 举报

发表于 2014-8-12 21:42:39 | 显示全部楼层
帖子不错,有用
回复 支持 反对

使用道具 举报

发表于 2014-9-7 09:50:23 | 显示全部楼层
你的脚本中也有错误,dmesg拼错了
回复 支持 反对

使用道具 举报

发表于 2014-9-7 09:51:10 | 显示全部楼层
而且在cubie的环境下,我的应该是
output=$(dmesg | tail -n 1 | awk '{print $2}')
回复 支持 反对

使用道具 举报

发表于 2015-7-7 20:45:40 | 显示全部楼层
我测的温度是33.5度,有测过的哥们吗?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-5-6 12:43 , Processed in 0.023143 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部