# dt工具发布页_DeviceTree便捷工具 **Repository Path**: yuwenhai/device-tree-tools ## Basic Information - **Project Name**: dt工具发布页_DeviceTree便捷工具 - **Description**: dt便捷工具,方便查看devicetree的包含关系以及搜索关键字等功能。 欢迎使用与反馈,欢迎一同维护本工具 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 3 - **Created**: 2022-04-18 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: devicetree, 高通, dtbo ## README # dt(DeviceTree)工具使用手册(v1.5 增强版) ![image-20220418132359991](README.assets/image-20220418132359991.png) ## 1.安装 ### 工具安装 1. 快速安装(推荐使用) 本地安装 ```shell sudo wget https://gitee.com/yuwenhai/device-tree-tools/raw/master/devicetree/dt.py;sudo mv dt.py /usr/local/bin/dt;sudo chmod 777 /usr/local/bin/dt #在新的终端即可直接使用dt命令 ``` 远程开发服务器安装 ```shell wget https://gitee.com/yuwenhai/device-tree-tools/raw/master/devicetree/dt.py;mv dt.py ~/.dt;chmod 777 ~/.dt;echo "alias dt='~/.dt'" >> ~/.bashrc #在新的终端即可直接使用dt命令 ``` 2. dt工具目前同时支持python2和python3。也可直接使用下述命令安装 ```shell python2: sudo python setup.py install python3: sudo python3 setup.py install 安装报如下错误的话: Traceback (most recent call last): File "setup.py", line 4, in from setuptools import setup, find_packages ImportError: No module named setuptools 需要先安装pip工具可以直接在命令行运行一下pip,正常是找不到的,然后根据命令行的提示来安装pip 例如Python3环境: sudo apt-get install python3-pip 安装完pip之后,再重新尝试安装 ``` ### 安装校验 安装完成后,在命令行直接输入`dt`即可使用本工具。可以在控制台输入`dt --help`或`dt --version`确认安装是否成功以及当前版本号 **`dt --help`输出如下:** ```shell usage: 从设置的根节点预览或搜索指定关键字 设备树查看器(1.5) optional arguments: -s SET_CONF, -set SET_CONF, --set SET_CONF 设置dtv.conf文件 -c, -config, --config 显示当前使用的dtv.conf文件路径 -r, -root, --root 显示当前的根节点路径 -z, -hp, --hidePath, -short, --short 按照最短路径显示 -f FIND_KEYWORD, -find FIND_KEYWORD, --find FIND_KEYWORD 搜索指定内容 -fre FINDRE_KEYWORD, -findre FINDRE_KEYWORD, --findre FINDRE_KEYWORD 正则的方式搜索指定内容 -x {re,all,cc,ss,hist}, -flag {re,all,cc,ss,hist}, --flag {re,all,cc,ss,hist} re:启用正则表达式搜索 all:在所有树中显示 cc:(care_case)大小写敏感 ss:展示所属名称 hist:在dump视图中展示变更历史 -node NODE, --node NODE 输出指定节点合并后的属性,支持路径或&label --change-filter {added,deleted,modified,all} 在dump历史视图中过滤展示类型 -d, -debug, --debug Debug模式运行 -no-color, --no-color 禁用颜色显示 -v, --version 显示当前版本 --history 显示历史变更记录 -h, --help 显示帮助页 ``` **`dt --history`输出如下:** ```shell #原始版本参考自: #https://blog.csdn.net/daoshuti/article/details/81568519 #变更记录: #v0.1 #1)基于参考版本,使用python2实现基本功能。 #v0.2 #1)优化显示逻辑 #2)BUG修复 #v0.3 #1)增加搜索功能 #2)增加路径显示选项(相对路径,绝对路径) #3)增加默认配置文件设置 #4)BUG修复 #5)完善help菜单 #v0.4 #1)给搜索到的关键子增加颜色效果 #2)修复BUG #v0.5 #1)增加多个DevicesTree根结点的支持 #2)给dtv.conf增加注释的支持,忽略#开头的根节点 #3)BUG修复 #v0.6 #1)使用Python3重构工具 #2)增加正则表达式搜索逻辑,可以输入正则表达式搜索内容 #0.7 #1)优化命令行传参逻辑 #2)修复配置文件不存在时候的报错 #3)增加搜索配置文件的逻辑,从当前目录下没发现配置文件的话,逐层向外搜索 #4)命令行传参的时候,可以指定配置文件,也可以指定设备树文件 #0.8 #1)优化变量名称 #2)增加显示配置文件命令 #3)增加显示使用的设备树命令 #0.9 #1)优化对 // 注释的处理逻辑 #1.0(20230217) #1)在当前执行命令的位置,显示搜索功能文件的相对路径 #2)修改显示的路径,从绝对路径修改为相对当前命令行的相对路径 #1.1(20230807) #1)优化搜索功能,默认大小写不敏感 #1.2(20230808) #1)优化搜索功能,增加批量搜索,使用分隔符分割字符串:"str1|str2|123" #2)优化搜索功能,增加"-x cc"选项来进行大小写敏感的搜索 #3)优化配置文件的读取逻辑,在配置文件为相对路径时,可以在子目录中正常处理 ``` ## 2.使用 ### 2.0 新功能速览(v1.5) - Dump节点视图:新增`-node`/`--node`参数,支持按“路径或&label”输出节点的最终合并内容 - 历史视图开关:新增`-x hist`,在Dump中展示属性的来源、覆盖与删除历史;支持`--change-filter {added,deleted,modified,all}`过滤类型 - 删除语法:支持`/delete-node/`与`/deleted-node/`两种写法;支持`/delete-property/`批量删除属性 - 引用删除提示:属性值引用已删除的`&label`时,在历史视图尾注追加`// ref-deleted &label` - include增强:同时支持`#include "..."`与`/include/ "..."`两种包含语法,完全依赖设备树的包含链 - 行号风格:`-ls/--linestyle`支持`vim`或`vscode`风格行号显示 - 跨平台优化:改进Windows路径解析、编码与子进程兼容性(无需配置即可正常使用) *dt工具支持解析dts\dtsi\dtv.conf文件,同时可以自动过滤源文件中注释掉的包含关系。 但是不支持跨行注释中存在include语句的情况。 如果出现解析异常,请手动删除注释后重新运行dt程序。* ### 参数说明如下: **下述参数前后位置不必固定,但是对于`-find` `-set`后面挨着的参数会解析成前面参数的子项** + 常规使用 `dt <文件名>` **含义:** 解析xxxx.dts中dtsi的包含情况 **参考1:** dt xxxx.dts **参考2:** dt dtv.conf + 不加参数使用 **含义:** 以控制台当前路径下`dtv.conf`中每一行的`dts`或`dtsi`都做为根结点进行解析。这个文件可以手动添加,也可以使用`-set`参数进行设置。如果文件中以#开头,则忽略该行配置文件。 **参考1:** dt -set xxxx.dts **参考2:** dt **注意:**0.5版本以后支持在dtv.conf中配置多个设备根节点 + `-hp`和`--hidepath` **含义:** 默认dt中解析出来的文件都会显示其在系统内的绝对路径,使用本参数可以将结果显示为相对根结点的相对路径 **参考1:** dt -hp **参考2:** dt -hp xxxx.dts + `-f` **含义:** 在设备树目录中搜索关键字,关键字之间使用|符号分隔,默认大小写不敏感 **参考1:** dt -f "uart|gpio10|tlmm 10" + `-fre` **含义:** 在设备树目录中搜索关键字,关键字之间使用|符号分隔,默认大小写不敏感,**推荐使用正则表达式搜索,普通搜索相当于是正则搜索的子集** **参考1:** dt -fre "uart|gpio10|tlmm 10" + `-x` **含义:** 作为-find命令的补充,常用参数如下: all:在所有树中显示搜索结果 re:使用正则表达式解析find指令 cc:使用大小写敏感的方式搜索关键字,支持普通搜索和正则搜索 ss:在搜索结果中展示所属名称 hist:在`-node`Dump视图中展示变更历史(来源、覆盖、删除) + `-node` / `--node` **含义:** 按“路径或&label”输出指定节点的最终合并视图(支持递归子节点)。 **参考:** dt -node "&qupv3_se14_spi" xxx.dtsi -x hist --change-filter all + `--change-filter` **含义:** 在Dump历史视图中过滤展示类型:`added`、`modified`、`deleted`、`all` + `-ls` / `--linestyle` **含义:** 设置行号风格,支持`vim`或`vscode`。 + `--help`和`-h` **含义:** 显示帮助命令 **参考:** dt --help + `-debug` **含义:** 显示调试信息,通常情况下用不到 **参考:** dt -debug **注意:**0.7以及之后版本删除本命令 ### 参考命令 #### dt -set ./dts/qcom/qcs610-iot.dts **需要提前设置好默认dts路径,可以使用`dt -set xxx.dts`设置** ![image-20220418130840692](README.assets/image-20220418130840692.png) #### **dt** ![image-20220418130045466](README.assets/image-20220418130045466.png) #### dt -find qupv3_se12 `-find qupv3_se12`搜索命令 ![image-20220418130200495](README.assets/image-20220418130200495.png) #### dt -find qupv3_se12 -hp `-hp`显示相对路径 ![image-20220418130240082](README.assets/image-20220418130240082.png) #### dt ./dts/qcom/qcs610-iot.dts -hp -find "qupv3.*?spi" -flag re `-flag re`使用正则表达式解析搜索命令 `-flag all`在完整devicetree结构中显示搜索结果 ![image-20220418130424590](README.assets/image-20220418130424590.png) #### dt -node "&spi0" example.dtsi -x hist --change-filter all **含义:** 展示`&spi0`节点的最终合并视图,并在属性行尾展示来源与覆盖/删除历史;被删除的属性以注释形式保留并标注删除来源;若节点被删除,整块以注释形式保留完整信息并给出删除来源。 **参考输出(示例):** ```shell &spi0 { status = "okay"; // from soc-example.dtsi:120 example,timeout = <1000>; // from board-example.dtsi:45 vendor,rt; // from board-example.dtsi:46 flash0: flash@0 { compatible = "vendor,spi-flash"; // from soc-example.dtsi:130 reg = <0>; // from soc-example.dtsi:131 speed-hz = <4000000>; // from soc-example.dtsi:132 image-path = "prod.bin"; // from board-example.dtsi:50 // image-path = "dev.bin"; // overridden by board-example.dtsi:50 // write-protect-gpio = <&gpio 10 0>; // deleted by board-example.dtsi:52 }; }; ``` ### 2.1 配置文件默认行为(dtv.conf) 支持在`dtv.conf`中设置默认开关与根节点,例如: ```conf # 根节点列表(每行一个 .dts 或 .dtsi) /path/to/root.dtsi # 默认行为开关 dump_history=true # 开启Dump历史展示(等价于命令行 -x hist) show_stock=true # 等价于 -x ss carecase=true # 等价于 -x cc linestyle=vim # 行号风格(vim 或 vscode) ``` ### 2.2 注意事项 - 删除语法支持`/delete-node/`与`/deleted-node/`两种写法;`/delete-property/`支持批量删除属性 - include 解析支持`#include "..."`与`/include/ "..."`,完全依赖设备树包含链 - Dump视图会递归展示子节点;被删除引用的`&label`会在历史视图尾注提示