You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 20:13:12