《树莓派实战秘籍》——1.5 技巧05监测树莓派的硬件

简介:

本节书摘来异步社区《树莓派实战秘籍》一书中的第1章,第1.5节,作者:【美】Ruth Suehle ,Tom Callaway,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.5 技巧05监测树莓派的硬件

树莓派实战秘籍
你是否担心你不在家时你的Pi投身疯狂派对?这个技巧是关于如何弄个摄像头对准它并将视频传输到Internet上的。开个玩笑!这个技巧中的工具只能监测你的这个小巧硬件的物理状态。

一个“正常的”Linux计算机可能会包括板载健康监测传感器,有相当多的监控芯片和元器件被用在各种系统上,但是对于树莓派来说,所有的硬件完全隐藏在Broadcom片上系统里面,因此你无法使用通常的方式访问它。

为了能够使用这些元器件监视你的Pi的健康,需要使用vcgencmd实用工具。任何可用的通用树莓派Linux发行版应该已经预安装了这个工具,如果没有的话,你可以从固件树上得到一份复制。如果你的发行版编译为支持ARM硬浮点,你可以在hardfp/子目录下查找,否则,可以在opt/子目录下查找。

检查硬浮点

在写这篇文章的时候,大多数Linux发行版(包括Pidora、Raspbian、Occidentalis、OpenELEC以及RaspBMC等)被构建为支持ARMv6硬浮点架构,因为这样可以提供树莓派的最佳性能。然而这些目标平台的一些老版本(以及其他操作系统平台)被构建为优化的ARMv6的软浮点。这两种优化级别彼此互不兼容。在Linux上,有一种很好的方法来检查是否支持ARMv6硬浮点,即使用readelf命令:

4fe5652cf6db9f66fe1cd7fdbe8886e426357813

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

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

a38aa641e80515ef8bc2fdc5f0b72701077e757c

最后一行很重要:Tag_ABI_VFP_args: VFP registers。只有二进制文件被检查为构建时采用了ARMv6硬浮点优化时才会显示这些信息。
安装好vcgencmd工具后(如果需要),查看vcgencmd提供的选项:

26eeab28300a5a625e6c003c5b34b888ee2d6dde

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

5b52fd9bf3df51de37271b30414105b9bbe20c6a

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

d8dda844745171f65f4d1b1257cadaa45fc9e5f9

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

1.5.1 测量元器件电压

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

3464591df17a2b83e99e4e2efd54a43991abf991

上述每一个元器件都可以作为选项传递给vcgencmd measure_volts命令(如果你没有指定参数,将返回core的值)。你也许会觉得奇怪为什么要关心并测量这些电压,而且在大多数情况下,你也许确实不需要关心它们。它们的值一般如表1-3所示:

1c7bc103ae2399dbe1e05c2b9ac23902a0a2f25d

你可能会关心这些元器件电压的唯一情况是:如果你决定将你的树莓派超频,在这种情况下这些电压均是可配置的(在技巧06中会有详细介绍)。

你也许希望这个命令返回系统主板电压(这个电压正常条件下在4.75V和5.25V之间变化),但它并不能。参见技巧09获取如何手工获取系统主板电压的相关内容。

1.5.2 测量温度

vcgencmd measure_temp命令会报告树莓派的BCM2835片上系统的core温度(摄氏):

025f178ec2b8d36191bef42ad152431b596fbe09

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

f0b03649319289fb8b88e56c0d8e00dfab96124d

趣味数学和科学

要将该值转换为摄氏温度,只需除以1000即可。要得到华氏温度,需要将摄氏温度乘以1.8再加上32。而要得到开尔文温度,则应将摄氏温度加上273.15。如此计算的温度值越来越高,是不是正如我们对树莓派的热情?
从监测树莓派硬件的角度来看,这种读数可能已经足够了。由于实际上CPU/GPU并没有分离(至少从物理和发热的角度来说没有分离),所以它只是给了你一个主板运行有多热的大致概念。也就是说,如果你想获得更详细的(或只是另一个)温度读数,你可以接入一个额外的温度传感器,如技巧37中所述。

1.5.3 监测内存划分

无论是强制分配还是动态分配,vcgencmd get_mem命令都可以返回ARM CPU和显卡GPU的内存值。

