正点原子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";
};

posted on 2026-03-09 20:00  奶盖不加糖  阅读(72)  评论(0)    收藏  举报

导航