1. DeviceTree簡介 node
DeviceTree 源於 PowerPC 架構下的device配置,後merge到Linux的主分支。DeviceTree 使用Device Tree source(dts)的文本方式對系統設備樹進行描述。Device Tree Compiler(dtc)將dts文件轉換成二進制文件binary device tree blob(dtb)。Dtb文件在kernelboot時,由解析程序解析成memory數據,而後依據不一樣ARCH的不一樣需求,能夠根據這些內存中的數據建立相應設備的設備節點(通用類型設備,kernel於of中已提供相應的設備節點建立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爲節點的alias,8641@0 爲節點名。
System memory
描述系統內存節點,爲root節點子節點,一般只用一個memory節點描述系統全部的內存,reg屬性用來定義當前可用的各個memory範圍。
Memory {
Device_type = 「memory」;
Reg = <0x00000000, 0x8000000>; // Range of valid memory
};
設備節點名:memory
Interrupts的表示,還需整理。。。。。