正点原子RV1126驱动开发笔记 03
设备树
文件名为DTS,描述板级设备,编译后的二进制文件扩展名为
.dtb
编译
在kernel目录下执行makefile文件
编译 Linux 源码中的所有东西,包括uImage/zImage,.ko 驱动模块以及设备树
make all
或者只编译设备树
make dtbs
编译制定的设备树
make ARCH=arm rv1126-alientek.dtb
dts语法
头文件扩展名为
.dtsi
|---- rv1126.dtsi # SoC级定义
|---- rv1126-xxx.dtsi # 核心板定义
|---- rv1126-xxx-evb-v10.dts # 底板定义
一般.dtsi 文件用于描述 SOC 的内部外设信息,比如 CPU架构、主频、外设寄存器地址范围,比如 UART、IIC 等等。
设备节点
每个设备都是设备树上的一个节点,每个节点都通过一些属性信息来描述节点信息
节点命名
/*
lable:节点标签,通过&lable访问节点
node-name:节点名
usat-address:设备的地址,可以没有
*/
label:node-name@uart-address
属性
自定义属性
字符串
compatible = "arm,cortex-a7";
32位无符号整数
reg = <0>;
上述代码设置 reg 属性的值为 0,reg 的值也可以设置为一组值,比如:
reg = <0 0x123456 100>;
字符串列表
compatible = "rockchip,rv1126-evb-ddr3-v13", "rockchip,rv1126";
标准属性
compatible(兼容值) 属性,用于将设备和驱动绑定起来。字符串列表用于选择设备所要使用的驱动程序
/*
manufacturer:厂商
model:模块对应的驱动的名字
other-property:其他的属性值,可以没有,第一个属性值找不到就依次找后面的
*/
compatible = "manufacturer,model","other-property";
model属性,描述开发板的名字或设备模块信息
model = "Rockchip RV1126 EVB DDR3 V13 Board";
status 属性,是设备的状态信息
- okay:表明设备是可操作的。
- disabled:表明设备当前是不可操作的,但是在未来可以变为可操作的
- fail:表明设备不可操作,设备检测到了一系列的错误
- ail-sss:sss 部分是检测到的错误内容。
address-cells(地址信息address所占字长) 和#size-cells(长度信息length所占字长) 属性,无符号 32 位整形,决定子节点reg属性信息
/*
其中 address 是起始地址,length 是地址长度
*/
reg = <address1 length1 address2 length2 address3 length3……>
ranges属性值可以为空或者按照
(child-bus-address,parent-bus-address,length)格式编写的数字矩阵,ranges 是一个地址映射/转换表>
- child-bus-address:子总线地址空间的物理地址,由父节点的#address-cells 确定此物理地址
- parent-bus-address:父总线地址空间的物理地址,同样由父节点的#address-cells 确定此物理地址所占用的字长。
- length:子地址空间的长度,由父节点的#size-cells 确定此地址长度所占用的字长。
向节点追加或修改内容
.dtsi文件是硬件模块定义,复用性高,最好不要修改
.dts文件是产品配置,是具体开发板的完整定义
所以在.dts文件中对特定模块进行追加
// 在label = i2c1下追加新节点
&i2c1 {
/* 要追加或修改的内容 */
};
特殊节点
在
/目录下有两个特殊的子节点:aliases和chosen
aliases
别名,可以访问标签&lable,也可使用别名来访问设备
aliases {
27 i2c0 = &i2c0;
28 i2c1 = &i2c1;
29 i2c2 = &i2c2;
}
chosen
chosen 节点主要是为了 uboot 向 Linux 内核传递数据,重点是 bootargs 参数
chosen {
bootargs = "earlycon=uart8250,mmio32,0xff570000 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=ext4 rootwait snd_aloop.index=7";
};
浙公网安备 33010602011771号