Part Number:TDA4VM
是否有办法测试 GPIO 中断的功能,而无需以物理方式驱动线路作为输入并在外部控制引脚状态?
Annie Liu:
TDA4/J721e/J7200 上 GPIO 的中断路径:
GPIO -> INTR(GPIO 中断路由器)> GIC500
另请注意,在 Linux 驱动程序中,仅支持分组中断,而不支持无分组中断。
我们可以验证上述整个 GPIO 中断路径,甚至无需从外部控制GPIO 引脚。下面是一个简单的代码片段,用于配置 GPIO 引脚并注册中断处理程序。
生成/伪装中断的诀窍是将 GPIO 配置为输出并切换 GPIO 的状态。 0001-davinci_gpio-Test-interrupts.patch
将上述补丁应用于 PSDKLA 8.0 的 Linux 目录
cd $PSDKLA_PATH/board-support/linux*git am 0001-davinci_gpio-Test-interrupts.patch cd ../.. make linux Insert the SD card Edit Rules.make to point DESTDIR to rootfs of SD card: DESTDIR=/media/$USER/rootfssudo make linux_install sync这应该会为 wkup_GPIO 模块 GPIO_52 注册一个测试中断处理程序。
启动后,我们需要在 Linux 中为 wkup_GPIO_52 确定 GPIO 编号
cat /sys/class/gpio/gpiochip372/label
42110000.gpio
因此,wkup_GPIO 模块以 372 开头,而 wkup_GPIO_52 将为 372+52=424
echo 424 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio424/direction echo 1 > /sys/class/gpio/gpio424/value可以从 wkup_GPIO_52 测试中断处理程序查看打印内容。
[ 83.608230] test_irq: irq 293, val=0
我们还可以检查中断计数增加:
cat /proc/interrupts | grep key-gpio 293: 2 0 GPIO 52 Edge -davinci_gpio key-gpio