Open Firmware 之Device Tree

1.       DeviceTree簡介 node

DeviceTree 源於 PowerPC 架構下的device配置,後mergeLinux的主分支。DeviceTree 使用Device Tree sourcedts)的文本方式對系統設備樹進行描述。Device Tree Compiler(dtc)dts文件轉換成二進制文件binary device tree blob(dtb)Dtb文件在kernelboot時,由解析程序解析成memory數據,而後依據不一樣ARCH的不一樣需求,能夠根據這些內存中的數據建立相應設備的設備節點(通用類型設備,kernelof中已提供相應的設備節點建立API)。這樣就能夠在不改動kernel的狀況下,對不一樣的平臺實現無差別的支持,只需更換相應的dts文件,便可知足。 linux

2.       Device Tree Source的描述 架構

DTS的描述格式以下: spa

{//root node .net

         An empty property orm

        

         A child node { 內存

                   Array-prop = <>; get

                   String-prop= 「Hello」; it

}; class

 

Another child node {

         Binary-prop = <>;

         String-list = 「yes」, 「no」;

};

};

         Root node  device tree的起點。由mode & compatible 屬性描述,格式爲<mfg>, <board>,兩屬性共同描述一個具體的平臺類型。

 

         Chosen node 此節點並不表明真正的設備節點,而是一些虛擬的由bootloader傳遞給內核一些參數(??)

3.       相關node簡介

Cpus node

PowerPC,8641@0 {
        device_type = "cpu";
        reg = <0>;
        d-cache-line-size = <20>;    // 32 bytes
        i-cache-line-size = <20>;    // 32 bytes
        d-cache-size = <8000>;        // L1, 32K
        i-cache-size = <8000>;        // L1, 32K
        timebase-frequency = <0>;    // 33 MHz, from uboot
        bus-frequency = <0>;        // From uboot
        clock-frequency = <0>;        // From uboot
        32-bit;
        linux,boot-cpu;
    };

PowerPC爲節點的alias8641@0 爲節點名。

 

System memory

         描述系統內存節點,爲root節點子節點,一般只用一個memory節點描述系統全部的內存,reg屬性用來定義當前可用的各個memory範圍。

Memory {

         Device_type = 「memory」;

         Reg = <0x00000000, 0x8000000>; // Range of valid memory

};

設備節點名:memory

 

Interrupts的表示,還需整理。。。。。

相關文章
相關標籤/搜索