科技改變生活 · 科技引領未來
大家應該都看過一些大佬發的電腦CPU烤肉的視頻,電腦CPU的溫度真的有那么高嗎?我們一起來看一下咱們電腦CPU的溫度是多少?
PC端CPU溫度的方式有很多種,比較簡單的可能就是Windows下安裝一些跑分軟件,通過這些軟件可以看到CPU的溫度,比如魯大師:
另外,Linux下也有很多手段查看,這里不做介紹。
下面我們介紹一些我么跑Linux的嵌入式設備CPU溫度的方法。要獲取得到CPU溫度肯定需要傳感器(不知道CPU的溫度是不是這樣采的)、相關驅動等。這些偏底層的我們就不去研究了,先用起來。
Linux內核中一般都帶有CPU溫度檢測的驅動,與CPU相關的設備文件/sys、/proc中。我這里用的是百文網的開發板,其出廠帶的系統CPU溫度對象的虛擬文件在/sys/devices/virtual/thermal/thermal_zone0中,我們該目錄下的temp文件就可以得到CPU的溫度。比如:
cat /sys/devices/virtual/thermal/thermal_zone0/temp
這里的54242代表的是54.242℃。
我們讀取查看一個文件的內容,可以直接在shell命令行查看,也可以通過編程的方式查看。編碼之前我們看一個圖:
這是學習嵌入式Linux必須要熟知的一個基礎圖。我們編寫應用程序可以有兩種方法:一種是直接系統調用層接口(即open、 read、 write 等函數)、另一種是調用glibc的接口(即fopen、 fread、 fwrite 等 函數)間接地調用系統調用層接口。
這里我們使用調用glibc的方式來編寫我們讀取CPU溫度的應用程序,代碼:
// 公眾號:嵌入式大雜燴
include
include
include
// include
int main(int arc, char *argv[])
{
FILE *fp = NULL;
unsigned int temperature = 0;
fp = fopen (&34;/sys/devices/virtual/thermal/thermal_zone0/temp&34;, &34;r&34;);
if (fp < 0)
{
printf(&34;fopen error!n&34;);
exit(1);
}
while(1)
{
fscanf(fp, &34;%d&34;, &temperature);
printf(&34;cpu temperature: %d.%dn&34;, temperature/1000, temperature%1000/100);
sleep(1);
}
fclose(fp);
return 0;
}
交叉編譯、傳到板子里,運行:
以上就是本次關于獲取CPU溫度的分享,如有錯誤,歡迎指出,謝謝
1024G 嵌入式資源大放送!包括但不限于C/C++、單片機、Linux等。私信回復1024,即可免費獲取!
陳俊林