2013-04-16 3 views
15

मेरे पास मेरे बोर्ड पर जीपीआईओ के रूप में एक पैड गुणा किया गया है। जब मैं के माध्यम से/sys/कक्षा/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

शायद। मैंने एक ही प्रश्न की खोज की, और मुझे कोई जवाब नहीं मिला, इसलिए मैंने अभी 'ढूंढें/sys -name gpio' किया है और यह पाया है, जो मुझे बताता है कि मैं गलत जीपीआईओ का अनुरोध कर रहा था। –

0

आप खुली फ़ाइलों को सूचीबद्ध करने के लिए 'lsof' कमांड का उपयोग कर सकते हैं। तथ्य यह है कि जीपीओ फाइल नियमित फाइलें हैं। (उदाहरण/sys/class/gpio/gpio242/मान)।
इसके अलावा आपको स्मृति में सही कर्नेल मॉड्यूल (इंसमोड या मोडप्रोब के साथ) लोड करने का यकीन होना चाहिए।

+1

कि के रूप में sysfs नोड अभी तक अस्तित्व में नहीं है काम नहीं करेगा। निर्यात करने के लिए जीपीआईओ नंबर को प्रतिबिंबित करना नोड बनाना चाहिए, लेकिन ऐसा नहीं है। –

+0

यदि आप सही कर्नेल मॉड्यूल लोड करते हैं, तो आप सभी उपलब्ध जीपीओ/sys/devices/वर्चुअल/gpio/निर्देशिका में देख सकते हैं। निर्देशिका की आपकी सामग्री क्या है? आप लेबल फ़ाइल को बोर्ड की स्कीमैटिक्स में अपनी वास्तविक स्थिति का पालन करने के लिए देख सकते हैं। – paykoob

1

हम एक और जीपीआईओ पिन का उपयोग कर समाप्त हो गए। i.mx6 में 32 पिन प्रत्येक के साथ 7 जीपीआईओ नियंत्रक हैं, और कुछ नियंत्रक बस कहीं भी कहीं से I/O त्रुटियों को नहीं दे रहे थे।

संबंधित मुद्दे

 संबंधित मुद्दे