gpiod无法检测部分引脚上升沿但sysfs可正常检测的问题
gpiod无法检测部分引脚上升沿但sysfs正常的问题
我正将基于sysfs的事件轮询上升沿检测实现升级为gpiod,以利用内核事件时间戳功能。测试中发现gpiod无法检测部分引脚的上升沿,通过命令行工具gpiomon验证后确认,该工具也只能检测到这些引脚的下降沿,但sysfs实现却能正常检测两种边沿。
环境信息
- 内核版本:v4.19.94-ti-r73
- libgpiod版本:v1.4.1
- 处理器:TI AM33xx
- 系统:Debian buster
设备树配置
设备树基于基础dtsi文件组合,并添加以下自定义配置:
&am33xx_pinmux { ecap0_pins_default: ecap0_pins_default { pinctrl-single,pins = < AM33XX_IOPAD(0x964, PIN_INPUT | MUX_MODE0) /* gpio0[7] */ >; }; gpio3_pins_default: gpio3_pins_default { pinctrl-single,pins = < AM33XX_IOPAD(0x99c, PIN_INPUT | MUX_MODE7) /* gpio3[17] */ >; }; };
测试结果
gpiochip0引脚7测试
运行gpiomon gpiochip0 7可同时检测上升沿和下降沿:
gpiomon gpiochip0 7 event: RISING EDGE offset: 7 timestamp: [1709072918.200972377] event: FALLING EDGE offset: 7 timestamp: [1709072918.700979793] event: RISING EDGE offset: 7 timestamp: [1709072919.200997043] event: FALLING EDGE offset: 7 timestamp: [1709072919.701002002] event: RISING EDGE offset: 7 timestamp: [1709072920.201015460] event: FALLING EDGE offset: 7 timestamp: [1709072920.701029335] event: RISING EDGE offset: 7 timestamp: [1709072921.201066377]
gpiochip3引脚17测试
运行gpiomon gpiochip3 17仅能检测到下降沿:
gpiomon gpiochip3 17 event: FALLING EDGE offset: 17 timestamp: [1709073108.897098295] event: FALLING EDGE offset: 17 timestamp: [1709073109.897153795] event: FALLING EDGE offset: 17 timestamp: [1709073110.897172545] event: FALLING EDGE offset: 17 timestamp: [1709073111.897198629] event: FALLING EDGE offset: 17 timestamp: [1709073112.897222629] event: FALLING EDGE offset: 17 timestamp: [1709073113.897253671]
GPIO调试信息
查看/sys/kernel/debug/gpio确认引脚已配置为IRQ:
gpiochip0: GPIOs 0-31, parent: platform/44e07000.gpio, gpio-0-31: gpio-7 (ECAP0_IN_PWM0_OUT |gpiomon ) in hi IRQ gpiochip3: GPIOs 96-127, parent: platform/481ae000.gpio, gpio-96-127: gpio-113 (MCASP0_AHCLKR |gpiomon ) in lo IRQ
基于sysfs的监控工具可正常检测两个引脚的上升沿和下降沿。目前无法随意升级内核或软件版本,请问:为何gpiod无法检测部分引脚的上升沿却能检测下降沿?
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

