hwmon 子系统简介
在 Linux 内核和嵌入式开发中,hwmon 是 Hardware Monitoring(硬件监控) 的缩写。
当你看到“hwmon 温度芯片”时,它指的是被接入到 Linux 内核 hwmon 子系统中的温度传感器芯片(例如通过 I2C 挂载的 LM75、或者 SoC 内部的 TSADC 模块)。
以下是关于 hwmon 在 Linux 系统中的几个核心要点:
1. hwmon 子系统的作用
hwmon 是 Linux 内核中专门用来统一管理各种硬件状态传感器的框架。它不仅用于温度传感器,还包括:
- 温度 (Temperature)
- 电压 (Voltage)
- 风扇转速 (Fan speed)
- 电流和功耗 (Current & Power)
- 湿度 (Humidity)
它的核心意义在于标准化。无论你用的是什么厂家的温度芯片、走的是 I2C 还是 SPI 总线,只要底层驱动对接了 hwmon 框架,应用层读取数据的方式就都是完全一样的。
2. 在用户空间(用户层)的表现
对于应用层开发者或测试人员来说,hwmon 最直观的表现就是 sysfs 中的虚拟文件节点。通常路径在:
/sys/class/hwmon/hwmon[N]/
进入某个 hwmon 目录后,你会看到系统标准化的文件命名(以温度为例):
name:传感器芯片的名称(比如rk_tsadc或lm75)。temp1_input:当前读取到的温度值(单位通常是毫摄氏度,即读到45000代表 45.0°C)。temp1_max:设定的温度上限阈值。temp1_crit:临界温度(芯片可能会触发硬件中断保护机制)。
你只需要简单的 cat /sys/class/hwmon/hwmon0/temp1_input 就能拿到硬件温度,不需要自己去写 I2C 读写命令。
3. hwmon 与 thermal 子系统的区别(易混淆点)
在做内核驱动(比如 Rockchip 平台的适配)时,经常会同时遇到 hwmon 和 thermal。两者的分工是不同的:
- hwmon(硬件监控): 偏向于“感知”。它只负责把传感器的原始物理数据(温度多少、风扇转速多少)如实地暴露给用户空间。
- thermal(温控策略): 偏向于“控制”。
thermal框架会去读取温度(很多时候就是从底层的 hwmon 节点获取),然后根据预设的策略(Thermal zone & Cooling device)执行降温动作,比如:温度超过 80 度时自动降频 CPU,或者提高风扇占空比。
总结来说: “hwmon 温度芯片”指的就是一颗负责采集温度、并且在 Linux 驱动层注册到了 Hardware Monitoring 框架里的芯片模块。
留下评论