少于 1 分钟阅读 次阅读

在 Linux 内核和嵌入式开发中,hwmonHardware 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_tsadclm75)。
  • temp1_input:当前读取到的温度值(单位通常是毫摄氏度,即读到 45000 代表 45.0°C)。
  • temp1_max:设定的温度上限阈值。
  • temp1_crit:临界温度(芯片可能会触发硬件中断保护机制)。

你只需要简单的 cat /sys/class/hwmon/hwmon0/temp1_input 就能拿到硬件温度,不需要自己去写 I2C 读写命令。

3. hwmon 与 thermal 子系统的区别(易混淆点)

在做内核驱动(比如 Rockchip 平台的适配)时,经常会同时遇到 hwmonthermal。两者的分工是不同的:

  • hwmon(硬件监控): 偏向于“感知”。它只负责把传感器的原始物理数据(温度多少、风扇转速多少)如实地暴露给用户空间。
  • thermal(温控策略): 偏向于“控制”。thermal 框架会去读取温度(很多时候就是从底层的 hwmon 节点获取),然后根据预设的策略(Thermal zone & Cooling device)执行降温动作,比如:温度超过 80 度时自动降频 CPU,或者提高风扇占空比。

总结来说: “hwmon 温度芯片”指的就是一颗负责采集温度、并且在 Linux 驱动层注册到了 Hardware Monitoring 框架里的芯片模块。

留下评论