如何找出哪个Linux驱动程序占用了我的GPIO?

时间:2013-04-16 09:45:52

标签: linux-device-driver gpio

我的电路板上有一个多用作GPIO的焊盘。当我尝试通过/ sys / class / gpio / export导出它时,我得到了

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

我的猜测是其他一些司机在我获得这个机会之前请求这个垫。我怎样才能找到保留它的内容?

4 个答案:

答案 0 :(得分:17)

在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    

答案 1 :(得分:4)

如果您尝试使用cat /sys/kernel/debug/gpio但它无效,请先尝试:

mount -t debugfs debugfs /sys/kernel/debug

然后使用前面提到的cat命令

答案 2 :(得分:1)

您可以使用'lsof'命令列出打开的文件。根据事实,gpio文件是常规文件。 (例如/ sys / class / gpio / gpio242 / value)。
此外,您应该确保将正确的内核模块(使用insmod或modprobe)加载到内存中。

答案 3 :(得分:1)

我们最终使用了另一个GPIO引脚。 i.mx6有7个GPIO控制器,每个控制器有32个引脚,有些控制器只是给出了看似无处的I / O错误。