This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] TDA4VM: 如何测试 GPIO 中断

Part Number: TDA4VM

是否有办法测试 GPIO 中断的功能,而无需以物理方式驱动线路作为输入并在外部控制引脚状态?

  • TDA4/J721e/J7200 上 GPIO 的中断路径:


    GPIO -> INTRGPIO 中断路由器)> 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/rootfs
    
    sudo 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