RK3288 dts和dtsi介紹


    Device Tree 是一種描述硬件的數據結構,它起源於 OpenFirmware(OF)。在 Linux2.6 中,ARM 架構的板機硬件細節過多地被硬編碼在 arch/arm/plat-xxx 和 arch/arm/mach-xxx,采用 Device Tree 后,許多硬件的細節可以直接透過它傳遞給 Linux,而不再需要在 kernel 中進行大量的冗余編碼。

    Device Tree 由一系列被命名的結點(node)和屬性(property)組成,而結點本身可包含子節點。所謂屬性,其實就是成對出現的 name 和 value 。

    在 Device Tree 中,可描述的信息包括(原先這些信息大多被硬編碼到 kernel 中):

  • CPU的數量和類別
  • 內存基地址和大小
  • 總線和橋
  • 外設連接
  • 中斷控制器和中斷使用情況
  • GPIO控制器和GPIO使用情況
  • Clock控制器和Clock使用情況

    它基本上就是畫一棵電路板上(CPU、總線、設備組成)的樹,Bootloader 會將這棵樹傳遞給內核,然后內核可以識別這棵樹,並根據它展開出 Linux 內核中的 platform_device、i2c_client、spi_device等設備,而這些設備用到的內存、IRQ 等資源,也被傳遞給了內核,內核會將這些資源綁定給展開的相應的設備。

    .dts 文件是一種 ASCII 文本格式的 Device Tree 描述。基本上,在 ARM Linux 中,一個 .dts 文件對應一個 ARM 的 machine,一般放置在內核的 arch/arm/boot/dts/ 目錄。由於一個 SOC 可能對應多個 machine(一個SOC可以對應多個產品和電路板),勢必這些 .dts 文件需包含許多共同的部分,Linux 內核為了簡化,把 SOC 公用的部分或者多個 machine 共同的部分一般提煉為 .dtsi,類似於C語言的頭文件。其他的 machine 對應的 .dts 就是 include 這個 .dtsi 。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM