2011-09-16 25 views
32

के लिए पीसीआईई ड्राइवर मुझे कस्टम पीसीआईई ड्राइवर के विकास के लिए थोड़ी सी सलाह चाहिए। ड्राइवर को Windows CE 6.0 और Windows डेस्कटॉप (xp, 7, और 8 तैयार होने पर) दोनों का समर्थन करना चाहिए।विंडोज सीई और विंडोज डेस्कटॉप

हमारे पास विंडोज सीई के लिए ड्राइवर विकसित करने के बहुत सारे अनुभव हैं लेकिन विंडोज डेस्कटॉप के लिए कोई भी नहीं है। मुझे पूरा यकीन है कि हम एक अच्छा, ठोस विंडोज सीई ड्राइवर विकसित कर सकते हैं, लेकिन मुझे लगता है कि हम कुछ बाहरी सहायता के बिना विंडोज डेस्कटॉप के लिए ऐसा करने में सक्षम नहीं होंगे। मुझे लगता है कि हमारे पास दो विकल्प हैं:

1) मौजूदा ड्राइवर ढांचे का उपयोग करें जैसे कि जुन्गो विनड्राइवर, जो हमें एक बार ड्राइवर विकसित करने और बहुमुखी प्लेटफार्मों को संकलित करने की अनुमति देता है। इसका लाभ भी है कि अधिकांश विकास उपयोगकर्ता अंतरिक्ष में होंगे, इसलिए इसे विकास प्रक्रिया को सरल बनाना चाहिए।

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

प्रत्येक विकल्प के लाभ और डाउनसाइड्स क्या होंगे? क्या आप वैकल्पिक दृष्टिकोण की सिफारिश करेंगे?

+0

एलन एक उत्तर पाने के बेहतर अवसरों के लिए आपको अपने प्रश्न "विंडोज़" के साथ भी टैग करना चाहिए था। मुझे लगता है कि आपके पास केवल विंडोज़-सीई अनुभाग पर उत्तर पाने की संभावना कम है। मैं आपको जेक्स एक्सेलसन पुस्तक यूएसबी पूर्ण चौथा संस्करण - www.lvr.com पर एक नज़र डालने की भी सलाह देता हूं, आपको वहां से अच्छी जानकारी मिल जाएगी। व्यक्तिगत रूप से मैं WinDriver का उपयोग करने की कोशिश करता हूं, जिसमें बैक-अप समाधान बाहरी सहायता होती है। – garzanti

+0

"विंडोज़" टैग और आपके सामान्य अनुशंसा के बारे में नोट के लिए धन्यवाद। हालांकि, मुझे नहीं लगता कि यूएसबी के बारे में एक पुस्तक पीसीआई ड्राइवर के बारे में निर्णय लेने में मेरी मदद करेगी? मेरे पास आपके द्वारा अनुशंसित पुस्तक का तीसरा संस्करण है, और जहां तक ​​मुझे ज्यादातर यूएसबी प्रोटोकॉल के बारे में याद है और ड्राइवरों के बारे में बहुत कम है (यूएसबी के लिए विनड्राइवर का उल्लेख है, लेकिन उससे अधिक नहीं)। –

+0

मेरे लिए यह उस पुस्तक की मदद करता है। लेकिन आपके डिवाइस का किस प्रकार का यूएसबी क्लास/सबक्लास है? क्या यह छिपा हुआ है? यह वास्तव में क्या है एक बेहतर विचार पाने के लिए कम से कम सामान्य शब्दों में। – garzanti

उत्तर

2

जैसा कि थोड़ी देर पहले अनुरोध किया गया था, मैं मूल प्रश्न पूछने के बाद अब एक से अधिक वर्षों में अपना अनुभव साझा करने का प्रयास करूंगा। हमने विंड्रिवर का उपयोग करने का फैसला किया, लेकिन अब तक हमने केवल विंडोज सीई 6.0 के लिए एक ड्राइवर लिखा है, इसलिए मैं क्रॉस-प्लेटफ़ॉर्म समर्थन पर टिप्पणी नहीं कर सकता।

विंडोज सीई 6.0 पर विंड्रिवर का उपयोग करने से फायदे और नुकसान दोनों हैं। इसका मतलब है कि हमारे सभी ड्राइवर कोड अब लाइब्रेरी में हैं, इसलिए इसे विकसित करना और डिबग करना आसान है (मानक ड्राइवर की तुलना में प्लेटफार्म बिल्डर की आवश्यकता है)। तो विकास के दृष्टिकोण से यह अच्छा रहा है। प्रदर्शन भी ठीक रहा है। शुरुआत में कुछ ओवरहेड थे जो विंड्रिवर एपीआई सीख रहे थे और इसका उपयोग कैसे करें, खासकर डीएमए और इंटरप्ट्स के साथ, लेकिन मुझे नहीं लगता कि यह कच्चे विंडोज सीई 6.0 पीसीआई एपीआई सीखने से भी बदतर था।

एकमात्र वास्तविक नुकसान यह है कि मैं सोच सकता हूं कि एक "असली" ड्राइवर विंड्रीवर का उपयोग करके बनाई गई लाइब्रेरी की तुलना में कई प्रक्रियाओं के बीच साझा करना आसान है। हमारे आवेदन में (एक प्रक्रिया के साथ एम्बेडेड सिस्टम) यह वास्तव में एक समस्या नहीं है, लेकिन मुख्य प्रक्रिया के पीछे हार्डवेयर पर काम करने वाली डीबग/विकास उपयोगिताएं बनाना कठिन होता है। हमने अन्य प्लेटफार्मों पर परीक्षण/डिबगिंग के लिए उस दृष्टिकोण का उपयोग किया है, लेकिन यह यहां कुछ और जटिल है।

सब कुछ समेटने के लिए, मुझे लगता है कि हमने सही विकल्प चुना है और मुझे खुशी है कि हमारे पास विंडोज डेस्कटॉप पर "ड्राइवर" को बंद करने की क्षमता है (उम्मीद है कि) हमें इसकी आवश्यकता होने पर बहुत कम प्रयास करें।

1

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

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

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

चूंकि प्रश्न सुझाव मांगने के बारे में है, इसलिए सटीक उत्तर देना मुश्किल है, मैं बस अपना फीडबैक साझा कर रहा हूं।

+1

ओह। मुझे अभी एहसास हुआ कि मैंने एक साल पहले एक सवाल का जवाब दिया !!! –