MTK设备树镜像构建全解析:从DTS到DTB/DTBO的完整链路
在Android内核开发领域,设备树(Device Tree)作为硬件描述的核心机制,其构建流程一直是系统工程师必须掌握的技能。特别是对于MTK平台,设备树镜像的生成涉及多个配置文件和工具链,理解这个过程中的细节对于定制内核、调试硬件兼容性问题至关重要。
1. MTK平台设备树架构基础
MTK芯片组的设备树管理采用了一套独特的双轨制架构。与高通等平台不同,MTK保留了传统的DWS(Digital Wiring System)配置工具,同时兼容标准的设备树工作流。这种设计既照顾了老用户的习惯,又满足了新内核版本的要求。
核心文件类型解析:
- DWS文件:图形化硬件配置界面生成的文件,位于
drivers/misc/mediatek/dws/目录下 - DTS/DTSI文件:标准设备树源文件及其包含文件
- DTB文件:编译后的设备树二进制文件
- DTBO文件:设备树叠加层(Overlay)二进制文件
MTK典型的设备树文件结构如下:
arch/arm64/boot/dts/mediatek/
├── mt6752.dts # 基础设备树
├── mt6752_64.dts # 叠加层设备树
├── mt6752_64.dtsi # 公共包含文件
└── cust_dtsi/ # DWS生成的定制配置
注意:MT6752和mt6752_64的区别不仅仅是字面差异,前者用于生成基础DTB,后者专用于DTBO
2. DWS到DTSI的转换机制
MTK平台通过drvgen工具链实现DWS到DTSI的自动转换,这个流程隐藏在常规编译过程中,很多开发者甚至意识不到它的存在。
转换过程关键点:
-
输入文件定位:
- 主DWS文件:
drivers/misc/mediatek/dws/mt6752/mt6752_64.dws - 备选DWS文件:
vendor/mediatek/proprietary/custom/mt6752_64/kernel/dct/dct/codegen.dws(通常不使用)
- 主DWS文件:
-
转换工具调用: 核心转换逻辑由
kernel-4.14/scripts/drvgen/drvgen.mk中的Makefile规则实现:
.PHONY: drvgen
drvgen: $(DRVGEN_FILE_LIST)
$(DRVGEN_FILE_LIST): $(DRVGEN_TOOL) $(DWS_FILE) $(DRVGEN_FIG) $(PROJ_DTS_FILES)
for i in $(PROJ_DTS_FILES); do \
base_prj=`grep -m 1 '#include [<\"]...' $$i | sed 's/#include...`; \
prj_path=$(DRVGE

&spm=1001.2101.3001.5002&articleId=160433469&d=1&t=3&u=70189248f71147c0bf0c13f52ca4f910)
1675

被折叠的 条评论
为什么被折叠?



