您的位置:首页 > 运维架构 > Linux

技巧05監測樹莓派的硬件命令_Linux 技巧05監測樹莓派的硬件 命令用法详解:

2018-10-16 13:51 1631 查看

你是否擔心你不在家時你的Pi投身瘋狂派對?這個技巧是關於如何弄個攝像頭對準它並將視頻傳輸到Internet上的。開個玩笑!這個技巧中的工具只能監測你的這個小巧硬件的物理狀態。

一個“正常的”Linux計算機可能會包括板載健康監測傳感器,有相當多的監控芯片和元器件被用在各種系統上,但是對於樹莓派來說,所有的硬件完全隱藏在Broadcom片上系統裏面,因此你無法使用通常的方式訪問它。

為了能夠使用這些元器件監視你的Pi的健康,需要使用vcgencmd實用工具。任何可用的通用樹莓派Linux發行版應該已經預安裝了這個工具。如果你的發行版編譯為支持ARM硬浮點,你可以在hardfp/子目錄下查找,否則,可以在opt/子目錄下查找。

檢查硬浮點

在寫這篇文章的時候,大多數Linux發行版(包括Pidora、Raspbian、Occidentalis、OpenELEC以及RaspBMC等)被構建為支持ARMv6硬浮點架構,因為這樣可以提供樹莓派的最佳性能。然而這些目標平臺的一些老版本(以及其他操作系統平臺)被構建為優化的ARMv6的軟浮點。這兩種優化級別彼此互不兼容。在Linux上,有一種很好的方法來檢查是否支持ARMv6硬浮點,即使用readelf命令:

 



https://yqfile.alicdn.com/adc8c1bba7bdbf20fd9d8b6b4783d940fcde974a.png" >

你可以在树莓派的Linux发行版上直接运行此命令(可能需要先安装elfutils软件包),或者你也可以很方便地从已经装有readelf工具的树莓派Linux发行版并通过其他系统复制一份二进制文件或库文件。

如果二进制文件支持ARMv6硬浮点优化,你会得到类似下面的输出:



最后一行很重要:Tag_ABI_VFP_args: VFP registers。只有二进制文件被检查为构建时采用了ARMv6硬浮点优化时才会显示这些信息。

安装好vcgencmd工具后(如果需要),查看vcgencmd提供的选项:

 



https://yqfile.alicdn.com/d01ebe33b3bb1925e5833a32c42434fb857c7f4f.png" >

这将输出一个包含所有可以传递给vcgencmd工具的命令列表:

 



不幸的是,关于这些命令以及它们是干什么的,上面的输出实际上并没有给出什么有用的信息。命令中有些看上去似乎是显而易见的,但是当你运行它们的时候,它们会这样返回:

 



https://yqfile.alicdn.com/9bb0230395dabd373c88d22b1fddc2fa0ad080a0.png" >

这个工具的文档极其匮乏,不过树莓派社区已经汇集并找到了一些命令的用法。

**

1.5.1 测量元器件电压**

vcgencmd measure_volts命令显示了一些树莓派关键元器件的电压,特别是:

 



GPU处理器内核

 



https://yqfile.alicdn.com/e0e5df829a6956a67d2b371128a2dc21a6548680.png" >

SDRAM控制器

 



https://yqfile.alicdn.com/0a661177f396c65cac4929f9f3b367629c2b7a36.png" >

SDRAM输入/输出(I/O)

 



SDRAM物理內存

上述每一個元器件都可以作為選項傳遞給vcgencmd measure_volts命令(如果你沒有指定參數,將返回core的值)。你也許會覺得奇怪為什麽要關心並測量這些電壓,而且在大多數情況下,你也許確實不需要關心它們。它們的值一般如表1-3所示:



你可能會關心這些元器件電壓的唯一情況是:如果你決定將你的樹莓派超頻,在這種情況下這些電壓均是可配置的(在技巧06中會有詳細介紹)。

你也許希望這個命令返回系統主板電壓(這個電壓正常條件下在4.75V和5.25V之間變化),但它並不能。參見技巧09獲取如何手工獲取系統主板電壓的相關內容。

1.5.2 測量溫度
vcgencmd measure_temp命令會報告樹莓派的BCM2835片上系統的core溫度(攝氏)



https://yqfile.alicdn.com/ceb7916c1b6a6af05499bbac80ff5a9f1a692285.png" >

或者,你也可以直接读取/sys/class/thermal/thermal_zone0/temp文件获得同样的温度读数:



https://yqfile.alicdn.com/e95384426658b51bc3aedf8df57d69611ba825a0.png" >

趣味數學和科學

要將該值轉換為攝氏溫度,只需除以1000即可。要得到華氏溫度,需要將攝氏溫度乘以1.8再加上32。而要得到開爾文溫度,則應將攝氏溫度加上273.15。如此計算的溫度值越來越高,是不是正如我們對樹莓派的熱情?
從監測樹莓派硬件的角度來看,這種讀數可能已經足夠了。由於實際上CPU/GPU並沒有分離(至少從物理和發熱的角度來說沒有分離),所以它只是給了你一個主板運行有多熱的大致概念。也就是說,如果你想獲得更詳細的(或只是另一個)溫度讀數,你可以接入一個額外的溫度傳感器,如技巧37中所述。

1.5.3 監測內存劃分
無論是強制分配還是動態分配,vcgencmd get_mem命令都可以返回ARM CPU和顯卡GPU的內存值。

要查看當前分配給ARM CPU的內存大小,運行:

 



要查看当前分配给显卡GPU的内存大小,运行:

 



1.5.4 檢查自定義配置重寫
你已經忘記了你對你的樹莓派所做的配置更改?具體來說,那些在固件中更改的設置?你可以在/boot/config.txt中查看,這裏的vcgencmd get_config命令也可以幫助到你。

要查看所有使用數字(整型)數據類型的配置,運行:



要查看所有使用文本(字符串型)數據類型的配置,運行:

 



只有非常少的配置項是存儲為字符串值而不是整型,因此如果vcgencmd get_config str命令沒有返回任何值的時候,你不必過於驚訝。
如果你只是想檢查某一個指定配置項的值,則用配置名稱代替選項傳遞:

 



vcgencmd實用工具並不是對用戶最友好的工具,但是它確實很深的介入到了樹莓派的內部運作。由於這是一個開源工具(源代碼可以從前述的樹莓派GitHub固件庫中checkout),如果你想深入了解樹莓派硬件的內部工作原理的話,查看vcgencmd的源碼將會是一個很好的起點。

相关命令

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