活动地址:CSDN21天学习挑战赛
设备树是什么
设备树是用于描述硬件的数据结构;在系统启动时将这些描述硬件的数据传递给操作系统解析;
设备树的存在形式
DTS device tree source 设备树源文件
DTB device tree binary 设备树源文件编译出来的二进制文件
DTC device tree compiler 设备树编译器,将设备树源文件编译为二进制文件
设备树源文件
device tree的基本单元是node。这些node被组织成树状结构,除了root node,每个node都只有一个parent。一个device tree文件中只能有一个root node。每个node中包含了若干的property/value来描述该node的一些特性。每个node用节点名字(node name)标识,节点名字的格式是node-name@unit-address。如果该node没有reg属性(后面会描述这个property),那么该节点名字中必须不能包括@和unit-address。unit-address的具体格式是和设备挂在那个bus上相关。例如对于cpu,其unit-address就是从0开始编址,以此加一。而具体的设备,例如以太网控制器,其unit-address就是寄存器地址。root node的node name是确定的,必须是“/”。 也就是说设备树源文件的结构为
1个root节点”/”;
root节点下面含一系列子节点,“node1” and “node2”
节点node1和下又含有一系列子节点,“child-node1” and “child-node2”
各个节点都有一系列属性
这些属性可能为空,如an-empty-property
可能为字符串,如a-string-property
可能为字符串树组,如a-string-list-property
可能为Cells(由u32整数组成),如second-child-property
设备树语法
[label:] node-name[@unit-address] {
[properties definitions]
[child nodes]
}
“[]”表示option,因此可以定义一个只有node name的空节点,label方便在dts文件中引用
基本数据类型:
text string(以null结束),以双引号括起来,如:
string-property = “a string”
cells 是32位无符号整形数,以尖括号括起来,如
cell-property = <0xbeef 123 0xabcd1234>
binary data 以方括号括起来,如:
binary-property = [0x01 0x23 0x45 0x67];
不同类型数据可以在同一个属性中存在,以逗号分格,如:
mixed-property = “a string”, [0x01 0x23 0x45 0x67], <0x12345678>;
多个字符串组成的列表也使用逗号分格,如:
string-list = “red fish”,“blue fish”;