2012-06-27 23 views
27

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

+0

यह भी मदद करता है एक सा http://linuxseekernel.blogspot.ie/2015/08/linux-kernel-module-programming.html – Jeyaram

+0

मिनिमल स्वचालित QEMU + Buildroot + बिजीबॉक्स कर्नेल मॉड्यूल सेटअप: https: // github.com/cirosantilli/linux- कर्नेल- मॉड्यूल-cheat –

उत्तर

40

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

अन्यथा अक्सर एक उद्धृत पुस्तक Linux Device Drivers, Third Edition (एलडीडी 3) है। ध्यान रखें कि यह संस्करण लिनक्स 2.6.10 के समय लिखा गया था और तब से कुछ चीजें बदली गईं। This article अंतर विकसित करता है जैसे 2.6 विकसित (2.6.31 तक, जो कि बहुत उपयोगी नहीं है)। मुझे martinezjavier/ldd3 का उल्लेख करना चाहिए, जिसमें हालिया कर्नेल के लिए अद्यतन एलडीडी 3 के उदाहरण ड्राइवर शामिल हैं (42n4 को इंगित करने के लिए धन्यवाद)।

एक अन्य रोचक पुस्तक जिसे अक्सर उद्धृत नहीं किया जाता है Essential Linux Device Drivers है। आपको इसका एक मुफ्त संस्करण नहीं मिलेगा, लेकिन इसमें अभी भी एक दिलचस्प दृष्टिकोण है। मुझे इस बारे में क्या पसंद है यह कई अलग-अलग डिवाइस प्रकारों को कवर करता है और 2.6.24 के रूप में अद्यतित है, जो एलडीडी से थोड़ा बेहतर है।

अंत में, कर्नेल के बारे में एक महान पुस्तक (विशेष रूप से ड्राइवरों के लिए नहीं) Understanding the Linux Kernel, 3rd Edition है। इसमें गहन कर्नेल सुविधाएं और आंतरिक तंत्र शामिल हैं। यह 2.6.11 के रूप में अद्यतित है।

ऑनलाइन ट्यूटोरियल के लिए, मुझे मिला this post on Pete's Blog वास्तव में एक महान उदाहरण है। इतना ही नहीं यह प्रदर्शित करता है (, सबसे आसान कर्नेल ड्राइवर प्रकार एक साथ शुरू करना चाहिए यानी) एक चरित्र डिवाइस बनाने के लिए कैसे, यह एक आसान में आधुनिक लिनक्स कर्नेल सुविधाओं का उपयोग करता फैशन को समझने के लिए शामिल हैं:

  • उपयोग udev के
  • कर्नेल डेटा संरचना की
  • उपयोग (फीफो)
  • गिरी तुल्यकालन (म्युटेक्स)
  • insmod
