2013-04-16 10 views
15

私はボード上でGPIOとしてパッドを多重化しています。私は、/ SYS /クラス/ GPIO /エクスポートを経由して、それをエクスポートしようとすると、私が取得GPIOをどのLinuxドライバが使用しているのか、どうすればわかりますか?

-sh: echo: write error: Device or resource busy 

私の推測では、私はそのチャンスを得る前に、いくつかの他のドライバーは、このパッドを要求しています。どのようにそれを予約しているのかを知ることができますか?

答えて

10

境界デバイスカーネルやその他の場合は、cat /sys/kernel/debug/gpioを使用して、マッピングされたgpios、その状態、および割り当て時の名前のリストを取得できます。カーネルソースに名前をgrepして、どのモジュールがそれをつかんでいるかを調べることができます。

[email protected]:/opt# cat /sys/kernel/debug/gpio 
GPIOs 0-31, platform/209c000.gpio, 209c000.gpio: 
gpio-2 (flexcan-trx-stby ) out lo  
gpio-17 (DISP_SCL   ) out lo  

GPIOs 32-63, platform/20a0000.gpio, 20a0000.gpio: 
gpio-33 (sysfs    ) out lo  
gpio-35 (sysfs    ) in hi  
gpio-36 (sysfs    ) in hi  
gpio-37 (DISP_SDI   ) out lo  
gpio-38 (219c000.usdhc cd ) in hi  

GPIOs 64-95, platform/20a4000.gpio, 20a4000.gpio: 
gpio-83 (spi_imx   ) out lo  
gpio-86 (usb_otg_vbus  ) out lo  

GPIOs 96-127, platform/20a8000.gpio, 20a8000.gpio: 
gpio-101 (sysfs    ) in hi  
gpio-116 (rst-gpios   ) out lo  

GPIOs 128-159, platform/20ac000.gpio, 20ac000.gpio: 

GPIOs 160-191, platform/20b0000.gpio, 20b0000.gpio: 
gpio-175 (wlan-en   ) out lo  
gpio-176 (bt_rfkill_reset ) out lo  

GPIOs 192-223, platform/20b4000.gpio, 20b4000.gpio: 
gpio-192 (2198000.usdhc cd ) in lo  
gpio-204 (ehci_reset_gpio ) out lo  
gpio-205 (sysfs    ) in lo  

"のsysfsノードがまだ存在していないと動作しません

+0

ありがとう、これは非常に便利です。私はそれが3年前に存在したのだろうかと思います。 –

+0

おそらく。私は同じ質問を探して答えを見つけられなかったので、 'find/sys -name gpio'を実行してこれを見つけました。私が間違ったGPIOを要求していたことがわかりました。 –

0

'lsof'コマンドを使用して、開いているファイルを一覧表示できます。 gpioファイルは通常のファイルであるという事実によると、 (例:/ sys/class/gpio/gpio242/value)。
また、適切なカーネルモジュール(insmodまたはmodprobeとともに)をメモリにロードすることを確認する必要があります。

+1

。エクスポートするGPIO番号をエコーすると、ノードが作成されますが、作成されません。 –

+0

正しいカーネルモジュールをロードすると、/ sys/devices/virtual/gpio /ディレクトリにあるすべてのgpioを見ることができます。 ディレクトリの内容は何ですか? ボードの回路図で実際の位置に従うラベルファイルを見ることができます。 – paykoob

1

別のGPIOピンを使用してしまいました。 i.mx6にはそ​​れぞれ32ピンの7つのGPIOコントローラがあり、一部のコントローラでは見かけ上I/Oエラーが発生していました。

関連する問題