目前网络上流传的检测树莓派 CPU 和 GPU 的温度主要是两个脚本,例子在这里(树莓派-GPIO、CPU、温度、内存 和 用Python小程序获取树莓派的CPU和GPU温度)
我分别认真读了两段脚本,发现一个问题,截图如下:
如图所示,两个红框圈出来的地方,读取的是同样的内容,但一个是作为 CPU温度,另一个是作为 GPU温度。并且,运行结果也不一样,截图如下:
如图,其中第一个跑的脚本是对应第一图中右边一个脚本,第二个跑的脚本对应第一图中左边一个脚本。时间相差不超过2秒。
我的设备情况是:树莓派 2代,CPU 和 GPU 均贴了一块铜质散热片,未装入盒子内,使用 iPad mini 1代的充电头和摩托罗拉手机的 micro USB 线供电,使用网线接入路由器,采用 SanDisk Class10 8GB TF卡,刷入的系统为 2015-02-16-raspbian-wheezy,入手后未安装其他软件。
想问一下,到底哪一个才是正确的。
2015-03-11更新:
根据答案部分@eziozl 前辈的回答,查看了他提供的wiki,注意到下图中这样一部分内容:
这里的资料表明,vcgencmd measure_temp
测出的是 CPU 的核心温度,那么现在的问题是,根据@沙渺 前辈的回答:以CPU名义注册的温度传感器也只有一个,位于/sys/class/thermal/thermal_zone0
。所以这两者都表示 CPU温度,所以想问,GPU 的核心温度怎么获取?
而根据@eziozl 前辈给出的另一个链接里看到如下图这样的内容:
这是否说明,其实所谓获取到的 CPU温度 就是 CPU 和 GPU 的温度?如何区分两者呢?
vcgencmd
當然只有一個,位於/opt/vc/bin/vcgencmd
。vcgencmd
及所屬的/opt/vc
軟體包,都是和VideoCore通訊的閉源程式(看名字就知道了)。而以CPU名義註冊的溫度感測器也只有一個,位於
/sys/class/thermal/thermal_zone0
。所以CPU和GPU溫度分開測量,當然兩者都是可信的。尤其是對於其實有4個CPU核心的Pi2來說更是如此。
測量結果不穩定的現象,具體來看表現為溫度資料的更新其實是在「亂飄」。即使在同一個時間點(都不用差1秒)也可能讀到兩個差很多的資料值。可以嘗試以下命令來觀察這個現象。
while :; do cat /sys/class/thermal/thermal_zone0/temp; done
while :; do vcgencmd measure_temp; done
但我確實不能解釋這個是為什麼。
都是準確的,建議你同時執行兩個程式看看,這兩個文件都是系統產生文件,可以反應os從cpu取得的當時溫度。
具體可以參考:https://wiki.archlinux.org/index.php/Raspberry_Pi
http://elinux.org/RPI_vcgencmd_usage