文章目录
- 设备树基本语法
- 跟节点
- 子节点
- reg属性
- address-cells 和 size-cells 属性
- model 属性
- status 属性
- compatible 属性
- aliases 节点
- chosen 节点
- device_type 节点
- 自定义属性
-
当描述设备树(Device Tree) 时, 通常会涉及到以下几个关键术语: DTS、 DTSI、 DTB 和 DTC
- dts 源文件
- dtsi 包含文件
- dtb 二进制文件
- dtc 编译器
-
设备树源文件通常存放在 arch/arm64/boot/dts/ 目录中
-
编译器 scripts/dtc/ dtc文件就是可执行编译器
-
编译为二进制dts
dtc -I dts -O dtb -o output.dtb input.dts
-
反编译为源文件
dtc -I dtb -O dts -o output.dts input.dtb
-
设备树基本语法
跟节点
/dts-v1/; // 设备树版本信息
/ {
};
子节点
[label:] node-name@[unit-address] {
[properties definitions]
[child nodes]
};
- 节点名称 node-name :通常是硬件设备的名称,是唯一的
- 节点标签 label :标签允许其他节点引用,以便于在设备树中建立引用关系,可以理解为是节点名称的一个别名
- 单元地址 unit-address :目的是区分相同类型的设备的不同实例
- 属性定义 properties definitions : 属性定义是一组键值对, 用于描述设备的配置和特性。例如寄存器地址、 中断号、 时钟频率等
- 子节点 child nodes :子节点是当前节点的子项, 用于进一步描述硬件设备的子组件或配置。
reg属性
reg = <address size>;
- 指定设备的寄存器地址和大小, 提供了与设备树中的物理设备之间的寄存器映射关系
- 可以在设备节点中有单个值格式和列表值格式这两种常见格式
address-cells 和 size-cells 属性
-
指定在上个小节中要设置的设备树中地址单元和大小单元的位数
-
使用reg的多少个数据,来表示地址单元或者是大小
-
//reg的2个都是表示的地址,size为0说明没有表示大小 node1 { #address-cells = <2>; #size-cells = <0>; node1-child { reg = <0x0000 0x0001>; }; }; //3,2 //表示地址3个,大小1个 //地址 0x0800 0x0 0x0 //大小 0x0 0x0 pci@1,0 { #address-cells = <3>; #size-cells = <2>; compatible = "intel,ce4100-pci", "pci"; device_type = "pci"; bus-range = <1 1>; reg = <0x0800 0x0 0x0 0x0 0x0>; }
-
model 属性
- model 属性用于描述设备的型号或者名称
- 当设备节点的 compatible 属性相同或相似时。
- 通过使用不同的 model 属性值, 可以更加准确地确定所使用的设备类型
status 属性
- status 属性的值可以是以下几种:
- “okay”: 表示设备或节点正常工作, 可用
- “disabled”: 表示设备或节点被禁用, 不可用
- “reserved”: 表示设备或节点已被保留, 暂时不可用
- “fail”: 表示设备或节点初始化或操作失败, 不可用
- 通过使用 status 属性, 设备树可以动态地控制设备的启用和禁用状态
compatible 属性
-
用于识别设备节点与驱动程序之间的匹配关系
-
compatible 属性也可以具有多个匹配值
-
compatible = "everest,es8388", "everest,es8323"; compatible = ["vendor,device1", "vendor,device2"];
-
aliases 节点
-
用于定义设备别名
-
aliases { mmc0 = &sdmmc0; } //mmc0 别名与设备树中的 sdmmc0 节点相关联
chosen 节点
-
用于传递和存储系统引导和配置的相关信息
-
chosen { bootargs = "root=/dev/nfs rw nfsroot=192.168.1.1 console=ttyS0,115200"; };
device_type 节点
- 用于描述设备类型的节点
- 常见的设备类型包括但不限于:
- cpu: 表示中央处理器。
- memory: 表示内存设备。
- display: 表示显示设备, 如液晶显示屏。
- serial: 表示串行通信设备, 如串口
自定义属性
用户根据特定需求添加的属性。 这些属性可以用于提供额外的信息、 配置参数或元数据, 以满足设备或系统的特定要求