gpioset: GPIO ライン値の設定エラー: デバイスまたはリソースがビジーです

gpioset: GPIO ライン値の設定エラー: デバイスまたはリソースがビジーです

私は SAMA5D27 組み込みボードで Linux を使用しています。また、ボードの GPIO 構成を操作するために libgpiod も使用しています。まず、コマンドを使用して、指定された 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

マーカーusedと は、Device or resource busyこの I/O ピンがドライバーによって排他的に使用されていることを意味します。

ピンを使用している可能性のあるものを調べるには、いくつかの方法があります。

  • チェック/sys/class/gpio/gpio*/(現在は非推奨ですが、まだよく使われています)
  • チェック/sys/kernel/debug/gpio(利用debugfs可能でマウントされている場合)
  • アクティブなデバイスツリーを確認し、ピンがデバイスまたはドライバーに関連付けられているかどうかを確認します。

ここで名前が付けられておりred、LED であるとおっしゃっているので/sys/class/leds/*、デフォルトのトリガーを使用して で公開できる可能性がありますか? その場合は、トリガーを変更して目的を変更するか、ピンをより直接的に/libgpiod を使用して手動で制御する場合は LED として登録解除します...デバイス ツリーを編集することが、変更を永続的にする方法である可能性があります。

答え2

「使用済み」とは、このピンが周辺機器またはバスに接続されていることを意味します。カーネル デバイス ツリー dts ファイルとボードの回路図から、このピンにマップされているものを確認できます。たとえば、ピンが i2c バスに接続されている場合は、gpio コマンドの代わりに i2c コマンドを使用する必要があります。

関連情報