4月25日 设备树概念

设备树是节点和属性的简单树结构。属性是键值对,节点可以同时包含属性和子节点

1.节点与属性

单个根节点:”/"

几个子节点:“”和”node1node2"

节点 1 的几个子节点:“” 和”child-node1child-node2"

一堆属性散落在树中。

属性是简单的键值对,其中值可以为空或包含任意字节流。虽然数据类型未编码到数据结构中,但可以在设备树源文件中表示一些基本数据表示形式。

文本字符串(以 null 结尾)用双引号表示:

string-property = "a string";

“单元格”是 32 位无符号整数,由尖括号分隔:

cell-property = <0xbeef 123 0xabcd1234>;

二进制数据用方括号分隔:

binary-property = [0x01 0x23 0x45 0x67];

不同表示形式的数据可以使用逗号连接在一起:

mixed-property = "a string", [0x01 0x23 0x45 0x67], <0x12345678>;

逗号也用于创建字符串列表:

string-list = "red fish", "blue fish";

2.一般.dts描述板级信息(也就是开发板上有哪些IIC设备、SPI设备等),.dtsi描述SOC级信息(也就是

SOC有几个CPU、主频是多少、各个外设控制器信息等)。

3.在.dts设备树文件中,可以通过“#include”来引用.h、.dtsi和.dts文件。

4. 上述命令并不是“node-name@unit-address”这样的格式,而是用“:”隔开成了两部分,“:”前面的是节点标签(label),“:”后面的才是节点名字,格式如下所示:

label: node-name@unit-address

引入label的目的就是为了方便访问节点,可以直接通过&label来访问这个节点,比如通过&cpu0就可以访问“cpu@0”这个节点,而不需要输入完整的节点名字

5. 1、compatible属性

compatible属性也叫做“兼容性”属性,这是非常重要的一个属性!compatible属性的值是一个字符

串列表,compatible属性用于将设备和驱动绑定起来。字符串列表用于选择设备所要使用的驱动

程序,compatible属性的值格式如下所示:

"manufacturer,model"

其中manufacturer表示厂商,model一般是模块对应的驱动名字。比如imx6ull-alientek-emmc.dts

中sound节点是I.MX6U-ALPHA开发板的音频设备节点,I.MX6U-ALPHA开发板上的音频芯片采用

的欧胜(WOLFSON)出品的WM8960,sound节点的compatible属性值如下:

compatible = "fsl,imx6ul-evk-wm8960","fsl,imx-audio-wm8960";

属性值有两个,分别为“fsl,imx6ul-evk-wm8960”和“fsl,imx-audio-wm8960”,其中“fsl”表示厂商是飞

思卡尔,“imx6ul-evk-wm8960”和“imx-audio-wm8960”表示驱动模块名字。sound这个设备首先使

用第一个兼容值在Linux内核里面查找,看看能不能找到与之匹配的驱动文件,如果没有找到的话就使用第二个兼容值查。

6. 一般驱动程序文件都会有一个OF匹配表,此OF匹配表保存着一些compatible值,如果设备节点的compatible属性值和OF匹配表中的任何一个值相等,那么就表示设备可以使用这个驱动。

7. #address-cells、#size-cells

这两个属性的值都是无符号32位整形,#address-cells和#size-cells这两个属性可以用在任何拥有

子节点的设备中,用于描述子节点的地址信息。

#address-cells属性值决定了子节点reg属性中地址信息所占用的字长(32位),#size-cells属性值决

定了子节点reg属性中长度信息所占的字长(32位)。

#address-cells和#size-cells表明了子节点应该如何编写reg属性值,一般reg属性都是和地址有关的

内容,和地址相关的信息有两种:起始地址和地址长度,reg属性的格式为:

每个“address length”组合表示一个地址范围,其中address是起始地址,length是地址长度,

#address-cells表明address这个数据所占用的字长,#size-cells表明length这个数据所占用的字长,比如:

reg属性

reg属性前面已经提到过了,reg属性的值一般是(address,length)对。reg属性一般用于描述设备

地址空间资源信息,一般都是某个外设的寄存器地址范围信息,比如在imx6ull.dtsi中有如下内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值