2010-02-08 20 views
50

मैं जानना चाहता हूं कि डिवाइस ड्राइवर कैसे लिखना है क्योंकि मुझे लगता है कि यह मजेदार होगा। मैं मैक ओएस एक्स मैकबुक का उपयोग करता हूं, लेकिन मेरे पास उबंटू मशीन भी है (मैक मिन पर चल रहा है)। मैं सी से काफी परिचित हूं और वर्तमान में this book पढ़ रहा हूं। मुझे कुछ लिंक ऑनलाइन मिले हैं जैसे Mac Dev Center। मैं यह कर रहा हूं क्योंकि यह मजेदार होगा। मुझे लगता है कि मैंने लिखा सॉफ्टवेयर के कारण हार्डवेयर ऑपरेटिंग देखने के लिए वास्तविक संतुष्टि होगी।मुझे डिवाइस ड्राइवर लिखने पर कैसे शुरू किया जाना चाहिए?

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

+1

चूंकि आपने * ओएस एक्स * और * लिनक्स * दोनों का उल्लेख किया है, तो ये डिवाइस ड्राइवर किस ओएस के लिए होंगे? – jschmier

+0

या तो एक, मुझे लगता है कि मैं ओएस एक्स पसंद करूंगा क्योंकि यह लैपटॉप मैं उपयोग करता हूं। –

+0

"डिवाइस जिनके पास ड्राइवर नहीं हैं ..." ऐसा कोई भी उपकरण उपयोग करने योग्य नहीं होगा! एक डिवाइस निर्माता ** ** ड्राइवर बनाने के लिए ** है, अन्यथा वे अपने उत्पाद को बेच नहीं सकते हैं। ऐसा कहकर, वहां कुछ बहुत ही सरल उपकरण हैं। – jpaugh

उत्तर

26

लिनक्स के लिए, आप O'Reilly Linux Device Drivers पुस्तक को पढ़ने या PDFs ऑनलाइन पढ़ने में देख सकते हैं। मेरी राय में, यह विषय पर चारों ओर बेहतर ग्रंथों में से एक है।

The Linux Kernel Module Programming Guide एक और अच्छा संसाधन है।

आप विशेष रूप से लिनक्स कर्नेल पर एक पुस्तक भी लेना चाहते हैं। इस उद्देश्य के लिए मैंने रॉबर्ट लव के Linux Kernel Development (2nd Edition) की एक प्रति ली है (3rd Edition रास्ते पर)।

+0

धन्यवाद! डिवाइस ड्राइवर लिखने के लिए कितना काम है? क्या यह एक बड़ा जटिल आवेदन लिखने से कम या कम काम है? मैंने उन सभी से पूछा जिन्होंने इस सवाल का जवाब दिया, क्योंकि मुझे वास्तव में एक जवाब चाहिए। एक बार फिर धन्यवाद! –

+1

शामिल कार्य की कठिनाई और मात्रा डिवाइस की जटिलता पर निर्भर करती है। ए * tty * डिवाइस ड्राइवर * यूएसबी * या * पीसीआई * डिवाइस ड्राइवर से बहुत कम जटिल हो सकता है। – jschmier

+4

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

2

मैक के लिए आप Mac OS X Internals पुस्तक पर एक नज़र डालना चाहेंगे। यह सोचने और भारी लेकिन पढ़ने के लिए मजेदार है। यह ज्यादातर पावरपीसी आधारित मैक के बारे में है लेकिन इंटेल आधारित लोगों के बारे में एक परिशिष्ट है। लिनक्स के लिए Linux Device Drivers, 3rd Edition पर एक नज़र डालें - यह हल्का है (मुफ्त पीडीएफ ऑनलाइन :) और वास्तव में डिवाइस चालक उन्मुख है, एक बेहतर शुरुआत हो सकती है।

+0

धन्यवाद! डिवाइस ड्राइवर लिखने के लिए कितना काम है? क्या यह एक बड़ा जटिल आवेदन लिखने से कम या कम काम है? –

+2

हम्म, दोनों मामलों में आपको यह जानने की जरूरत है कि आप क्या कर रहे हैं, इसलिए आपको आसपास के माहौल को समझने की जरूरत है, और यह अनुभव से आता है, जिसे आप तब तक नहीं प्राप्त करते जब तक आप कोशिश नहीं करते :) एलडीडीवी 3, स्रोत से कई उदाहरणों के माध्यम से कार्य करें कोड ऑनलाइन है लेकिन मौजूदा कर्नेल के लिए थोड़ा पुराना है, आपको यह पता चल जाएगा कि इसमें क्या शामिल है और आप आगे क्या सीखना चाहते हैं। –

4

यदि आप लिनक्स डिवाइस ड्राइवर विकास के लिए जाना चाहते हैं, तो स्वतंत्र रूप से उपलब्ध O'Reilly पुस्तक Linux Device Drivers, Third Edition को पढ़ना आवश्यक है।

असमर्थित हार्डवेयर टुकड़े खोजने के लिए जिसके लिए आप एक ड्राइवर लिख सकते हैं, Linux mailing lists पर पूछें। शायद कुछ यूएसबी 3.0 डिवाइस? ;)

+0

धन्यवाद! डिवाइस ड्राइवर लिखने के लिए कितना काम है? क्या यह एक बड़ा जटिल आवेदन लिखने से कम या कम काम है? –

17

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

लेकिन, एक साइड प्रोजेक्ट के रूप में, मैंने एक सप्ताह में चिप डेटा शीट से ईथरनेट ड्राइवर लिखा, और इसे एक और सप्ताह में डीबग करने के लिए लिया। तब से इसे छूने की जरूरत नहीं है।

सामान्य रूप से यह कहने का कोई तरीका नहीं है कि चालक कितना काम करेगा; एक जीपीयू चालक को सैकड़ों लाखों खर्च हो सकते हैं, एक एलईडी एलईडी के लिए ड्राइवर कुछ घंटों का काम करता है।

+5

क्या आप कुछ और विवरण साझा कर सकते हैं। पैच को समझना अच्छा लगेगा और डीबग करना इतना मुश्किल क्यों था। डिवाइस का कौन सा वर्ग चालक था? – Anirudh

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