rk3588 pwm

您所在的位置:网站首页 风扇pwm还是自动开机 rk3588 pwm

rk3588 pwm

2024-07-14 01:24| 来源: 网络整理| 查看: 265

rk3588 pwm-fan风扇调试:

参考文档: http://www.taodudu.cc/news/show-2282037.html?action=onClick Rockchip平台cpu散热风扇随温度自动调速的配置方法 http://www.coloradmin.cn/o/576106.html?action=onClick rk3568适配温控风扇

https://www.kernel.org/doc/html/latest/driver-api/pwm.html

https://zhuanlan.zhihu.com/p/651211513 【linux kernel】一文总结linux内核通知链

rockchip 在drivers/hwmon/pwm-fan.c驱动中添加了rockchip,temp-trips设备树属性,用于支持根据cpu温度调节风扇风速。 方法是:delayed_work每200毫秒调用thermal_zone_get_temp获取温度,通知notifier通知链上的观察者。 pwm-fan.c中注册成为nofitier通知链上的观察者。

根据设备原理图配置设备树。

/ { pwm_fan: pwm-fan { compatible = "pwm-fan"; #cooling-cells = ; pwms = ; cooling-levels = ; // 注意:如下cooling-levels配置会导致风扇一会儿开启,一会儿关闭 // 原因是:风扇调节过于猛烈,需要根据整机情况进行调优 //cooling-levels = ; rockchip,temp-trips = ; }; }; &pwm10 { pinctrl-0 = ; status = "okay"; };

调试方法: 1,每隔几秒打印cpu温度 while true; do adb shell “cat /sys/class/thermal/thermal_zone*/temp” | tee -a pwm_fan.txt;echo “######$(date)######” | tee -a pwm_fan.txt;sleep 5; done

2,运行耗时的视频App

3,当cpu温度升高时,观察到风扇启动了,并随cpu温度的升高,风扇的风速也越快了。

kernel层调试pwm: cat /sys/kernel/debug/pwm

cat /sys/kernel/debug/pwm 对应的代码 /drivers/pwm/core.c platform/febe0020.pwm, 1 PWM device pwm-0 (pwm-fan ): requested period: 50000 ns duty: 0ns polaity: normal 当cpu温度升高,fan工作时: pwm-0 (pwm-fan ): requested enabled period: 50000 ns duty: 9804ns polaity: normal

在这里插入图片描述

在这里插入图片描述 sysfs调试pwm: 遇到的问题: echo 0 > /sys/class/pwm/pwmchip0/export 失效,没有导出来。

sysfs调试pwm: echo 0 > /sys/class/pwm/pwmchip0/export **遇到的问题:** cd /sys/class/pwm/pwmchip0/ echo 0 >export 执行该操作后,pwm0没有导出来。 原因是: cat /sys/kernel/debug/pwm 显示的是 requested,会并返回-EBUSY,所以导不出来,是正常现象。 当不是requested时会,正常导出来。 pwm-0 (pwm-fan ): requested period: 50000 ns duty: 0ns polaity: normal

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

sysfs手动调节pwm

如下内容参考文档:https://blog.csdn.net/weixin_44244400/article/details/131558493 RK3588 PWM调试记录—linux pwm子系统驱动框架 如上分析,如果想通过sysfs手动调节pwm的话,需要把设备树pwm_fan节点注释掉, 同时把pwm10的状态由disabled改为okay。

/ { // 注释掉pwm-fan设备树节点,通过sysfs手动调节pwm // pwm_fan: pwm-fan { // compatible = "pwm-fan"; // #cooling-cells = ; // pwms = ; // cooling-levels = ; // // // rockchip,temp-trips = ; // }; }; &pwm10 { pinctrl-0 = ; status = "okay"; }; 设备树中的pwm10的状态由disabled改为okay, 那么我们可以在/sys/class/pwm/pwmchi0目录将pwm0导出。 polarity可以赋值为: normal 或 inversed 例子1: # cat /d/pwm # cd /sys/class/pwm/pwmchi0 # echo 0 > export # cd pwm0/ # echo normal > polarity # echo 10000 > period # echo 5000 > duty_cycle # echo 1 > enable # ls capture duty_cycle enable output_type period polarity power uevent 上面的指令设置了周期10000,占空比50%,极性为normal的pwm输出。 例子2: # echo normal > polarity # echo 50000 > period # echo 0 > duty_cycle // 占空比为0% // 风扇停止运行 # echo 50000 > duty_cycle // 占空比为100% // 风扇最高转速运行 例子3: # echo inversed > polarity # echo 50000 > period # echo 0 > duty_cycle // 占空比为100% // 风扇最高转速运行 # echo 50000 > duty_cycle // 占空比为0% // 风扇停止运行


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3