1.设备树:设备和树,描述设备树的文件叫做DTS(Device Tree Source),
这个DTS文件采用树形结构描述板级设备,也就是开发板的设备信息,
比如CPU数量、内存基地址、IIC接口上接了哪些设备、SPI接口上接
了哪些设备等等。
2.设备树结构模板:
//1个root节点"/";root节点下面一系列子节点。
/ {
node1 {
a-string-property = "A string";
a-string-list-property = "first string", "second string";
a-byte-data-property = [0x01 0x23 0x34 0x56];
child-node1 {
first-child-property;
second-child-property = <1>;
a-string-property = "hello, world";
};
child-node2 {
};
};
node2 {
an-empty-property;
a-cell-property = <1 2 3 4>;
child-node1 {
};
};
};
......
**3.DTS 、DTB和DTC** 3.1设备树源文件扩展名为.dts,DTS是设备源码文件,DTB是将DTS编译 以后得到的二进制文件。将.dts编译为.dtb需要用到DTC工具。 3.2DTC 工具源码在 Linux 内核的 scripts/dtc 目录下, cripts/dtc/Makefile 文件内容如下: hostprogs := dtc always := $(hostprogs-y) dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o srcpos.o checks.o util.objs tc-objs += dtc-lexer.lex.o dtc-parser.tab.o ........
4.DTS语法
4.1 .dtsi头文件
和C语言一样,设备树也支持头文件,设备树的头文件扩展名为.dtsi
以我用的IMX6ULL为例,在imx6ull-alientek-emmc.dts中有以下内容:
#include#include "imx6ull.dtsi"
4.2 设备节点
设备树采用树形结构来描述板子对应的信息,每个设备都是一个节点,
每个节点都通过一些属性信息来描述节点信息。如下:
/ {
aliases {
can0 = &flexcan1;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
compatible = "arm,cortex-a7";
device_type = "cpu";
reg = <0>;
};
};
.......
设备树中节点命名格式: node-name@until-address
其中“node-name”是节点名字,为 ASCII 字符串,节点名字应该能够清晰的描述出节点的
功能,比如“uart1”就表示这个节点是 UART1 外设。“unit-address”一般表示设备的地址或寄
存器首地址,如果某个节点没有地址或者寄存器的话“unit-address”可以不要,比如“cpu@0”、“interrupt-controller@00a01000”。



