मुझे एम्बेडेड डिवाइस के लिए डिवाइस ड्राइवर लिखने का काम सौंपा गया है जो एसपीआई इंटरफ़ेस के माध्यम से माइक्रो नियंत्रक के साथ संवाद करेगा। आखिरकार, यूएसबी इंटरफ़ेस को बाहरी स्तर पर अद्यतन कोड डाउनलोड करने और सत्यापन चरण के दौरान उपयोग करने के लिए उपयोग किया जाएगा।एम्बेडेड डिवाइसों के लिए यूएसबी - डिवाइस ड्राइवर/प्रोटोकॉल स्टैक को डिजाइन करना
मेरा प्रश्न है, क्या किसी को एक अच्छा संदर्भ डिजाइन या दस्तावेज़ीकरण या ऑनलाइन ट्यूटोरियल पता है जो यूएसबी प्रोटोकॉल स्टैक/डिवाइस ड्राइवर के कार्यान्वयन/डिज़ाइन को एम्बेडेड सिस्टम के भीतर कवर करता है? मैं अभी शुरू कर रहा हूं और 650 पेज यूएसबी v2.0 spec के माध्यम से पढ़ रहा हूं इस समय थोड़ा मुश्किल है।
बस एक एफवाईआई के रूप में, माइक्रो नियंत्रक जो मैं उपयोग कर रहा हूं वह एक फ्रीस्केल 9 एस 12 है।
मार्क
goldenmean के (-AD) टिप्पणियाँ मैं निम्नलिखित जानकारी जोड़ना चाहते थे पर आधारित:
1) एम्बेडेड उपकरण एक कस्टम कार्यकारी का उपयोग करता है और एक तख्त या RTOS का कोई उपयोग करता है।
2) डिवाइस डिवाइस से पुनर्प्राप्त करने के लिए डेटा तैयार करने के लिए इंटरप्ट का उपयोग करेगा।
3) मैंने लिनक्स के बारे में कुछ दस्तावेज़ों के माध्यम से पढ़ा है, लेकिन चूंकि मैं लिनक्स से परिचित नहीं हूं, इस समय यह बहुत उपयोगी नहीं है (हालांकि मुझे उम्मीद है कि यह बहुत जल्दी होगा)।
4) कम से कम, अब यूएसबी डिवाइस के लिए डिवाइस ड्राइवर लिखने के लिए डिज़ाइन दृष्टिकोण, तो यूएसबी प्रोटोकॉल परत (आई/ओ) डेटा की व्याख्या करने के लिए डिवाइस ड्राइवर के शीर्ष पर रहती है। मुझे लगता है कि यह सबसे अच्छा तरीका होगा, हालांकि मैं गलत हो सकता था।
संपादित करें - एक साल बाद
मैं सिर्फ इससे पहले कि वे मामले में मेरे मन से गायब हो मैं एक यूएसबी डिवाइस पर कभी काम नहीं कुछ आइटम साझा करना चाहते थे। कोड विकसित करते समय और इसे प्राप्त करने और पहले के लिए दौड़ते समय मैं कुछ बाधाओं में भाग गया।
पहली समस्या जो मैंने भागी थी वह यह था कि जब यूएसबी डिवाइस होस्ट से जुड़ा था (मेरे मामले में विंडोज) होस्ट होस्ट रीसेट अनुरोध जारी करता था। यूएसबी डिवाइस फ्लैग सक्षम इंटरप्ट को रीसेट और साफ़ करेगा। मैंने यह जानने के लिए पर्याप्त साहित्य नहीं पढ़ा था, इस प्रकार मैं सेट-अप अनुरोध इंटरप्ट कभी प्राप्त नहीं कर रहा था। इसे समझने में मुझे थोड़ी देर लग गई।
दूसरी समस्या जो मैंने भागी थी वह Set_Configuration के लिए सेट-अप अनुरोध को ठीक से संभाल नहीं रहा था। मैं इसे संभालने में कामयाब रहा था, लेकिन मैं इस अनुरोध को सही तरीके से संसाधित नहीं कर रहा था कि यूएसबी डिवाइस एसीके नहीं भेज रहा था जब यह सेट-अप अनुरोध आया था। अंत में मुझे हार्डवेयर यूएसबी प्रोटोकॉल विश्लेषक का उपयोग करके यह पता चला।
अन्य मुद्दों में मैं भाग गया था, लेकिन ये दो सबसे बड़े थे जिन्हें मुझे समझने में काफी समय लगा। मुझे जिस अन्य मुद्दे के बारे में चिंता करना पड़ा वह क्रमशः बड़े एंडियन और छोटे-एंडियन, फ्रीस्केल 9 एस 12 बनाम यूएसबी डेटा प्रारूप (इंटेल) है।
मैंने अतीत में किए गए यूएआरटी डिवाइस ड्राइवरों के समान यूएसबी डिवाइस ड्राइवर का निर्माण समाप्त कर दिया। मैंने निम्नलिखित यूआरएल पर कोड पोस्ट किया है।
http://lordhog.wordpress.com/2010/12/13/usb-drive
मैं संरचनाओं एक बहुत उपयोग करने के लिए, ताकि लोग उन्हें पसंद नहीं हो सकता है क्योंकि वे (जैसे MAX3420_SETUP_DATA_AVAIL_INT_REQR 0x20) #defines का उपयोग कर के रूप में के रूप में पोर्टल नहीं हैं करते हैं, लेकिन मैं उन्हें पसंद है, क्योंकि यह कोड अधिक बनाता है मेरे लिए पठनीयअगर किसी के पास इसके बारे में कोई सवाल है तो कृपया ई-मेल के लिए स्वतंत्र महसूस करें और मैं इसे कुछ अंतर्दृष्टि देने का प्रयास कर सकता हूं। पुस्तक "यूएसबी पूर्ण: द डेवलपर गाइड" सहायक थी, जब तक आप जानते थे कि किन क्षेत्रों पर ध्यान केंद्रित करना है। यह एक साधारण एप्लीकेशन था और केवल कम गति वाली यूएसबी का इस्तेमाल किया गया था।
मार्सेलो, जानकारी के लिए धन्यवाद और मैं इसे अपनी इच्छा सूची में रखूंगा, लेकिन इस पुस्तक के आने तक मुझे डिवाइस ड्राइवर और प्रोटोकॉल परतों को विकसित करने की आवश्यकता है। मैंने एक ही लेखक द्वारा पुस्तकों में से एक को आदेश दिया था। – lordhog
एचएम, यह नहीं देखा कि यह अभी तक बाहर नहीं था, क्षमा करें। लेकिन मुझे खुशी है कि यह आपके लिए कुछ उपयोग था =) उसकी किताबें बहुत अच्छी हैं। –
जब मैंने यूएसबी डिवाइस प्रोटोकॉल के बारे में पूछा, तो यह मेरी तकनीक लीड की पुस्तक थी। – Spike0xff