设备树 语法
在编写和修改一个设备树之前,你需要掌握设备树语法。
设备树语法其实也很简单,就是通过node和property这两个要素去描述各种各样的硬件设备。
一个完整的设备树文件如下所示:
/dts-v1/;
/ {
node1 {
a-string-property = "A string";
a-string-list-property = "first string", "second string";
// hex is implied in byte arrays. no '0x' prefix is required
a-byte-data-property = [01 23 34 56];
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>; /* each number (cell) is a uint32 */
child-node1 {
};
};
};
在一个设备树文件中,一个node节点通常表示一个设备,在每个node节点中,又会定义很多属性:property,用来描述设备的各种资源和属性。
/dts-v1/; 一个设备树文件中,要有这行声明,来设备树语法的版本。设备树语法也在不断地更新迭代中,这个是必须的。
一个设备树文件中,只能有一个根节点:/
每个节点里可以添加属性,也可以添加子节点,构成层次化的设备树
属性(property)的类型分为多种:
- string:
- u32:比如一个寄存器地址、内存大小等,需要一个32位的无符号整型表示
- u64:在64位系统中,很多地址需要2个U32的整型表示
- string list:有些设备会兼容很多信号,每个信号使用string表示,各个string之间用逗号隔开
驱动开发核心理论,Linux内核开发入门实战视频教程:《Linux内核编程》,具有一线芯片原厂开发经验的驱动工程师录制,内含Linux设备树课程,教你如何修改设备树文件和基于设备树接口开发驱动。详情点击:王利涛老师个人淘宝店:Linux内核编程