RK3288 dts和dtsi介紹

tt7643066發表於2020-02-11

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69948385/viewspace-2675088/,如需轉載,請註明出處,否則將追究法律責任。

相關文章