Linux hwmon子系统分析之一 系统框架说明

       从本章开始,我们进行hwmon子系统的分析,hwmon即hardware monitoring framework,硬件监视框架,包括温度传感器、风扇、电源等器件驱动的框架。hwmon子系统主要借助sysfs提供的api接口,实现对硬件监控器件的通信,也就是借助sysfs的文件创建的机制实现应用程序与hwmon器件的通信操作。

本系统主要规划如下几篇文章:

一、框架说明

二、hwmon 子系统详细说明

三、一个hwmon 设备驱动的实现(通过实现一个虚拟的hwmon设备驱动)

 

 

 

本章的主要内容如下:

一、说明sysfs中文件操作接口的简要说明,以及sysfs下文件的创建等;

二、linux hwmon子系统架构及不同内核版本下的架构优化。

 

 

 

一、sysfs相关简要说明

在之前的文章中,我们已经介绍了sysfs相关的框架,此处主要说明sysfs文件系统下文件访问的框架,如下图所示:

  1. 应用程序通过系统调用接口调用vfs接口,而vfs则调用sysfs文件系统注册的文件操作接口,如下图所示,主要为sysfs_open_file、sysfs_read_file、sysfs_write_file、sysfs_poll、generic_file_llseek、sysfs_release接口。
  2. 针对调用device_register接口注册的struct device类型的变量,其struct kobj_type类型变量为device_ktype,其操作接口指针为dev_sysfs_ops,主要用于读取和写入操作(dev_attr_show对应为读取、dev_attr_store为写操作),而在dev_attr_show、dev_attr_store中,则会通过文件的属性变量,获取到具体的store和show接口。而关于sysfs相关的数据结构间的关联,可参考我之前写的sysfs专栏和设备驱动模型专栏相关的文档。
  3. 另外sysfs是支持poll接口的,即sysfs_poll接口。若属性文件需要支持poll接口,则调用函数sysfs_notify即可。

 

 

     而hwmon子系统则主要借助sysfs、设备驱动模块中设备创建和注册以及属性创建,完成属性的创建,从而完成在sysfs中创建文件,供应用程序对硬件监视器芯片的访问(如在sysfs中完成对温度传感器当前温度的读取等)

 

 

二、linux hwmon子系统架构及不同内核版本下的架构优化

      在hwmon子系统中,主要即借助设备驱动模型中设备的注册以及设备属性的创建,即可针对一个硬件监视器芯片创建多个属性文件,从而应用程序即可在/sys目录下实现对文件的访问。

 

如下图所示,通过访问/sys/class/hwmon/hwmon0目录下的属性文件,即可对相关属性进行访问,此处主要查看当前温度内容。

 

Linux3.10的内核hwmon子系统实现

     在linux3.10及之前的版本中,hwmon子系统实现的内容不是太多,也就是实现了一个hwmon  class,然后提供了一个hwmon的注册接口hwmon_device_register(也就是对device_register的包裹),而各hwmon驱动,在调用hwmon_device_register注册之前调用sysfs_create_group完成属性参数的注册,并提供属性的store、show接口。此时的hwmon子系统略显单薄;

 

Linux4.x及之后版本的hwmon子系统实现

       在之后的版本中,hwmon子系统的内容渐渐丰富起来,而不再只做对device_register的包裹,其提供了通用硬件监控参数的抽象,主要提供了接口hwmon_attr_show、hwmon_attr_store,同时抽象了针对温度芯片、风扇芯片、电源芯片等硬件监控芯片相关参数的支持,即温度芯片、风扇芯片、电源芯片等硬件监控芯片相关参数的访问接口,均会在接口hwmon_attr_show、hwmon_attr_store中被统一调用,而温度芯片、风扇芯片、电源芯片等硬件监控芯片只需要实现hwmon_ops类型函数指针即可。调用关系如下所示,其中,HWMON子系统层则为hwmon子层抽象的部分,而最下层则由具体的hwmon 设备驱动实现即可。

 

 

    以上即为本章的内容,hwmon子系统的功能还是比较明确的。通过上面两幅图可以大致理解hwmon的实现流程。当然了,我们实现其他的设备驱动也可以借助设备驱动模型、sysfs提供的接口,在sysfs下创建属性文件及其操作接口,实现在sysfs目录下访问具体设备。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值