❶ Linux 备树文件.DTS文件格式
设备树是一种用于描述板级硬件信息的专用文件,其扩展名为.dts。此文件用于分离Linux中关于板级硬件的描述内容,便于管理和引用。
在使用设备树前,ARM架构板级信息存于/arch/arm/mach-xxx和/arch/arm/plat-xxx目录下。而使用设备树后,这些信息转移至/arch/arm/boot/dts目录,并且dts工具源码位于scripts/dtc/Makefile中。
设备树的语法结构丰富,包括文件引用、文件布局、节点格式与属性格式等。
在文件引用方面,如同C语言一般,可以使用`#include`引用.dtsi、.dts和.h文件。文件布局则需遵循特定规范,确保结构清晰、易于理解和维护。
节点格式中的`[]`表示某项内容可省略,`[label]`用于标记以方便访问,`node-name`为节点名称,`[@unit-address]`则表示设备的地址或寄存器首地址。属性格式则分为`[label:] property-name = value;`(有值)和`[label:] property-name;`(无值)两种。
属性内容包括字符串、32位无符号整数、16位字节序列和字符串列表。例如,`compatible`属性用于将设备与驱动绑定,`model`描述设备模块信息,`status`描述设备状态。
根节点的`compatible`属性用于确认Linux内核是否支持该设备,通常包括硬件设备名称和所使用的SOC。设备节点的`compatible`属性则用于匹配Linux内核中的驱动程序。
在使用设备树的场景下,通过在.dts文件中`#include`相关.dtsi文件,并在.dts文件中追加或修改内容,可以实现对设备的灵活配置。
设备匹配方法涉及在`arch/arm/mach-imx/mach-imx6ul.c`文件中设置`dt_compat`变量,此变量包含多个兼容值。当设备根节点`/`的`compatible`属性值与`dt_compat`表中的任一值相匹配时,表示Linux内核支持此设备。