4.5.15. GPIO IRQ 测试
4.5.15.1. 测试原理
GPIO IRQ(中断)功能
按键
输入 检测。 外部
信号 触发(如 电平 上升 沿/下降 沿)。 外设
状态 反馈 检测(如 传感器 触发)。
4.5.15.2. 测试准备工作
确认
硬件 连接 查阅
原理图,找到 GPIO 引脚,如图 黄框 所示:

设备树
配置 在
设备树 中 添加 gpio_keys_hobot 节点,并 配置 属性:
/dts-v1/; #include "x5.dtsi" #include "x5-memory.dtsi" #include "pinmux-func.dtsi" #include "pinmux-gpio.dtsi" #include <dt-bindings/input/linux-event-codes.h> #include <autoconf.h> / { #address-cells = <2>; #size-cells = <2>; gpio-keys { compatible = "gpio-keys"; autorepeat; pinctrl-names = "default"; pinctrl-0 = <&aon_gpio_2>; key-power { debounce-interval = <100>; gpios = <&aon_gpio_porta 2 GPIO_ACTIVE_LOW>; label = "GPIO Key Power"; linux,code = <KEY_WAKEUP>; wakeup-source; }; }; gpio_keys_hobot { compatible = "hobot,gpio_key"; debounce-interval = <200>; gpios = <&ls_gpio0_porta 12 GPIO_ACTIVE_LOW>; pinctrl-names = "default"; }; gua_audio_rpc_wrapper:audio-rpc-wrapper { compatible = "gua,audio-rpc-wrapper"; rpmsg-enable; status = "okay"; };
调试
工具 准备 cat /proc/interrupts:查看
中断 触发 次数; dmesg:查看
驱动 日志 和 GPIO 电平 变化; 杜邦
线:用于 短接 GPIO 和 GND 测试 中断 触发。
4.5.15.3. 测试方法
加载驱动
将gpio_key_drv.ko 上/userdata 目录
执行命令
root@buildroot:/userdata/gpio_irq_test# insmod gpio_key_drv.ko
正常
[64581.388130] gpio_key_init: init
[64581.391774] gpio_key_probe: probe start
确认
lsmod
输出
gpio_key_drv 16384 0
使用驱动测试
使用
watch -n 1 "cat /proc/interrupts | grep gpio_keys_hobot"
示例
Every 1.0s: cat /proc/interrupts | grep gpio_keys_hobot buildroot: Thu Jan 1 18:34:38 1970
77: 528 0 0 0 0 0 0 0 gpio-dwapb 12 Edge gpio_keys_hobot
查看
dmesg | tail
示例
[ 217.715873] gpio_key: IRQ GPIO 391 value=0
[ 218.152797] gpio_key: IRQ GPIO 391 value=1
4.5.15.4. 测试指标
驱动/proc/interrupts 和 dmesg 日志
驱动
能够 稳定 运行 48 小时,无 内核 崩溃、死锁 或 系统 重启 等 异常。 /proc/interrupts 中
相关 中断 计数 正常 递增; dmesg 中
能 实时 打印 GPIO 电平 变化 日志; 日志
中 无 fail、error、timeout 等 异常 关键字: dmesg | grep -iE 'error|fail|timeout'
4.5.15.5. 测试结果
检查
异常 关键字:
dmesg | grep -iE 'error|fail|timeout'
输出
查看
中断 次数:
cat /proc/interrupts | grep gpio_keys_hobot
示例
77: 28 0 0 0 0 0 0 0 gpio-dwapb 12 Edge gpio_keys_hobot
中断
查看 GPIO 电平
变化:
dmesg | tail
部分
[ 217.715873] gpio_key: IRQ GPIO 391 value=0
[ 218.152797] gpio_key: IRQ GPIO 391 value=1
[ 219.355553] gpio_key: IRQ GPIO 391 value=0
[ 220.439865] gpio_key: IRQ GPIO 391 value=1
...
日志