2010-04-21 12 views
21

हाल ही में, मैंने लिनक्स चलाने वाले एम्बेडेड डिवाइस के ड्राइवर को विकसित करना शुरू किया।लिनक्स कर्नेल/ड्राइवर विकास के लिए नया

अब तक मेरे पास केवल लिनक्स आंतरिक के बारे में पढ़ा गया है।
चालक devlopment में कोई पूर्व अनुभव होने के बाद, मुझे अपने पहले चरण को जमीन पर मुश्किल लग रहा है।

  • मैंने कर्नेल स्रोत-कोड (v2.6.32) डाउनलोड किया है।
  • मैंने लिनक्स डिवाइस ड्राइवर्स (3e)
  • पढ़ा है (स्किम्प्ड) स्टैक ओवरव्लो पर मैंने कुछ संबंधित पोस्ट पढ़ी हैं।
  • मैं समझता हूं कि लिनक्स में "मोनोलिथिक" दृष्टिकोण है।
  • मैंने कर्नेल बनाया है (मेन्यूकॉन्फ इत्यादि में मौजूदा ड्राइवर शामिल है)
  • मुझे kconfig और मेकफ़ाइल फ़ाइलों की मूल बातें पता हैं ताकि कोई समस्या न हो।

कोई संरचना (अर्थात अंतर-लिंक)
कर्नेल-स्रोत कोड में विभिन्न निर्देशिकाओं के वर्णन कर सकते।

दूसरे शब्दों में, एक स्रोत-कोड फ़ाइल को देखते हुए
जो अन्य फ़ाइलों यह संबंधित कोड के लिए को उल्लेख करता है

("#include" -s एक आंशिक विचार प्रदान करते हैं)

क्या कोई बेहतर विचार पाने में मेरी मदद कर सकता है?
किसी भी मदद की सराहना की जाएगी

धन्यवाद।

+0

इसे साफ़ करना चाहिए। http://www.youtube.com/watch?v=ENNKtfR2PYc –

+0

कर्नेल के लिए एक सरल मॉड्यूल हैलो वर्ल्ड लिखें। फिर एक बार जब आप हैलो वर्ल्ड कर्नेल मॉड्यूल समझते हैं तो यह http://www.freesoftwaremagazine.com/articles/drivers_linux लिखें और इसका परीक्षण करें। उपर्युक्त लिंक का पालन करें जब तक आप समझ में नहीं आते। और यहां मेरी दो पोस्ट्स को भी पढ़ें http://mail.nl.linux.org/kernelnewbies/2010-09/ मैंने सचमुच मंच पर लड़ा कि यह समझने के लिए कि यह कैसे काम करता है। तो आपको वही करना होगा। चाहे कोई भी समझ में नहीं आता है, भले ही आप समझ सकें। सीखने का सबसे अच्छा तरीका एक प्रोजेक्ट लेना है और अंत में काम करना शुरू करना आपको बहुत कुछ मिलेगा। उदाहरण के लिए एक को ठीक करने का निर्णय लें कर्नेल में वायरलेस ड्राइवर के लिए –

+0

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

उत्तर

18

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

अपनी खुद की डिवाइस ड्राइवर के विकास के लिए दो बुनियादी मार्गों कर रहे हैं:

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

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

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

मुझे यह भी विश्वास है कि Linux Device Drivers, Third Edition आपको ड्राइवर विकास के लिए अपना रास्ता पाने में मदद कर सकता है।

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

+0

+1 अनुशंसा के लिए धन्यवाद। आज रात सावधानी से पुस्तक के माध्यम से जाना होगा। और क्या?? एक व्यावहारिक walkthrough किसी भी ?? ... – ctuffli

+0

पर – TheCodeArtist

+1

यह कर्नेल के माध्यम से चलने के लिए कुछ पृष्ठों से अधिक वास्तविक विशेषज्ञ लेता है ... उस पर, कर्नेल के कई हिस्सों में तेजी से परिवर्तन होता है, इसलिए यह लिखा जाने के बाद डेटा से बाहर है । आपकी सबसे अच्छी शर्त है कि आप रुचि रखने वाले उपप्रणाली को पढ़ और समझें। – WhirlWind

7

मुझे एक बार कर्नेल ड्राइवर को ठीक करना पड़ा। मेरी सबसे बड़ी युक्ति (यदि आप विम का उपयोग करते हैं) इसे सीटीएजी के साथ सेट करना है ताकि आप कर्नेल स्रोत के चारों ओर कूद सकें- हर बार जब आप कोई ऐसा फ़ंक्शन देखते हैं जिसे आप समझ नहीं पाते हैं।

+2

... थोड़ी देर के लिए यह कर रहा है! और वास्तव में यह वास्तव में सहायक है! – TheCodeArtist

+0

@ फ्रैंकस्टर - महान सलाह धन्यवाद – artm

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