क्या ड्राइवरों को लिखना सीखने के लिए संसाधन हैं?


26

मेरे पास सामान्य रूप से हार्डवेयर और एम्बेडेड सिस्टम डिजाइन करने का एक अच्छा अनुभव है, लेकिन मैंने कभी भी ऑपरेटिंग सिस्टम के लिए ड्राइवर नहीं लिखा है।

मैं जानना चाहूंगा कि क्या कोई अच्छा मार्गदर्शक है, अधिमानतः ऑनलाइन, हालांकि अच्छी किताबें मुझे रुचि देंगी, इससे मुझे एक अच्छी शुरुआत मिलेगी जो मुझे ऑपरेटिंग सिस्टम के लिए ड्राइवरों को डिजाइन करने और लागू करने के लिए जानने की जरूरत है।

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

कृपया मुझे बताएं कि क्या कोई अतिरिक्त जानकारी है जो मैं इसे अधिक स्पष्ट बनाने के लिए जोड़ सकता हूं।


1
महान सवाल, मुझे भी इसमें दिलचस्पी है।
श्री हेजहोग

मैंने व्यापक उत्तर पर स्वीकार किया। प्रत्येक ओएस के लिए जानकारी प्राप्त करने के लिए, मुझे जवाब पसंद आया। जॉबी का जवाब लिनक्स के लिए उत्कृष्ट था। मेरे पास एक कठिन समय था।
कोर्तुक

जवाबों:


10

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

एक ही विषय पर एक जोड़े को और अधिक पुस्तकें हैं आवश्यक लिनक्स डिवाइस ड्राइवर , Sreekrishnan वेंकटेश्वरन (2008) (भी उपलब्ध पर से सफारी पुस्तकें ऑनलाइन ) और एक अभ्यास (माप 3) के साथ गाइड: लेखन लिनक्स डिवाइस ड्राइवर (2009) डॉ जेरी Cooperstein द्वारा।

विंडोज डिवाइस ड्राइवर के लिए, विषय (दो हफ्ते पहले प्रकाशित) पर नवीनतम पुस्तक प्रतीत होता है विंडोज 7 डिवाइस ड्राइवर , रोनाल्ड डी रीव्स, पीएच.डी. (2010)। यह सफारी बुक्स ऑनलाइन पर भी उपलब्ध है ।

एक पुरानी पुस्तक, जो विंडोज एक्सपी को कवर करेगी, वह है: वाल्टर ओनी (2002) द्वारा माइक्रोसॉफ्ट विंडोज ड्राइवर मॉडल, दूसरा संस्करण का प्रोग्रामिंग । यह सफारी बुक्स ऑनलाइन पर भी उपलब्ध है ।

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

अंत में, Microsoft के पास बहुत सारे ब्लॉग्स आदि हैं जो ड्राइवर विकास पर चर्चा कर रहे हैं।


धन्यवाद, मैं आपको सुझाव दूंगा कि आपकी पोस्ट "लिनक्स डिवाइस ड्राइवर्स" का भी लिंक है। अन्यथा, बहुत पूरी तरह से।
कोर्तुक

11

एक अच्छा चालक हार्डवेयर की क्षमताओं को संकुचित कर देता है और इन्हें प्राकृतिक तरीके से OS / अनुप्रयोगों के लिए उपलब्ध करवाता है।

यह कैसे करना सबसे अच्छा है, यह बहुत कुछ निर्भर करता है कि आप किस ऑपरेटिंग सिस्टम को लक्षित कर रहे हैं और ड्राइवर किस प्रकार के हार्डवेयर के लिए है।

मेरा अनुभव लिनक्स और छोटे कस्टम रीयल-टाइम OSen के साथ है।

लिनक्स के लिए, मैं लिनक्स डिवाइस ड्राइवर्स को पढ़ने की सलाह दूंगा । यह लिनक्स ड्राइवरों के विभिन्न स्वादों के लिए एक अच्छा परिचय देता है और ऑपरेटिंग सिस्टम उनके लिए प्रदान करता है।

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

फ्लैश स्टोरेज और हार्ड डिस्क जैसे रैंडम एक्सेस डिवाइस को ब्लॉक डिवाइसेस द्वारा हैंडल किया जाता है। ddइन तक पहुँच सकते हैं। एक अच्छे उदाहरण के लिए, लिनक्स एमटीडी सिस्टम पर एक नज़र डालें ।

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

ऐसे ड्राइवर जो USB की तरह मौजूदा जेनेरिक ड्राइवरों के ऊपर बनाते हैं, उन्हें यूजरस्पेस में लिखा जा सकता है। उदाहरण के लिए, libusb का उपयोग करना ।


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

हाँ, मैं अपनी टिप्पणियों को हटा रहा हूँ। मेरी गलती।
कोर्तुक

1
जैसा कि चिह्नों में उल्लेख किया गया है, एक चालक की हिम्मत, जो वास्तविक हार्डवेयर को नियंत्रित करता है, वही होगा जो आपके पास ओएस है या नहीं। ड्राइवर लिखते समय मुख्य अंतर 1) इंटरफेस को ओएस के लिए एक मानक मॉडल (उदाहरण के लिए खुला, बंद, पढ़ा, लिखना, ioctl) में फिट करने की आवश्यकता होती है और 2) वह विधि जिसमें ड्राइवर स्थापित और सक्रिय होता है।
23

1
@tcrosley, यदि आपके पास उन बारीकियों के बारे में बहुत सारी जानकारी है, तो मुझे इसके बारे में एक उत्तर देखना अच्छा लगेगा।
कोर्तुक

3

मुझे इस मुद्दे में कोई अनुभव नहीं है, लेकिन मैं अपने दो सेंट देने जा रहा हूं।

आप यहाँ से शुरू कर सकते हैं http://www.osr.com/index.html या यहाँ https://www.osronline.com/index.cfm

यहाँ ब्राजील में हम इस मुद्दे के बारे में एक अच्छा ब्लॉग है । यह पुर्तगाली और अंग्रेजी में लिखा गया है। अधिकांश लेख दुर्भाग्य से पुर्तगाली में हैं।

इस ब्लॉग में पुस्तकों के बारे में पुर्तगाली में एक पोस्ट है: http://translate.google.com.br/translate?hl=pt-BR&ie=UTF-8&sl=pt&tl=en&u=httpddververentry.com.br/ ब्लॉग /% 3Fp% 3D825 और TWU = 1

मुझे उम्मीद है कि मैंने थोड़ी मदद की है


यदि मैं प्रश्न पूछूं, "मैं ड्राइवरों को लिखना सीखने के लिए ऑनलाइन समय में कहाँ सीखता हूँ?" मदद करने के लिए धन्यवाद।
कोरटुक

2
पुर्तगाली सीखने के बारे में चिंता मत करो। मेरे द्वारा पास किए गए ड्राइव विकास के लिंक अंग्रेजी में हैं। यहां तक ​​कि DriveEntry को अंग्रेजी में भी लिखा जाता है। दुर्भाग्य से पुस्तकों के बारे में पोस्ट पुर्तगाली में है, लेकिन किताबें अंग्रेजी में हैं। और जो सबसे ज्यादा मायने रखता है वो है किताबें, पद नहीं।
डैनियल ग्रिलो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.