Device Tree
对于嵌入式,是bootloader的交互命令加载DTB(将flash中的dtb拷贝到内存)
Device tree结构
可以动态探测到的设备是不需要在设备树描述的,例如 USB device,但SOC上的usb host controller是无法动态识别的,需要在device tree中描述
device tree基本单元是node,一个device tree文件只能有一个root node;每个node包含很多property/value来描述该node的一些特性。每个node用节点名字标识,节点名字的格式 node-name@unit-address. 如果node没有reg属性, 那该节点名字中必须不能包括 @和unit-address
unit-address具体格式是和设备挂在那个bus上相关,eg:
对于具体设备,如以太网控制器,值就是寄存器地址。
root node 的node name是确定的 必须是 ‘/’
属性(property)值标识了设备特性,它的值(value)是多种多样:
- 可能是空,例如:64-bit
- 可能是一个u32,u64的数值(cell这个术语,在Device Tree表示32bit的信息单位),eg:#address-cells=<1>,可能是一个数组。例如<0x00000000 0x00000000 0x00000000 0x20000000>
- 可能是一个字符串,eg:device_type=“memory”,或string list 如:“PowerPC,970”
Device Tree source file语法
在dts文件中,一个node被定义成:
[label:] node-name[@unit-address] {
[properties definitions]
[child nodes]
}
原文:http://www.wowotech.net/device_model/dt_basic_concept.html
Device Tree 详解
http://kernel.meizu.com/device-tree.html