【发布时间】:2013-04-08 15:55:23
【问题描述】:
我的板上有一个作为 GPIO 复用的焊盘。当我尝试通过 /sys/class/gpio/export 导出它时,我得到了
-sh: echo: write error: Device or resource busy
我的猜测是其他司机在我得到这个机会之前就要求使用这个垫子。我怎样才能知道它在保留什么?
【问题讨论】:
我的板上有一个作为 GPIO 复用的焊盘。当我尝试通过 /sys/class/gpio/export 导出它时,我得到了
-sh: echo: write error: Device or resource busy
我的猜测是其他司机在我得到这个机会之前就要求使用这个垫子。我怎样才能知道它在保留什么?
【问题讨论】:
您可以使用“lsof”命令列出打开的文件。事实上,gpio 文件是常规文件。 (例如 /sys/class/gpio/gpio242/value)。
此外,您应该确保将正确的内核模块(使用 insmod 或 modprobe)加载到内存中。
【讨论】:
我们最终使用了另一个 GPIO 引脚。 i.mx6 有 7 个 GPIO 控制器,每个控制器有 32 个引脚,一些控制器只是在看似无处提供 I/O 错误。
【讨论】:
在边界设备内核上,也许还有其他内核上,您可以使用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
'
【讨论】:
find /sys -name gpio 并找到了这个,这让我知道我请求了错误的 GPIO。
如果您尝试使用cat /sys/kernel/debug/gpio 但它不起作用,请先尝试:
mount -t debugfs debugfs /sys/kernel/debug
然后使用前面提到的cat 命令
【讨论】: