ボード上にGPIOとしてマルチプレックスされたパッドがあります。/sys/class/gpio/exportを介してエクスポートしようとすると、次のようになります。
-sh: echo: write error: Device or resource busy
私の推測では、他のドライバーがそのチャンスを得る前にこのパッドを要求しています。何が予約されているのかを知るにはどうすればよいですか?
Boundary Devicesカーネル、およびおそらく他のカーネルでは、cat /sys/kernel/debug/gpio
を使用して、マップされたgpios、それらの状態、および割り当て時に指定された名前のリストを取得できます。名前のカーネルソースをgrepして、どのモジュールがそれを取得したかを調べることができます。
root@nitrogen6x:/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
'
cat /sys/kernel/debug/gpio
を使おうとしても機能しない場合は、最初に次のことを試してください。
mount -t debugfs debugfs /sys/kernel/debug
次に、前述のcat
コマンドを使用します
最終的に別のGPIOピンを使用しました。 i.mx6にはそれぞれ32ピンの7つのGPIOコントローラーがあり、一部のコントローラーは、どこからともなくI/Oエラーを出していました。
'lsof'コマンドを使用して、開いているファイルを一覧表示できます。 gpioファイルが通常のファイルであるという事実によると。 (例:/ sys/class/gpio/gpio242/value)。
また、適切なカーネルモジュール(insmodまたはmodprobeを使用)をメモリにロードする必要があります。