2010-05-12 8 views
18

मैं हार्डवेयर प्रोग्रामिंग (विशेष रूप से यूएसबी) के लिए नया हूं इसलिए कृपया मेरे और मेरे प्रश्नों को सहन करें। मैं सी ++ का उपयोग कर रहा हूं और मुझे माइक्रोप्रोसेसर बोर्ड पर यूएसबी पोर्ट से कुछ डेटा (एक बाइट सरणी) भेजने/प्राप्त करने की आवश्यकता है।सी ++ यूएसबी प्रोग्रामिंग

अब, मैं पहले कुछ सीरियल पोर्ट प्रोग्रामिंग किया है और मुझे पता है कि एक सीरियल पोर्ट के लिए आप एक बंदरगाह, सेटअप को खोलने के लिए है, आई/ओ प्रदर्शन और अंत में बंदरगाह को बंद करें। मैं एक यूएसबी पोर्ट का उपयोग करने का अनुमान लगा रहा हूं, जैसा कि मैंने उपर्युक्त उल्लेख किया है उतना आसान नहीं है।

मुझे पता है कि मैं माइक्रोसॉफ्ट मानक ड्राइवरों का उपयोग करना चाहता हूं और इसे पूरा करने के लिए मानक विंडोज आईओ कमांड को लागू करना चाहता हूं, क्योंकि मेरा मानना ​​है कि मेरे लिए बातचीत करने के लिए माइक्रोप्रोसेसर बोर्ड के लिए कोई ड्राइवर नहीं है।

किसी एक यूएसबी पोर्ट (खुला, स्थापना, आई/ओ) के माध्यम से मानक Windows आईओ आदेशों को "बात" करने के लिए आवश्यक कदम के रूप में सही दिशा में मुझे बात कर सकते हैं, मैं सच में और बहुत यह जानना चाहेंगे। आपका बहुत बहुत धन्यवाद!!

+3

+1 जिज्ञासा से बस आप क्या करने की योजना बना रहे हैं? (एपोलॉजीज मैं मदद नहीं कर सकता लेकिन जवाब में दिलचस्पी लेता हूं) –

उत्तर

2

हार्डवेयर प्रोग्रामिंग करके, आप आप माइक्रो प्रोग्रामिंग हो जाएगा मतलब है? यदि ऐसा है, तो आप "मानक विंडोज ड्राइवर" या उसके जैसा कुछ भी उपयोग नहीं करेंगे।

यूएसबी मानक बहुत मोटा है। इसे देखें here

यह एक बहुत ही शामिल विषय है और मैं आपके माइक्रोकंट्रोलर के लिए पहले से बनाए गए यूएसबी कार्यान्वयन को खोजने की सलाह देता हूं।

+0

नहीं, मैं माइक्रो नियंत्रक प्रोग्रामिंग नहीं करूँगा .... शायद मैं पर्याप्त स्पष्ट नहीं था। मुझे बस यूएसबी पोर्ट से लिखना और पढ़ना होगा। –

16

USB in a nutshell (जिसे हम अगर आप हमें और अधिक जानकारी दे दी है ढूँढने में सक्षम हो सकता है) उत्कृष्ट पृष्ठभूमि पढ़ने है।

एक सामान्य यूएसबी मॉड्यूल के लिए LibUSB जो मानक उपकरणों से बात कर के कुछ उदाहरण भी शामिल है की कोशिश करो। LibUSB-Win32 उस पुस्तकालय का विंडोज पोर्ट है।

आप सही हैं, हालांकि के पास एक RS232 पोर्ट के रूप में सरल नहीं है।

आप किस माइक्रोप्रोसेसर का उपयोग कर रहे हैं? क्या यह किसी भी यूएसबी हार्डवेयर के साथ आता है या आप इसे सॉफ़्टवेयर में लागू करने की कोशिश करने के बारे में सोच रहे हैं (कुछ ऐसा नहीं जो मैं पर विचार कर रहा हूं!)। बहुत से माइक्रोप्रोसेसर कोड नमूने के साथ आते हैं जो सरल छिपाई यूएसबी डिवाइस जैसे कीबोर्ड/चूहों आदि का अनुकरण कर सकते हैं जिन्हें आप शुरुआती बिंदु के रूप में उपयोग कर सकते हैं। ऐसा लगता है कि, शायद a few off-the-shelf options है जो आपको बहुत सारे सिरदर्द बचाएगा :-)

