我的電路板上有一個多用作GPIO的墊。當我嘗試通過/ SYS /班/ GPIO /出口導出,我得到如何找出哪個Linux驅動程序佔用了我的GPIO?
-sh: echo: write error: Device or resource busy
我的猜測是一些其他的駕駛者要求此墊之前,我得到這樣的機會。我怎樣才能找出保留它的內容?
我的電路板上有一個多用作GPIO的墊。當我嘗試通過/ SYS /班/ GPIO /出口導出,我得到如何找出哪個Linux驅動程序佔用了我的GPIO?
-sh: echo: write error: Device or resource busy
我的猜測是一些其他的駕駛者要求此墊之前,我得到這樣的機會。我怎樣才能找出保留它的內容?
在邊界設備內核以及其他可能的內核上,可以使用cat /sys/kernel/debug/gpio
來獲取映射gpios,它們的狀態以及在分配時給出的名稱列表。您可以通過grep命名的內核源代碼找出哪個模塊抓取了它。
[email protected]:/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
'
您可以使用'lsof'命令列出打開的文件。根據事實,gpio文件是常規文件。 (例如/ sys/class/gpio/gpio242/value)。
此外,您應該確定將正確的內核模塊(使用insmod或modprobe)加載到內存中。
作爲sysfs的節點尚不存在,這是行不通的。迴應要導出的GPIO編號應創建該節點,但不會。 –
如果您加載了正確的內核模塊,您可以在/ sys/devices/virtual/gpio /目錄中看到所有可用的gpio。 什麼是您的目錄內容? 您可以看到標籤文件以遵循其在電路板原理圖中的真實位置。 – paykoob
我們結束了使用另一個GPIO引腳。 i.mx6有7個GPIO控制器,每個控制器有32個引腳,有些控制器只是簡單地給I/O錯誤看似無處可逃。
謝謝,這看起來非常有用。我想知道3年前它是否存在。 –
也許吧。我搜索了同樣的問題,但沒有找到答案,所以我只是做了一個'find/sys -name gpio',並發現這個,這讓我知道我在請求錯誤的GPIO。 –