español linux-device-driver gpio

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.