+0

+1। आपका जवाब मेरा से ज्यादा उपयोगी है :) – Earlz

+0

+1 सभी में अच्छी सलाह है। डिवाइस की तरफ, मौजूदा विंडोज-साइड ड्राइवरों में फिट होना सर्वोत्तम है और छुपा एक बहुत लचीला है। – kenny

1

किस प्रकार का माइक्रोप्रोसेसर और किस प्रकार का बोर्ड?

कई प्रोसेसर यूएसबी पोर्ट के लिए समर्थन के साथ आते हैं। इसके अलावा, कुछ हार्डवेयर बोर्ड यूएसबी contollers के साथ भी आते हैं।

उदाहरण के लिए, मेरी दुकान का उपयोग करने वाला प्रोसेसर दो यूएसबी नियंत्रकों के साथ आता है जो एक हब या डिवाइस के रूप में कार्य कर सकते हैं। हम एक यूएसबी नियंत्रक के रूप में कार्य करने के लिए एक और प्रोसेसर भी जोड़ रहे हैं।

3

यूएसबी चिपसेट माइक्रोप्रोसेसर बोर्ड पर इस्तेमाल किया है, उदा जानकारी प्राप्त करें एफटीआई, साइप्रस, आदि। ये निर्माता कॉमर्स के लिए ड्राइवर, पुस्तकालय और उदाहरण कार्यक्रमों की आपूर्ति करते हैं, यह सबसे आसान तरीका है।

वहाँ इस तरह के रूप में कोई 'मानक' ड्राइवरों जब तक अपने बोर्ड एक HID डिवाइस के रूप में स्थापित कर रहा है कर रहे हैं, लेकिन यदि आप Windows का उपयोग कर रहे हैं, माइक्रोसॉफ्ट की आपूर्ति एक WinUSB.sys 'generic' driver जो या अपनी आवश्यकताओं को पूरा नहीं हो सकता है (यह Isochronous का समर्थन नहीं करता स्थानान्तरण)।

2

क्या आपको यूएसबी डिवाइस के लिए ड्राइवर लिखना चाहिए जो स्वयं संलग्न होगा। यदि आप चिप के प्रकार को जानते हैं जिसमें बोर्ड पर यूएसबी i/o है, तो ड्राइवर उस डिवाइस के लिए होगा।

यदि यह एसटीएम है तो ड्राइवर के लिए पहले से ही ड्राइवर हो सकता है या इसके लिए ड्राइवर विकसित करने में मदद करने के लिए एक एपीआई हो सकती है। यह शायद एक कस्टम डिवाइस होगा लेकिन आपको यह देखने के लिए डिवाइस प्रकारों को देखना चाहिए कि आपके डिवाइस से मेल खाने वाला कोई मौजूदा प्रकार है या नहीं। यदि ऐसा है तो आप इसके लिए पहले से ही एक ड्राइवर हो सकते हैं जिसका आप उपयोग कर सकते हैं। बोर्ड के बारे में जानकारी आवश्यक है।

आपके अपने ड्राइवर बाहर बहुत दूर इसे में हो रही के साथ लिखते हैं, आप माइक्रोसॉफ्ट के ड्राइवर मॉडल सीखना चाहिए, उपयोगकर्ता मोड और kernal मोड ड्राइवरों के बीच का अंतर, नोड के क्या चालक का प्रतिनिधित्व करते हैं, चालक पदानुक्रम और कैसे वे तार्किक खुद को देते हैं, विभिन्न प्रकार के ड्राइवर (फ़िल्टर, फ़ंक्शन, बस), कैसे उपयोगकर्ता इंटरफ़ेस, गतिशील लिंक लाइब्रेरीज़, फ्रेमवर्क और एपीआई, डब्लूडीएम फ्रेमवर्क/एपीआई, केएमडीएफ और यूएमडीएफ एपीआई के साथ कर्नल ड्राइवर का संवाद करता है और यह सिर्फ एक छोटी सूची है।

