2013-04-16 37 views
15

Tôi có một pad nhân với GPIO trên bảng của tôi. Khi tôi cố gắng xuất thông qua/sys/class/gpio/export, tôi nhận đượcLàm thế nào để tôi có thể tìm ra trình điều khiển Linux đang lưu trữ GPIO của tôi?

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

Tôi đoán là một số trình điều khiển khác đang yêu cầu pad này trước khi tôi có cơ hội đó. Làm thế nào tôi có thể tìm ra những gì được đặt trước?

Trả lời

10

Trên hạt nhân Thiết bị ranh giới và có thể là những người khác, bạn có thể sử dụng cat /sys/kernel/debug/gpio để có danh sách các gpios được ánh xạ, trạng thái và tên được cung cấp khi được phân bổ. Bạn có thể grep nguồn kernel cho tên và tìm ra module nào nắm lấy nó.

[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

Cảm ơn bạn, điều này có vẻ vô cùng hữu ích. Tôi tự hỏi nếu nó tồn tại 3 năm trước. –

+0

Có thể. Tôi đã tìm kiếm cùng một câu hỏi, và không tìm thấy câu trả lời, vì vậy tôi đã làm một 'find/sys -name gpio' và tìm thấy điều này, cho tôi biết rằng tôi đã yêu cầu GPIO sai. –

0

Bạn có thể sử dụng lệnh 'lsof' để liệt kê các tệp đang mở. theo thực tế là các tệp gpio là các tệp thông thường. (ví dụ:/sys/class/gpio/gpio242/value).
Ngoài ra, bạn nên chắc chắn tải các mô-đun hạt nhân đúng (với insmod hoặc modprobe) vào bộ nhớ.

+1

Điều đó sẽ không làm việc như nút sysfs không tồn tại được nêu ra. Việc cho ra số GPIO để xuất sẽ tạo ra nút, nhưng nó thì không. –

+0

Nếu bạn nạp mô-đun hạt nhân thích hợp, bạn có thể xem tất cả các gpio có sẵn trong thư mục/sys/devices/virtual/gpio /. Nội dung thư mục của bạn là gì? Bạn có thể xem tệp nhãn để theo dõi vị trí thực của nó trong sơ đồ bảng. – paykoob

1

Chúng tôi đã sử dụng một chốt GPIO khác. i.mx6 có 7 bộ điều khiển GPIO với 32 chân mỗi bộ, và một số conrollers chỉ đơn giản là đưa ra lỗi I/O ra khỏi dường như hư không.

Các vấn đề liên quan