1.像树形结果的设备。树干是iic,spi,树尖是各类传感器
2.在单片机裸机开发中,例如spi这种,各类信息如速度,引脚都是在.c文件里面写死的。这样就会导致linux内核中存在很多.c文件,因此为了减少这么多内容,把这些东西分离出来写到设备树中。
.dts相当于.c,就是DTS源码文件。
DTC工具相当于gcc编译器,将dts编译为dtb。
执行命令(先编译内核生成DTC):
make dtbs 编译所有
make all 编译内核的时候默认编译方式
make imx6ull_emmc_alientke.dtb 编译指定的dtb文件
dtb相当于bin文件,也叫可执行文件
1.设备树也有头文件,扩展名为.dtsi
对于头文件,存放的是通用的一些设备放在头文件中,如果是独有的需要单独追加放在dts中
2.DTS也是从 / 开始,从 / 根节点开始描述设备信息
3.在根节点信息外有 &cpu0这样的语句是追加
4.node-name@unit-address,其中unit-address是设备地址,但也有可能不是
5.对于 : 分开的两部分,前面是标签,后面是名字,引入标签是通过标签可以直接访问名字简化因为名字过长问题
系统启动以后可以在根文件系统里面看到设备树的节点信息。
aliases
定义别名,但是一般使用&label标签进行别名设置
chosen
chosen 节点主要是为了 uboot 向 Linux 内核传递数据,重点是 bootargs 参数
compatible:值是字符串,用来兼容性属性
model:值是字符串,用来描述模块
status:值是字符串,用来描述设备状态
address-cells:值是无符号整型,用来描述拥有子节点设备中,子节点的的地址信息
size-cells:值是无符号整型,用来描述拥有子节点设备中,子节点的的长度信息
注意事项:这两个影响的是子节点。
reg:值一般是(address,length),用于描 述设备地址空间资源信息,一般都是某个外设的寄存器地址范围信息
rangges:值可以为空或者按照(child-bus-address,parent-bus-address,length)格式编写的数字矩阵
name:字符串,被淘汰了
device_type:字符串,此属性只能用于 cpu 节点或者 memory 节点
根节点下的compatible:通过根节点的 compoatible 属性查看是否支持此设备,如果支持的话设备就会启动 Linux 内核
1.驱动通过OF函数获取设备树属性内容。
2.驱动要想获取设备树的节点内容,需要先找到节点