我尝试使用 RAMIPS SoC 和PWM IR TX 内核模块将 pwm 输出引脚用作 IR 发射器。我正在运行 linux 4.14.37 并将以下条目添加到 dts 文件中:
pwm_ir_tx1: pwm-ir-transmitter1 {
compatible = "pwm-ir-tx";
pwms = <&pwm 1 100>;
};
我正在加载 rc-core 和 pwm-ir-tx 内核模块:
lsmod | grep pwm
pwm_ir_tx 2032 0
pwm_mediatek_ramips 1744 1
rc_core 19348 2 pwm_ir_tx
当 pwm-ir-tx 模块加载时,内核会记录:
[ 3754.108259] rc rc0: PWM IR Transmitter as /devices/platform/pwm-ir-transmitter1/rc/rc0
sysfs 节点似乎已正确加载:
ls -la /sys/class/rc/
drwxr-xr-x 2 root root 0 May 29 00:18 .
drwxr-xr-x 23 root root 0 Jan 1 1970 ..
lrwxrwxrwx 1 root root 0 May 29 01:16 rc0 -> ../../devices/platform/pwm-ir-transmitter1/rc/rc0
但是 /dev 中没有列出用户空间 (chardev) lirc 设备,所以我不确定我应该如何与设备交互。理想情况下,我想使用远程控制器 API,但这需要 /dev 中存在 chardev。
ls /dev
autofs mtd2ro network_throughput
console mtd3 null
cpu_dma_latency mtd3ro port
full mtd4 ptmx
gpiochip0 mtd4ro pts
gpiochip1 mtd5 random
gpiochip2 mtd5ro shm
gpiochip3 mtd6 tty
i2c-0 mtd6ro ttyS0
kmsg mtdblock0 ttyS1
log mtdblock1 ttyS2
memory_bandwidth mtdblock2 urandom
mtd0 mtdblock3 watchdog
mtd0ro mtdblock4 watchdog0
mtd1 mtdblock5 zero
mtd1ro mtdblock6
mtd2 network_latency
我尝试在 pwm-ir-tx 模块之前和之后加载 lirc_dev 模块,但 /dev 中仍然没有出现任何内容,当我加载 lirc_dev 模块时出现以下输出:
[ 4775.367966] lirc_dev: IR Remote Control driver registered, major 251
但是 /dev 中仍然没有 lirc 用户空间设备...我认为 lirc_dev 模块是必需的,因为它提供了 lirc 用户空间 api,但它与 pwm-ir-tx 模块之间似乎没有任何联系,并且它没有在 /dev 中创建任何 lirc chardevs。