32

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

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

我的猜测是在我得到这个机会之前,其他一些司机正在请求这个垫子。我怎样才能知道什么是保留它?

4

5 回答 5

39

在边界设备内核上,也许还有其他内核上,您可以使用它cat /sys/kernel/debug/gpio来获取映射的 gpio 列表、它们的状态以及分配时给出的名称。您可以 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    

'

于 2016-05-13T17:04:25.380 回答
6

如果您尝试使用cat /sys/kernel/debug/gpio但它不起作用,请先尝试:

mount -t debugfs debugfs /sys/kernel/debug

然后使用上述cat命令

于 2018-04-10T15:26:07.723 回答
1

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

于 2014-03-20T11:35:04.293 回答
1

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

于 2013-08-03T10:19:46.187 回答
0

/sys/kernel/debug/gpio旧版 GPIO 接口的一部分,可能不存在于较新的内核上。替代品是libgpio-toolsgpioinfo工具;这些工具使用较新的字符设备接口来处理 gpios。

如果使用buildroot,启用BR2_PACKAGE_LIBGPIODBR2_PACKAGE_LIBGPIOD_TOOLS.

buildroot:~ $ gpiodetect
gpiochip0 [30200000.gpio] (32 lines)
gpiochip1 [30210000.gpio] (32 lines)
gpiochip2 [30220000.gpio] (32 lines)
gpiochip3 [30230000.gpio] (32 lines)
gpiochip4 [30240000.gpio] (32 lines)
gpiochip5 [0-0023] (16 lines)

buildroot:~ $ gpioinfo
gpiochip0 - 32 lines:
    line   0:      unnamed       unused   input  active-high 
    line   1:      unnamed       unused   input  active-high 
    line   2:      unnamed       unused   input  active-high 
    line   3:      unnamed       unused   input  active-high 
    line   4:      unnamed       unused   input  active-high 
    line   5:      unnamed       unused   input  active-high 
    line   6:      unnamed "pci_usb_sel" output active-high [used]
    line   7:      unnamed       "dio0"   input  active-high [used]
    line   8:      unnamed       unused   input  active-high 
    line   9:      unnamed       "dio1"   input  active-high [used]
    line  10:      unnamed "regulator-usb-otg1" output active-high [used]
(...)
于 2022-03-02T11:08:36.197 回答