20251110给荣品RD-RK3588开发板跑Rockchip的原厂Android13系统时熟悉散热风扇
2025/11/10 20:49
缘起:需要通过模拟PWM模式控制散热风扇的风力大小!
首先要先学会如何打开/关闭【启/停】风扇。
看原理图,风扇的控制GPIO引脚为GPIO4A7。
也就是:32*4+8*0+7=135

【精简的LOG:操作步骤】
rk3588_t:/ # cd /sys/class/gpio/
rk3588_t:/sys/class/gpio # ll
rk3588_t:/sys/class/gpio # echo 135 > export
rk3588_t:/sys/class/gpio # ll
rk3588_t:/sys/class/gpio # cd gpio135
rk3588_t:/sys/class/gpio/gpio135 # ll
rk3588_t:/sys/class/gpio/gpio135 # cat direction
in
rk3588_t:/sys/class/gpio/gpio135 # cat value
0
rk3588_t:/sys/class/gpio/gpio135 #
rk3588_t:/sys/class/gpio/gpio135 # echo out > direction
rk3588_t:/sys/class/gpio/gpio135 # echo 1 > value
rk3588_t:/sys/class/gpio/gpio135 # echo 0 > value
rk3588_t:/sys/class/gpio/gpio135 # echo 1 > value
rk3588_t:/sys/class/gpio/gpio135 #

Microsoft Windows [版本 10.0.19045.6216]
(c) Microsoft Corporation。保留所有权利。
C:\Users\QQ>adb shell
adb server version (40) doesn't match this client (41); killing...
* daemon started successfully
rk3588_t:/ $ su
rk3588_t:/ #
rk3588_t:/ # ll
total 88
drwxr-xr-x 2 root root 4096 2025-11-07 05:56 acct
drwxr-xr-x 27 root root 560 2021-01-01 12:07 apex
lrw-r--r-- 1 root root 11 2025-11-07 05:56 bin -> /system/bin
lrw-r--r-- 1 root root 50 2025-11-07 05:56 bugreports -> /data/user_de/0/com.android.shell/files/bugreports
drwxrwx--- 6 system cache 4096 2021-01-01 12:07 cache
drwxr-xr-x 3 root root 0 1970-01-01 00:00 config
lrw-r--r-- 1 root root 17 2025-11-07 05:56 d -> /sys/kernel/debug
drwxrwx--x 50 system system 4096 2025-11-07 05:56 data
drwx------ 8 root system 160 2021-01-01 12:07 data_mirror
drwxr-xr-x 2 root root 4096 2025-11-07 05:56 debug_ramdisk
drwxr-xr-x 26 root root 3500 2025-11-07 05:56 dev
lrw-r--r-- 1 root root 11 2025-11-07 05:56 etc -> /system/etc
lrwxr-x--- 1 root shell 16 2025-11-07 05:56 init -> /system/bin/init
-rwxr-x--- 1 root shell 463 2025-11-07 05:56 init.environ.rc
drwxr-xr-x 11 root root 260 2021-01-01 12:07 linkerconfig
drwx------ 2 root root 16384 2025-11-07 05:56 lost+found
drwxr-xr-x 13 root root 4096 2021-01-01 12:07 metadata
drwxr-xr-x 16 root system 340 2021-01-01 12:07 mnt
drwxr-xr-x 5 root root 4096 2025-11-07 05:56 odm
drwxr-xr-x 4 root root 4096 2025-11-07 05:56 odm_dlkm
drwxr-xr-x 2 root root 4096 2025-11-07 05:56 oem
drwxr-xr-x 2 root root 4096 2025-11-07 05:56 postinstall
dr-xr-xr-x 403 root root 0 2021-01-01 12:07 proc
drwxr-xr-x 9 root root 4096 2025-11-07 05:56 product
lrw-r--r-- 1 root root 21 2025-11-07 05:56 sdcard -> /storage/self/primary
drwxr-xr-x 2 root root 4096 2025-11-07 05:56 second_stage_resources
drwx--x--- 4 shell everybody 80 2021-01-01 12:07 storage
dr-xr-xr-x 15 root root 0 2021-01-01 12:07 sys
drwxr-xr-x 13 root root 4096 2025-11-07 05:56 system
drwxr-xr-x 4 root root 4096 2025-11-07 05:56 system_dlkm
drwxr-xr-x 9 root root 4096 2025-11-07 05:56 system_ext
drwxr-xr-x 10 root root 4096 2025-11-07 05:56 vendor
drwxr-xr-x 5 root root 4096 2025-11-07 05:56 vendor_dlkm
rk3588_t:/ # cd /sys/class/gpio/
rk3588_t:/sys/class/gpio # ll
total 0
--w------- 1 root root 4096 2025-11-07 05:57 export
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip0 -> ../../devices/platform/pinctrl/fd8a0000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip128 -> ../../devices/platform/pinctrl/fec50000.gpio/gpio/gpiochip128
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip32 -> ../../devices/platform/pinctrl/fec20000.gpio/gpio/gpiochip32
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip509 -> ../../devices/platform/feb20000.spi/spi_master/spi2/spi2.0/rk806-pinctrl.1.auto/gpio/gpiochip509
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip64 -> ../../devices/platform/pinctrl/fec30000.gpio/gpio/gpiochip64
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip96 -> ../../devices/platform/pinctrl/fec40000.gpio/gpio/gpiochip96
--w------- 1 root root 4096 2025-11-07 05:57 unexport
rk3588_t:/sys/class/gpio # echo 135 > export
rk3588_t:/sys/class/gpio # ll
total 0
--w------- 1 root root 4096 2025-11-07 05:57 export
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpio135 -> ../../devices/platform/pinctrl/fec50000.gpio/gpiochip4/gpio/gpio135
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip0 -> ../../devices/platform/pinctrl/fd8a0000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip128 -> ../../devices/platform/pinctrl/fec50000.gpio/gpio/gpiochip128
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip32 -> ../../devices/platform/pinctrl/fec20000.gpio/gpio/gpiochip32
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip509 -> ../../devices/platform/feb20000.spi/spi_master/spi2/spi2.0/rk806-pinctrl.1.auto/gpio/gpiochip509
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip64 -> ../../devices/platform/pinctrl/fec30000.gpio/gpio/gpiochip64
lrwxrwxrwx 1 root root 0 2025-11-07 05:57 gpiochip96 -> ../../devices/platform/pinctrl/fec40000.gpio/gpio/gpiochip96
--w------- 1 root root 4096 2025-11-07 05:57 unexport
rk3588_t:/sys/class/gpio # cd gp
gpio135/ gpiochip0/ gpiochip128/ gpiochip32/ gpiochip509/ gpiochip64/ gpiochip96/
rk3588_t:/sys/class/gpio # cd gpio135
rk3588_t:/sys/class/gpio/gpio135 # ll
total 0
-rw-r--r-- 1 root root 4096 2025-11-07 05:58 active_low
lrwxrwxrwx 1 root root 0 2025-11-07 05:58 device -> ../../../gpiochip4
-rw-r--r-- 1 root root 4096 2025-11-07 05:58 direction
-rw-r--r-- 1 root root 4096 2025-11-07 05:58 edge
drwxr-xr-x 2 root root 0 2025-11-07 05:58 power
lrwxrwxrwx 1 root root 0 2025-11-07 05:58 subsystem -> ../../../../../../../class/gpio
-rw-r--r-- 1 root root 4096 2025-11-07 05:58 uevent
-rw-r--r-- 1 root root 4096 2025-11-07 05:58 value
rk3588_t:/sys/class/gpio/gpio135 # cat direction
in
rk3588_t:/sys/class/gpio/gpio135 # cat value
0
rk3588_t:/sys/class/gpio/gpio135 #
rk3588_t:/sys/class/gpio/gpio135 # echo out > direction
rk3588_t:/sys/class/gpio/gpio135 # echo 1 > value
rk3588_t:/sys/class/gpio/gpio135 # echo 0 > value
rk3588_t:/sys/class/gpio/gpio135 # echo 1 > value
rk3588_t:/sys/class/gpio/gpio135 #