या आप मौजूदा ड्राइवर का उपयोग कर सकते हैं।

उपयोग यूएसबी Microcontroller ड्राइवर हम क्या फर्मवेयर यूएसबी माइक्रोकंट्रोलर उपयोग कर रहा है, यदि कोई पता नहीं है की आपूर्ति की। अगर कोई फर्मवेयर नहीं है (यदि चिप कहता है कि चिप बाहर आया है या इसे स्टोर करने के लिए ईप्रोम पर निर्भर करता है) तो अगर हमें पता था कि चिप यूएसबी बूटलोडर का समर्थन करता है, तो आप इसे फ्लैश कर सकते हैं या यूएसबी के माध्यम से इसे फर्मवेयर लोड कर सकते हैं और वहां है जेएफई या अन्य परिधीय की कोई ज़रूरत नहीं है। संभावना है कि अकेले यूएसबी जमीन से और कहीं से भी आपको दूर करने में सक्षम है। आम तौर पर बोर्ड के यूएसबी माइक्रोकंट्रोलर के साथ विचार करते समय इन प्रकार के प्रश्न उठते हैं।

यहां एक हल्के से संबंधित ड्राइवर का लिंक है। अधिकांश यूएसबी माइक्रोकंट्रोलर यूएआरटी को यूएसटी संचार स्विच करने के उद्देश्य से सेवा देते हैं क्योंकि अधिकांश माइक्रोक्रोनरोलर्स वास्तव में सोच और नियंत्रण करते हैं, सब कुछ यूएसबी आई/ओ के साथ सुसज्जित नहीं है बल्कि इसके बजाय यूएआरटी या आई 2 सी या एसआईआई जैसे कुछ अन्य आई/ओ पिन ..

https://www.silabs.com/products/mcu/Pages/USBXpress.aspx

वह ड्राइवर वास्तव में काम कर सकता है, अगर ऐसा कुछ नहीं है लेकिन आपके यूएसबी माइक्रोकंट्रोलर के निर्माता के लिए; लगभग निश्चित रूप से नौकरी करेंगे। उम्मीद है की यह मदद करेगा।

+0

HI, महान उत्तर - लेकिन यह WALLOFTEXT के रूप में आता है! शायद आप इसे संपादित कर सकते हैं ताकि यह पढ़ना आसान हो? :) –

+0

टैरिन ईस्ट मैं नहीं देखता कि समस्या क्या है। अंततः यूएसबी ड्राइवरों से संबंधित विचारों के बारे में बहुत सारी जानकारी है। यूएसबी मूल रूप से हार्डवेयर है। माइक्रोसॉफ्ट इस तरह के विकास के लिए सूचना और ढांचे का भरपूर धन भी प्रदान करता है। मेरी टिप्पणी डाउनवॉटेड है जबकि किसी और ने लिनक्स ड्राइवर का सुझाव दिया है जब प्रश्न स्पष्ट रूप से विंडोज़ टैग करता है। जबकि उन्होंने खिड़कियों के बंदरगाह का सुझाव दिया था। लिनक्स ड्राइवर का उपयोग क्यों करें जब माइक्रोसॉफ्ट के सचमुच दर्जनों पृष्ठों की जानकारी और यहां तक ​​कि नमूने भी हैं। यदि वह विंडोज़ पीसी का उपयोग कर रहा है तो उसे माइक्रोसॉफ्ट की गाइड लाइनों का पालन करना चाहिए। –

+0

विंडोज उपयोगकर्ता मोड यूएसबी ड्राइवर भी प्रदान करता है जो एक kmdf ड्राइवर लिखने की आवश्यकता से छुटकारा पाता है जो स्पष्ट रूप से अधिक जटिल है। यदि वह विंडोज चालकों को लिखना चाहता है तो इसके लिए बहुत कुछ है इसके आसपास कोई रास्ता नहीं है। विंडोज दस्तावेज पढ़ने के लिए कम "आसान" नहीं होगा।फिर भी कुछ लोगों को पढ़ने के लिए यह मूल्यवान लेख है। –

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