❶ 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內核支持此設備。