请问 RD-RK3588-MID控制 风扇的 部分是 PWM输出的吗?
温度 越高?PWM的占空比越高?[破涕为笑][疑问]
https://doc.rpdzkj.cn/#/zh_cn/瑞芯微系列/rk3566-rk3568/8.接口使用?id=风扇
https://doc.rpdzkj.cn/#/zh_cn/瑞芯微系列/rk3588-rk3588s/7.接口使用?id=风扇
不是的,只是在达到对应温度后,拉高或者拉低引脚风扇引脚启动
https://doc.rpdzkj.cn/#/zh_cn/瑞芯微系列/rk3588-rk3588s/7.接口使用
风扇
风扇是根据温度的增长而打开的,当温度达到设定的温度时,风扇就会自动打开,风扇低于设定温度时,就会在设定延迟时间后关闭
fan_gpio_control {
compatible = "fan_gpio_control";
gpio-pin = <&gpio1 RK_PC2 GPIO_ACTIVE_HIGH>;
thermal-zone = "cpu-thermal";
threshold-temp = <60000>; //60C
running-time = <10000>; //10s
status = "okay";
};
我想知道 默认 GPIO1C2是否具有 PWM输出?
普通GPIO口是否可以 模拟 PWM输出?
以便 【根据SOC的温度】调整占空比 控制风扇的风扇?
看RD-RK3588原理图,是可以配置成pwm功能来使用

【DTS】
Y:\new_disk_4t\wyb\RD-RK3588\orig_RD-rk3588_Android13\kernel-5.10\arch\arm64\boot\dts\rockchip\rk3588\rd-rk3588.dts
fan_gpio_control {
compatible = "fan_gpio_control";
gpio-pin = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>;
temperature-device = "soc-thermal";
temp-on = <60000>;
time = <10000>;
status = "okay";
};

【驱动程序】
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/orig_RD-rk3588_Android13/kernel-5.10$ grep rp_fan . -R
grep: ./arch/arm64/boot/Image: 匹配到二进制文件
./drivers/rongpin/Makefile:obj-$(CONFIG_RP_FAN) += rp_fan_power.o
./drivers/rongpin/rp_fan_power.c: //Create proc/rp_fan
./drivers/rongpin/rp_fan_power.c: root_entry_fan = proc_mkdir("rp_fan", NULL);
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/orig_RD-rk3588_Android13/kernel-5.10$