十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OpenBMC:hwmon 传感器适配

OpenBMC:hwmon 传感器适配 OpenBMChwmon 传感器适配1. hwmon 的作用hwmon 是 Linux 内核的硬件监控框架主要用于提供温度电压电流功率能量风扇转速PWM告警状态在 OpenBMC 中hwmon 是内核传感器驱动和 D-Bus Sensor 之间的重要接口。物理传感器 ↓ I2C / PMBus / ADC ↓ Linux 传感器驱动 ↓ hwmon ↓ dbus-sensors / phosphor-hwmon ↓ D-Bus Sensor2. hwmon 目录结构驱动注册成功后Linux 会创建/sys/class/hwmon/hwmon0 /sys/class/hwmon/hwmon1目录中可能包含name temp1_input temp1_max temp1_crit temp1_label in1_input curr1_input power1_input fan1_input pwm1常见属性含义节点含义tempX_input温度inX_input电压currX_input电流powerX_input功率fanX_input风扇转速pwmXPWM 控制值X_label通道名称X_alarm告警状态具体单位应以 Linux hwmon ABI 为准。例如温度通常以毫摄氏度表示。3. 设备树和驱动适配以 I2C 温度传感器为例i2c0 { status okay; temperature-sensor48 { compatible vendor,temp-sensor; reg 0x48; }; };设备树中的compatible与驱动匹配后内核调用probe()创建 I2C Client ↓ 调用驱动 probe() ↓ 检查芯片和寄存器 ↓ 注册 hwmon 设备 ↓ 生成 sysfs 属性驱动应通过标准 hwmon 接口注册通道不应自行创建语义不统一的 sysfs 文件。4. hwmon 通道配置一个芯片可能同时提供多个数据通道温度通道 1 温度通道 2 输入电压 输入电流 输入功率 风扇转速驱动需要定义通道类型支持的属性读取函数写入函数是否可见数据转换方式处理过程如下用户读取 temp1_input ↓ hwmon 核心调用驱动 read() ↓ 驱动读取芯片寄存器 ↓ 转换为 hwmon 标准单位 ↓ 返回用户空间单位转换应主要在驱动层完成避免不同用户空间程序分别解释原始寄存器。5. 接入 dbus-sensors使用 entity-manager 和 dbus-sensors 时需要提供传感器配置{ Name: Board Temp, Type: TemperatureSensor, Bus: 3, Address: 72 }运行流程为entity-manager 发布 Configuration ↓ dbus-sensors 获取配置 ↓ 根据 Bus、Address 和设备路径匹配 hwmon ↓ 读取 tempX_input ↓ 创建 D-Bus Sensor.Value最终对象可能为/xyz/openbmc_project/sensors/temperature/Board_Temphwmon 编号可能随驱动加载顺序变化因此不应固定依赖hwmon0。匹配时通常需要结合 I2C 设备路径、地址、驱动名称和通道标签。6. 阈值与数据转换传感器阈值可以来自hwmon 芯片寄存器entity-manager 配置平台策略用户运行时设置D-Bus 中常见阈值接口为xyz.openbmc_project.Sensor.Threshold.Warning xyz.openbmc_project.Sensor.Threshold.Critical数据转换链路为芯片原始寄存器 ↓ 内核驱动转换为 hwmon 单位 ↓ dbus-sensors 执行必要缩放 ↓ D-Bus 标准单位 ↓ Redfish Reading应明确每一层的单位避免重复放大或缩小。7. 完整适配流程1. 确认硬件接口和设备地址 2. 启用 I2C、PMBus 或 ADC 控制器 3. 添加设备树节点 4. 启用或编写 Linux 驱动 5. 注册标准 hwmon 通道 6. 添加 entity-manager 配置 7. 启用对应 Sensor 服务 8. 创建 D-Bus Sensor 对象 9. 由 Redfish、IPMI 和风扇控制使用8. 总结hwmon 负责在 Linux 内核中统一传感器接口OpenBMC 用户空间再将这些数据转换为 D-Bus Sensor。硬件 → 驱动 → hwmon → dbus-sensors → D-Bus → Redfish / IPMI / WebUI适配过程中最重要的是使用标准 hwmon ABI、保持单位一致并建立稳定的硬件通道与 D-Bus Sensor 映射关系。
返回列表