IMX8M学习--MYZR-i.MX8M-EVK设备树的语法(七)
@TOC
设备树的有关名词
在学习设备树之前,应该先了解一下设备树有关的缩写名词,要知道其英文全称,以便于在查阅文献和正式的生产不会总是访问小度或者打开翻译软件。
缩写名词:
DT:Device Tree 设备树
FDT:Flattened DeviceTree 展开设备树
OF:Open Firmware 开放式固件,一般在驱动获取节点信息时使用的API时,会提到
DTS:device tree source 设备树源码
DTSI:device tree source include 设备树源码包含
DTB:device tree blob 设备树二进制文件
DTC:device tree compiler 设备树编译器
设备树的语法
Device Tree的结构比较简单,由两个元素组成:节点Node,属性Property。
以MYZR-i.MX8M-EVK开发板的设备树源码文件为例:
其定义结构一般是
[标签:]节点名称[@ unit-address] {
[属性定义]
[子节点]
}
Node
在DTS中使用一对花括号”node-name{}”来定义;
Property
在Node中使用”property-name=value”字符串来定义;
其作用是用来做匹配的,就是一种简单的键值对。
其属性注意的是:
文本字符串(无结束符)可以用双引号表示:
string-property = “a string”
Cells是32位无符号整数,用尖括号限定:
cell-property = <0xaaa 123 0xabcd1234>
二进制数据用方括号限定:
binary-property = [01 23 45 67] (必须是2的倍数位)
不同表示形式的数据可以使用逗号连在一起:
mixed-property = “a string”,[01 23 45 67],< 0x12345678 >;
逗号也可用于创建字符串列表:
string-list = “black dog”,“bad dog”;
常见属性
compatible
address-cells/size-cells
地址占位/长度占位
#address-cells = <1>表示address字段的长度为1
#size-cells = <1>;表示length字段的长度为1;
reg
描述地址的
reg = <address1 length1 [address2 length2]>
[]表示可选的
interrupt
interrupt-controller 一个空的属性定义该节点作为一个接收中断信号的设备
#interrupt-cells 这是一个中断控制器节点的属性。它声明了该中断控制器的中断指示符中cell的个数(类似于#address-cells #size-cells)
interrupt-parent 这是一个设备节点的属性,包含一个指向该设备连接的中断控制器的phandle(指向或者引用)那些没有interrupt-parent的节点则从他们的父节点中继承该属性。
interrupts 一个设备节点属性,包含一个中断指示符的列表,对应于该设备上的每个中断输出信号