搞懂MTK设备树镜像:DTB与DTBO到底由哪些DTS文件生成?(附mkdtimg工具使用指南)

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的自动转换,这个流程隐藏在常规编译过程中,很多开发者甚至意识不到它的存在。

转换过程关键点

  1. 输入文件定位

    • 主DWS文件:drivers/misc/mediatek/dws/mt6752/mt6752_64.dws
    • 备选DWS文件:vendor/mediatek/proprietary/custom/mt6752_64/kernel/dct/dct/codegen.dws(通常不使用)
  2. 转换工具调用: 核心转换逻辑由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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值