2013-07-05 3 views
8

मैं अपने विकास बोर्ड पर एक लिनक्स लॉन्च करने जा रहा हूं, और मुझे पूरे हार्डवेयर का वर्णन करने के लिए एक डीटीएस फ़ाइल (डिवाइस पेड़ फ़ाइल) की आवश्यकता है। लेकिन मुझे केवल इस फ़ाइल के सिंटैक्स के बारे में बहुत कुछ पता है जो कि बोर्ड पर ठीक से लिनक्स चलाने के लिए पर्याप्त नहीं है।लिनक्स .dts डिवाइस पेड़ फ़ाइलों को कैसे प्रोग्राम करें?

अब मैं क्या पता है (जैसा कि नीचे वर्णित) केवल कैसे एक इकाई की बाधा संख्या, आवृत्ति, पता, अभिभावक-इकाई और उसके संगत ड्राइवर प्रकार का वर्णन कर रहे हैं:

ps7_scuwdt_0: [email protected] { 
         compatible = "xlnx,ps7-scuwdt-1.00.a"; 
         device_type = "watchdog"; 
         interrupt-parent = <&ps7_scugic_0>; 
         interrupts = < 1 14 769 >; 
         reg = < 0xf8f00620 0xe0 >; 
       } ; 

अन्य उन्नत उपयोग या व्याकरण अपरिचित है मेरे लिए।

उत्तर

12

बोर्ड के डीटीएस पर एक नज़र डालें जो आपके देव-बोर्ड जैसा दिखता है। संदर्भ बोर्ड और अपने देव बोर्ड के बीच मतभेदों के अनुसार संदर्भ के रूप में उपयोग करें और डीटीएस में परिवर्तन करें।

इसके अलावा निम्नलिखित चेकआउट करें:
- Device-tree Documentation project ईलिनक्स पर (पढ़ने के लिए लिंक का एक विशाल संग्रह है)।
- Series of articles डिवाइस पेड़ की मूल बातें पर।
- Walkthrough डिवाइस-पेड़ में माइग्रेट करने का। होना चाहिए "fsl, -auart": - संगत
:

+0

धन्यवाद संदर्भ के लिए एक बहुत। दुर्भाग्य से, पहला तोड़ा गया है। क्या इसके लिए कोई उपयुक्त प्रतिस्थापन है? – rbrito

+1

@rbrito मृत लिंक को इंगित करने के लिए धन्यवाद। इसे हटा दिया पिछले कुछ महीनों में उगाए गए एक व्यापक स्रोत के साथ लिंक 1 अपडेट करें। – TheCodeArtist

2

एक उदाहरण लेते हैं और मैं नीचे

auart0: [email protected] { 
compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 
reg = <0x8006a000 0x2000>; 
interrupts = <112>; 
dmas = <&dma_apbx 8>, <&dma_apbx 9>; 
dma-names = "rx", "tx"; 
}; 

आवश्यक गुण के रूप में उनमें से हर एक की व्याख्या करेगा देता है। समर्थित एसओसी में आईएमएक्स 23 और आईएमएक्स 28 शामिल हैं।
- reg: पता और डिवाइस
के लिए रजिस्टर सेट की लंबाई - बीच में आता है: auart होने चाहिए बीच में संख्या
- उस DMA: डीएमए विनिर्देशक, डीएमए नियंत्रक नोड और AUART डीएमए चैनल आईडी के लिए एक phandle से मिलकर।
- डीएमए-नाम: आरएक्स चैनल के लिए "आरएक्स", TX चैनल के लिए "टीएक्स"।

नोट: प्रत्येक ऑउर्ट पोर्ट में "उपनाम" नोड में सही ढंग से क्रमांकित उपनाम होना चाहिए।
अधिक अग्रिम गुण के लिए, कृपया इस लिंक पर जाएं, यह बहुत उपयोगी है
Device Tree Explanation

आशा है कि यह मदद करता है!

1

QEMU आभासी डिवाइस के साथ कम से कम reg + interrupt उदाहरण

हमारे उदाहरण जो QEMU -M versatilepb के कारण का उपयोग करेगा versatilepb डिवाइस पेड़ के लिए निम्न डिवाइस पेड़ नोड जोड़ देगा: फिर

[email protected] { 
    compatible = "lkmc_platform_device"; 
    reg = <0x101e9000 0x1000>; 
    interrupts = <18>; 
    interrupt-controller; 
    #interrupt-cells = <2>; 
    clocks = <&pclk>; 
    clock-names = "apb_pclk"; 
    lkmc-asdf = <0x12345678>; 
}; 

, डिवाइस के साथ बातचीत करने के लिए एक लिनक्स कर्नेल मॉड्यूल का उपयोग करके, हम निम्नलिखित डीटीएस सुविधाओं का परीक्षण करेंगे:

  • रजिस्टरों के पते
  • IRQs
  • ड्राइवर

ये उदाहरण के मुख्य घटक हैं से कस्टम गुण पढ़ें:

  • Linux versatile .dts patch on Linux fork
    • reg और interrupt मैच संख्या क्यूईएमयू बहुमुखी एम में हार्ड कोडित achine
    • compatible से मेल खाता है कर्नेल मॉड्यूल में platform_driver.name (जो SoC का प्रतिनिधित्व करता है), और गिरी जो मॉड्यूल इस उपकरण
    • हम भी ड्राइवर के लिए एक कस्टम संपत्ति पारित संभाल लेंगे सूचित: lkmc-asdf = <0x12345678>;, जो of_property_read_u32
    • साथ पढ़ा जाता है
    • डिवाइस पेड़ -dtb तर्क के साथ QEMU के फर्मवेयर में भेजा जाता है
  • QEMU कांटा:
  • kernel module जांच पर याद करने के लिए लिखता है चीजों को बाहर का परीक्षण करने के है, जो भी एक IRQ उत्पन्न करता है।

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

अतिरिक्त संसाधन:

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