लिनक्स कर्नेल के संदर्भ में डीएमए मैपिंग और डीएमए इंजन क्या है? जब डीएमए मैपिंग एपीआई और डीएमए इंजन एपीआई का उपयोग लिनक्स डिवाइस ड्राइवर में किया जा सकता है? संदर्भ के रूप में कोई वास्तविक लिनक्स डिवाइस ड्राइवर उदाहरण बहुत अच्छा होगा।लिनक्स कर्नेल के संदर्भ में डीएमए मैपिंग और डीएमए इंजन क्या है?
उत्तर
dmaengine एक डीएमए नियंत्रक ड्राइवरों के विकास के लिए एक सामान्य कर्नेल ढांचा है।
आप पढ़ सकते हैं: dmaengine provider । आप drivers/dma के तहत dmaengine ड्राइवरों के कई उदाहरण पा सकते हैं।
इसे प्रश्न के पहले भाग के उत्तर की भी आवश्यकता है। ऊपर मेरी टिप्पणी देखें। – 0andriy
लिनक्स कर्नेल के संदर्भ में डीएमए मैपिंग और डीएमए इंजन क्या है?
कर्नेल सामान्य रूप से आभासी पता का उपयोग करता है। kmalloc()
, vmalloc()
जैसे कार्य सामान्य रूप से वर्चुअल पता लौटाते हैं। इसे void*
में संग्रहीत किया जा सकता है। वर्चुअल मेमोरी सिस्टम इन पतों को भौतिक पते में बदल देता है। ये भौतिक पते ड्राइवरों के लिए वास्तव में उपयोगी नहीं हैं। अंतरिक्ष को मैप करने और वर्चुअल एड्रेस बनाने के लिए ड्राइवर्स को ioremap()
का उपयोग करना चाहिए।
CPU CPU Bus
Virtual Physical Address
Address Address Space
Space Space
+-------+ +------+ +------+
| | |MMIO | Offset | |
| | Virtual |Space | applied | |
C +-------+ --------> B +------+ ----------> +------+ A
| | mapping | | by host | |
+-----+ | | | | bridge | | +--------+
| | | | +------+ | | | |
| CPU | | | | RAM | | | | Device |
| | | | | | | | | |
+-----+ +-------+ +------+ +------+ +--------+
| | Virtual |Buffer| Mapping | |
X +-------+ --------> Y +------+ <---------- +------+ Z
| | mapping | RAM | by IOMMU
| | | |
| | | |
+-------+ +------+
डिवाइस डीएमए का समर्थन करता है, तो ड्राइवर अप बफर kmalloc
या इसी तरह इंटरफ़ेस जो आभासी पता (एक्स) रिटर्न का उपयोग कर सेट। वर्चुअल मेमोरी सिस्टम मैप्स एक्स को भौतिक पता (वाई) सिस्टम रैम में। ड्राइवर बफर तक पहुंचने के लिए वर्चुअल एड्रेस एक्स का उपयोग कर सकता है, लेकिन डिवाइस स्वयं ऐसा नहीं कर सकता क्योंकि डीएमए सीपीयू वर्चुअल मेमोरी सिस्टम के माध्यम से नहीं जाता है। कुछ सिस्टम में केवल डिवाइस सीधे डीएमए को भौतिक पते पर कर सकता है। कुछ सिस्टम IOMMU हार्डवेयर में ऊपर यह अनुवाद कर वाई करने के लिए जेड आंकड़ा पर शारीरिक address.Look को डीएमए पता अनुवाद करने के लिए प्रयोग किया जाता है
डीएमए मानचित्रण एपीआई लिनक्स डिवाइस ड्राइवर में इस्तेमाल किया जा सकता है? डीएमए मानचित्रण एपीआई का उपयोग करने
कारण चालक वर्चुअल ऐड्रेस एक्स लौट dma_map_single()
तरह इंटरफेस करने, जो किसी भी आवश्यक IOMMU मानचित्रण सेट कर सकते हैं और रिटर्न डीएमए पता Z.The चालक तो बताता है करने के लिए डिवाइस के लिए कर डीएमए जेड, और आईओएमएमयू इसे सिस्टम रैम में पता वाई पर बफर में मानचित्रित करता है।
संदर्भ this link से लिया गया है।
कोई वास्तविक लिनक्स डिवाइस ड्राइवर उदाहरण संदर्भ के रूप में अच्छा होगा।
लिनक्स कर्नेल के अंदर आप विभिन्न वास्तविक चालकों के लिए drivers/dma को देख सकते हैं।
क्या आप अवधारणा के वास्तविक उदाहरण के लिए http://lxr.free-electrons.com पर कर्नेल स्रोत पेड़ में ड्राइवर को इंगित कर सकते हैं? – JagsVG
थोड़ी देर के लिए प्रतीक्षा करें मैं उत्तर –
@JagsVG संतुष्ट करूँगा या आप कुछ और उम्मीद कर रहे हैं? –
- 1. पीसीआईई लिनक्स कर्नेल ड्राइवर में स्ट्रीमिंग डीएमए
- 2. कर्नेल से उपयोगकर्ता स्थान (डीएमए)
- 3. कुशल लिनक्स सॉकेट (डीएमए/शून्य-प्रति)
- 4. डीएमए कैश समेकन प्रबंधन
- 5. डीएमए पीसीआईई पीसी से एफपीजीए
- 6. एक बड़े डीएमए बफर आवंटित
- 7. मैं एक लिनक्स कर्नेल मॉड्यूल में 1 जीबी विशालपृष्ठों द्वारा समर्थित डीएमए बफर आवंटित कैसे करूं?
- 8. "6 चैनल डीएमए" से इसका क्या अर्थ है?
- 9. एसटीएम 32 एफ 4 डीएमए ट्रांसफर (आरएक्स)
- 10. डीएमए और मेमोरी-मैप किए गए आईओ के बीच क्या अंतर है?
- 11. लिनक्स
- 12. लिनक्स
- 13. लिनक्स में कर्नेल थ्रेड किस संदर्भ में चलता है?
- 14. क्या लिनक्स कर्नेल का अपना एसएसई/एवीएक्स संदर्भ है?
- 15. लिनक्स कर्नेल
- 16. __ksymtab क्या है? लिनक्स कर्नेल में
- 17. बैश और लिनक्स कर्नेल
- 18. एंड्रॉइड कर्नेल और वेनिला लिनक्स कर्नेल
- 19. क्या लिनक्स कर्नेल बहुसंख्यक प्रक्रिया करता है?
- 20. लिनक्स कर्नेल
- 21. लिनक्स कर्नेल
- 22. लिनक्स कर्नेल
- 23. लिनक्स कर्नेल
- 24. लिनक्स कर्नेल
- 25. लिनक्स कर्नेल
- 26. लिनक्स कर्नेल
- 27. लिनक्स कर्नेल
- 28. क्या लिनक्स में कर्नेल मॉड्यूल के लिए आकार सीमा है?
- 29. लिनक्स कर्नेल
- 30. लिनक्स कर्नेल
डीएमए मैपिंग आभासी संबोधित स्मृति से एक स्मृति में एक रूपांतरण है जो भौतिक पते (वास्तव में बस पते) पर डीएमए-सक्षम है। आपको उस https://www.kernel.org/doc/Documentation/DMA-API-HOWTO.txt – 0andriy
क्षमा करें @AndyShevchenko मुझे कोई विचार नहीं है कि आपने टिप्पणी पोस्ट की है। मैं लिख रहा था आपकी टिप्पणी से पहले जवाब। मुझे आशा है कि आपको बुरा लगेगा कि मैंने इस सवाल का जवाब दिया है। –