2013-04-16 86 views
15

我的電路板上有一個多用作GPIO的墊。當我嘗試通過/ SYS /班/ GPIO /出口導出,我得到如何找出哪個Linux驅動程序佔用了我的GPIO?

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

我的猜測是一些其他的駕駛者要求此墊之前,我得到這樣的機會。我怎樣才能找出保留它的內容?

回答

10

在邊界設備內核以及其他可能的內核上,可以使用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  

'

+0

謝謝,這看起來非常有用。我想知道3年前它是否存在。 –

+0

也許吧。我搜索了同樣的問題,但沒有找到答案,所以我只是做了一個'find/sys -name gpio',並發現這個,這讓我知道我在請求錯誤的GPIO。 –

0

您可以使用'lsof'命令列出打開的文件。根據事實,gpio文件是常規文件。 (例如/ sys/class/gpio/gpio242/value)。
此外,您應該確定將正確的內核模塊(使用insmod或modprobe)加載到內存中。

+1

作爲sysfs的節點尚不存在,這是行不通的。迴應要導出的GPIO編號應創建該節點,但不會。 –

+0

如果您加載了正確的內核模塊,您可以在/ sys/devices/virtual/gpio /目錄中看到所有可用的gpio。 什麼是您的目錄內容? 您可以看到標籤文件以遵循其在電路板原理圖中的真實位置。 – paykoob

1

我們結束了使用另一個GPIO引腳。 i.mx6有7個GPIO控制器,每個控制器有32個引腳,有些控制器只是簡單地給I/O錯誤看似無處可逃。

相關問題