linux-device-driver - linux device drivers español
¿Cómo puedo saber qué controlador de Linux está acaparando mi GPIO? (4)
Tengo un pad multipxed como GPIO en mi tablero. Cuando intento exportarlo a través de / sys / class / gpio / export, obtengo
-sh: echo: write error: Device or resource busy
Supongo que algún otro conductor está solicitando este pad antes de tener esa oportunidad. ¿Cómo puedo saber qué es lo que está reservando?
En el kernel de Boundary Devices, y quizás en otros, puede usar cat /sys/kernel/debug/gpio
para obtener una lista de los gpios asignados, sus estados y el nombre dado cuando se asignó. Puede grep la fuente del kernel para el nombre y averiguar qué módulo lo tomó.
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
''
Puede usar el comando ''lsof'' para listar los archivos abiertos. De acuerdo con el hecho de que los archivos gpio son archivos regulares. (por ejemplo, / sys / class / gpio / gpio242 / value).
También debe asegurarse de cargar los módulos de kernel correctos (con insmod o modprobe) en la memoria.
Si intenta usar cat /sys/kernel/debug/gpio
y no está funcionando, primero intente:
mount -t debugfs debugfs /sys/kernel/debug
y luego usar el comando cat
antes mencionado
Terminamos usando otro pin GPIO. i.mx6 tiene 7 controladores GPIO con 32 pines cada uno, y algunos controladores simplemente estaban dando errores de E / S aparentemente de ninguna parte.