gpioset:设置 GPIO 线值时出错:设备或资源繁忙

gpioset:设置 GPIO 线值时出错:设备或资源繁忙

我在 SAMA5D27 嵌入式主板上使用 Linux。我还使用 libgpiod 来操作主板的 GPIO 配置。首先,我可以使用命令列出指定 gpiochips 的所有行、它们的名称、消费者、方向、活动状态gpioinfo,如下所示:

gpiochip0 - 128 lines:
        line   0:        "PA0"       unused   input  active-high 
        line   1:        "PA1"       unused   input  active-high 
        line   2:        "PA2"       unused   input  active-high 
        line   3:        "PA3"       unused   input  active-high 
        line   4:        "PA4"       unused   input  active-high 
        line   5:        "PA5"       unused   input  active-high 
        line   6:        "PA6"       unused   input  active-high 
        line   7:        "PA7"       unused   input  active-high 
        line   8:        "PA8"       unused   input  active-high 
        line   9:        "PA9"       unused   input  active-high 
        line  10:       "PA10"        "red"  output  active-high [used]
        line  11:       "PA11"       unused   input  active-high 
...

对于我的工作,我想保留“PA10”供个人使用;,此引脚指的是红色 LED。但无论使用什么命令来操作此 GPIO 引脚,它都会向我显示:

error setting the GPIO line values: Device or resource busy

我认为那是因为它显示为[used]

有没有办法让它不再使用?让它自由,以便我可以操作它?

答案1

标记usedDevice or resource busy表示此 I/O 引脚已被驱动程序专用。

有几种方法可以深入了解哪些人可能使用了 PIN 码:

  • 检查/sys/class/gpio/gpio*/(现已弃用,但仍经常使用)
  • 检查/sys/kernel/debug/gpio(如果有debugfs可用且已安装)
  • 检查活动设备树,查看引脚是否与设备或驱动程序关联

red在这里命名,你提到它是一个 LED,所以它可以在 下显示/sys/class/leds/*,可能带有默认触发器?如果是这样,你可以通过修改触发器来重新利用它,或者如果你想更直接地手动控制引脚/使用 libgpiod,则将其取消注册为 LED……编辑设备树可能是使更改永久生效的方法。

答案2

“已使用”表示此引脚连接到外围设备或总线。您可以从内核设备树 dts 文件和电路板原理图中检查哪一个映射到此引脚。例如,如果引脚连接到 i2c 总线,则应使用 i2c 命令而不是 gpio cmd。

相关内容