当前位置: 首页 > article >正文

Linux 系统 PWM 风扇驱动框架学习记录

一、前言

        最近在折腾嵌入式平台的驱动框架学习,在遇到 pwm-fan 风扇驱动时,发现不只是 PWM 控制占空比那么简单,还涉及到 thermal 子系统的温度监控以及 hwmon 子系统的硬件控制。

        内核源码的文档下,也有风扇驱动的介绍:

二、三者的关系

PWM 是底层的硬件控制接口,直接控制风扇的转速。

hwmon 提供了对 PWM 和风扇转速的访问接口,同时还可以监控其他硬件传感器(如温度)。

thermal 是更高层的热管理框架,负责根据温度数据自动调整冷却设备(如风扇)的状态。

温度监控:

        Thermal 子系统通过温度传感器(如 coretemp)读取温度数据。温度数据通过 thermal_zoneX/temp 暴露给用户空间。

温度控制:

        当温度超过预设的触发点(trip_point_X_temp)时,Thermal 子系统会触发冷却行为。Thermal 子系统通过 hwmon 接口调整风扇的 PWM 信号(pwm1)来控制风扇速度。

风扇控制:

        hwmon 接口通过 PWM 信号直接控制风扇的转速。用户也可以通过 hwmon 接口手动设置风扇速度。

职责分离:

PWM 接口专注于硬件控制。

hwmon 接口专注于硬件监控和控制。

thermal 接口专注于热管理策略。

三、风扇控制

pwm 接口

例如:

/sys/class/pwm/pwmchip0/

        如果是使用通用风扇驱动 pwm-fan,通常无法 export 风扇的pwm,因为已经被驱动申请。如果想通过 pwm 接口来控制,需要将设备树的 compatible 属性修改,或者新编写一个 pwm 的驱动,这样就可以拥有该 GPIO 的控制权。

hwmon 接口

这里可以看我另一篇博客:

香橙派Linux系统手动调节PWM风扇转速_linux主板风扇控制-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/plmm__/article/details/144697337?spm=1001.2014.3001.5502

thermal 接口

路径为:

/sys/class/thermal

可以看到冷却设备和温度设备:

每个接口内部的 type ,如果输出是 Processor,则表示这是一个 CPU 频率调节设备,而不是风扇。如果输出是 pwm-fan 或 fan,则表示这是一个风扇设备。

cat /sys/class/thermal/cooling_device0/type

        我的设备没有 pwm-fan 或 fan,硬件可能没有通过标准接口(如 PWM 或 hwmon)暴露风扇控制功能。如果有,则可以通过对 cur_state 写入挡位来控制,需要 sudo 权限。

可以通过 max_state 查看挡位最大值。


http://www.kler.cn/a/488413.html

相关文章:

  • List ---- 模拟实现LIST功能的发现
  • 【PPTist】公式编辑、插入音视频、添加动画
  • Web枚举:深入了解目标应用系统
  • C++ 如何将 gRPC集成到机器人系统中
  • eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)
  • C#异步多线程——ThreadPool线程池
  • 【比较乱,如果遇到相同问题可以看】Autoware.universe的绕障线路的参数修改
  • CSS——39. 文本修饰(文本属性)
  • 用 Python 绘制可爱的招财猫
  • 新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解
  • Uniapp仿ChatGPT Stream流式输出(非Websocket)
  • UML(统一建模语言)
  • VUE3 VITE项目在 npm 中,关于 Vue 的常用命令有一些基础命令
  • clickhouse 离线包安装(ubuntu)
  • SOLIDWORKS 或 AutoCAD:选择CAD 解决方案时应考虑哪些问题?
  • TR-069协议学习--Soap报文、事件、RPC方法
  • ubuntu报错:没有在该文件夹中粘贴文件的权限
  • 【Unity功能集】TextureShop纹理工坊(十二)画笔工具、橡皮擦工具
  • 初学stm32 --- DAC输出
  • 谷歌浏览器的文件管理与上传功能
  • 【C++】22.AVL树实现
  • Excel中SUM求和为0?难道是Excel有Bug!
  • 爬虫数据抓取中的维度
  • micro-app【微前端系列教程】生命周期
  • JVM远程调试原理剖析
  • Apache XMLBeans 一个强大的 XML 数据处理框架