के लिए मॉड्यूल विकल्पों का श्रेय कस्टम के साथ sysfs की
  • उपयोग के उपयोग

    प्लस: इसका उद्देश्य लिनक्स 3.0 पर है, जिसका अर्थ यह है कि यह अन्य संसाधनों की तुलना में अधिक अद्यतित है।

    आपको this post भी मैन्युअल रूप से Sysfs प्रविष्टियों को बनाने के तरीके के बारे में पसंद हो सकता है, हालांकि लिनक्स डिवाइस मॉडल आपके डिवाइस को Sysfs प्रविष्टि के रूप में पंजीकृत करने का ख्याल रखेगा यदि आपको अतिरिक्त नोड्स या विशेषताओं की आवश्यकता नहीं है।

    संपादित करें: मुझे यह जोड़ना चाहिए कि असली लिनक्स डिवाइस ड्राइवर प्रोग्रामिंग सीखने का सबसे अच्छा तरीका वास्तविक ड्राइवरों को देखना है। drivers में हजारों ड्राइवर हैं। drivers/leds जैसे सरल लोगों की अवधारणा को पढ़ने और समझना शुरू करें और आप देखेंगे कि यह कितना पुरस्कृत है।डिवाइस ड्राइवर प्रोग्रामिंग सीखने के लिए

  • 1

    आप में नव Linux Driver Templates जारी की रुचि हो सकती है है। जैसा कि नाम से पता चलता है, यह टेम्पलेट प्रदान करता है और जल्दी से शुरू करने के लिए अक्सर उपयोग की जाने वाली लिनक्स सुविधाओं का प्रदर्शन करता है।

    +0

    अरे क्या आप व्याख्या कर सकते हैं कि एलडीटी के माध्यम से कैसे जाना है ?? – const

    1

    मुझे समझ में आता है कि यह देरी से प्रतिक्रिया है !!

    आप कोई भी पुस्तक चुन सकते हैं, वे वास्तव में ऊपर सुझाए गए महान पुस्तकें हैं।

    लेकिन आपको वास्तव में व्यावहारिक रूप से काम करने की आवश्यकता है। जितना संभव हो कर्नेल में शामिल होने का प्रयास करें।

    अधिकतर आपको कर्नेल स्रोत कोड में ही देखना होगा।

    और सबसे दिलचस्प दस्तावेज़ जो आप कर्नेल पेड़ के नीचे प्रलेखन फ़ोल्डर में पा सकते हैं।

    0

    व्यावसायिक लिनक्स कर्नेल आर्किटेक्चर भी एक अच्छा पढ़ा है।

    8

    बहुत महत्वपूर्ण लिंक के साथ साइट: http://elinux.org/Device_drivers

    वास्तविक उदाहरण के साथ ग्रेट ट्यूटोरियल (एक usbpen हमारे अपने फाइल सिस्टम के साथ स्वरूपित साथ समाप्त होता है - लेखक के लिए खोज आगे लेख):

    1. http://www.linuxforu.com/tag/linux-device-drivers-series/
    2. http://sysplay.in/index.php?pagefile=lfy_articles

    प्रसिद्ध एलडीडी 3 का स्रोत कोड पुस्तक नवीनतम कर्नेल में पोर्ट: https://github.com/martinezjavier/ldd3/

    वीडियो:

    1. https://www.youtube.com/playlist?list=PL16941B715F5507C5

    हो सकता है कि अन्य cources:

    1. http://www.skilledup.com/courses?keyword=linux+kernel&price_filter=0..0

    कुछ उदाहरण:

    1. http://www.staerk.de/thorsten/index.php/My_Tutorials/Writing_Linux_kernel_modules
    2. http://www.freesoftwaremagazine.com/articles/drivers_linux
    3. http://techblog.aasisvinayak.com/kernel-module-programming-tutorial/
    4. http://www.linuxforu.com/2009/05/a-voyage-to-the-kernel-day-11/

    पुस्तकें (बिना इस सूत्र LDD3 में उल्लेख किया है):

    1. http://kernelnewbies.org/KernelHacking

      लिनक्स कर्नेल के

      दृश्य नक्शा: http://www.makelinux.net/kernel_map/

      लिनक्स और गिरी शुरुआती के लिए किताबें:

      1. http://www.kroah.com/lkn/
      2. एक अद्यतन स्रोत कोड http://www.coopj.com/LPD/

      KernelHacking साथhttp://swift.siphos.be/linux_sea/

    +0

    +1, हालांकि इस तरह के पुराने प्रश्नों को ध्यान में रखते हुए - आधुनिक स्टैक ओवरफ़्लो दिशानिर्देश - ऑफ-विषय द्वारा, क्योंकि इसे बहुत व्यापक माना जाता है। – halfer

    0

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

    बेसिक सी पुस्तकें 1. प्रोग्रामिंग सी - बायरन गोटफ्राइड 2. सी प्रोग्रामिंग भाषा - डेनिस रिची

    मध्यवर्ती पुस्तकें 1. सी केनेथ भाप 2 के लिए संकेतों के।विशेषज्ञ सी प्रोग्रामिंग गहरे रहस्य - लिंडन

    डिवाइस ड्राइवर्स पर आ रहा है मैंने पीडीएफ प्रारूप https://drive.google.com/folderview?id=0B7iRyndFhHldR3hjOHpOZTdKTjA&usp=sharing में कर्नेल स्रोत प्रलेखन अपलोड किया है आप इस लिंक से डाउनलोड कर सकते हैं।

    डिवाइस ड्राइवर मूल बातें (उपयोगकर्ता मोड प्रोग्रामिंग)

    लिनक्स प्रोग्रामिंग इंटरफेस - माइकल केररिस्क शुरुआत लिनक्स प्रोग्रामिंग Wrox प्रकाशक डिवाइस ड्राइवर (कर्नेल Deleopment) 1. लिनक्स कर्नेल विकास - रॉबर्ट प्यार 2. लिनक्स कर्नेल Internals - मीटर बेक

    डिवाइस ड्राइवर (चालक प्रोग्रामिंग) 1. लिनक्स डिवाइस ड्राइवर - तीसरा संस्करण (नि: शुल्क डाउनलोड 2.6 कर्नेल के लिए उपलब्ध है) 2. आवश्यक लिनक्स डिवाइस ड्राइवर - वेंकटेश्वरन

    बेसिक ड्राइवर ज्ञान Fol के लिए कम इस साइट http://www.tldp.org/LDP/khg/HyperNews/get/devices/devices.html

    मेरा अनुभव सबसे पहले हमें प्रोग्रामिंग प्रोग्रामिंग के माध्यम से जाने से पहले सी प्रोग्रामिंग, मुख्य रूप से संरचनाओं और पॉइंटर्स पर एक अच्छा ज्ञान हासिल करना होगा अन्यथा यह ड्राइवर प्रोग्रामिंग को समझने के लिए थोड़ा बोझिल होगा।

    Startup पर आने: - जीसीसी आदेशों अलग वस्तु उपकरण, लिनक्स में बेसिक प्रोग्रामिंग, धागे का उपयोग कर वस्तु फ़ाइलों का विश्लेषण (ताले का उपयोग कर

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

    2. कर्नेल प्रोग्रामिंग कर्नेल स्रोत कोड ब्राउज़ करने के लिए ctags और cscope का उपयोग करके कर्नेल स्रोत पेड़, विभिन्न शाखाओं और उनके महत्व को समझना, यह आपको कर्नेल स्रोत ब्राउज़िंग में मदद करेगा।

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

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