要查看当前分配给ARM CPU的内存大小,运行:

953aabf07a6cda4be673528c6baaed33d86a8809

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

812d96f09fcde0db01f4b90ef7b672d73d2f4964

1.5.4 检查自定义配置重写

你已经忘记了你对你的树莓派所做的配置更改?具体来说,那些在固件中更改的设置?你可以在/boot/config.txt中查看,这里的vcgencmd get_config命令也可以帮助到你。

要查看所有使用数字(整型)数据类型的配置,运行:

![screenshot]()

0efc3a3f56f0f1783c2ae949cddcdce01d575176

要查看所有使用文本(字符串型)数据类型的配置,运行:

b9f049376fc740ae14ad3cfe0321817ce0eeca24

只有非常少的配置项是存储为字符串值而不是整型,因此如果vcgencmd get_config str命令没有返回任何值的时候,你不必过于惊讶。
如果你只是想检查某一个指定配置项的值,则用配置名称代替选项传递:

e3d87669542bdb7ee474349a4d8fb9a3ebb6a345

vcgencmd实用工具并不是对用户最友好的工具,但是它确实很深的介入到了树莓派的内部运作。由于这是一个开源工具(源代码可以从前述的树莓派GitHub固件库中checkout),如果你想深入了解树莓派硬件的内部工作原理的话,查看vcgencmd的源码将会是一个很好的起点。

相关文章
|
Java Linux 芯片
树莓派基础
简写RPI,只有信用卡大小的微型电脑,系统基于Linux。自树莓派问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”
101 0
|
传感器 监控 智能硬件
基于Arduino与LabVIEW的远程家庭监控系统
基于Arduino与LabVIEW的远程家庭监控系统
161 0
|
Shell 网络安全 数据安全/隐私保护
树莓派开发笔记(十二):入手研华ADVANTECH工控树莓派UNO-220套件(一):介绍和运行系统
树莓派开发笔记(十二):入手研华ADVANTECH工控树莓派UNO-220套件(一):介绍和运行系统
树莓派开发笔记(十二):入手研华ADVANTECH工控树莓派UNO-220套件(一):介绍和运行系统
|
芯片 Windows
树莓派开发笔记(十三):入手研华ADVANTECH工控树莓派UNO-220套件(二):安装rtc等驱动
树莓派开发笔记(十三):入手研华ADVANTECH工控树莓派UNO-220套件(二):安装rtc等驱动
树莓派开发笔记(十三):入手研华ADVANTECH工控树莓派UNO-220套件(二):安装rtc等驱动
|
数据可视化 网络安全 数据安全/隐私保护
树莓派开发笔记(一): 入手树莓派3b,成功运行树莓派系统
树莓派开发笔记(一): 入手树莓派3b,成功运行树莓派系统
树莓派开发笔记(一): 入手树莓派3b,成功运行树莓派系统
|
Linux iOS开发 MacOS
带你读《面向Arduino用户的树莓派实用指南:物联网应用开发》之二:结识树莓派
本书全面介绍了树莓派开发板的配置步骤、开发环境构建和实际应用技术,讲述了在树莓派上采用C++语言和库进行开发的方法,更为难得的是介绍了结合使用Arduino和树莓派的工具和流程。全书共分为13章,第1章为完成书中的项目提供了一份购物清单;第2章~第5章从硬件设置、操作系统安装和管理、树莓派上C++开发的流程和库等方面进行了介绍;第6章~第11章则采用实例的方式介绍了树莓派在多个方面的开发过程;第13章为总结和建议部分。本书适用于有意学习树莓派开发的读者,尤其适合具有Arduino经验的读者快速入门,也可作为STEAM教育的课程设计蓝本。
|
监控 数据安全/隐私保护 网络安全
利用树莓派实现监控系统一(树莓派的入手及系统安装)
没想到人生的第二篇博客与第一篇竟然刚好相隔一个月 - -  这一个月发生了太多事情,导致刚起步的博客就被耽误了,后面我会尽量加快更博的步伐 (ง •̀_•́)ง   这一个月中,最重要的一件事就是,我家的新成员十二 放错了 - - 应该是这张    平时上班不在家,又想看它在家干什么,所以就想着...
1628 0