DTBTOOL SPRD

SoraNeko 发布于 2026-05-01 158 次阅读


DTB TOOL SPRD


📌 1. 工具简介

dtbtool 是展锐(Spreadtrum / Unisoc)平台专用的设备树打包工具,它扫描指定目录下的所有 .dtb 文件,提取每个 DTB 中的 sprd,sc-id 参数(芯片型号、平台、版本),然后生成一个合并的、按页对齐的镜像文件。

人话就是,直接生成一个带 0x200 偏移的头部,不再需要手动 hex。

虽然很不愿意承认,但他确实是直接从高通改过来的。
里面还留着高通的 qcom 字样,依旧招笑紫光。


📦 2. 编译 dtbtool

源码文件

  • dtbtool.c

编译命令(Linux 环境)

gcc -o dtbtool dtbtool.c

依赖

系统需安装 dtc(Device Tree Compiler),因为工具在运行时需要调用 dtc 临时反编译 .dtb 文件以提取 sprd,sc-id

# Ubuntu/Debian
sudo apt install device-tree-compiler

🚀 3. 使用方法

基本语法

./dtbtool [选项] -o <输出文件> <输入目录>

常用选项

选项 说明
-o file 指定输出的合并镜像文件名(必须)
-p path 指定 dtc 所在目录(如果 dtc 不在 PATH 中)
-s size 设置页面大小(单位:字节),默认为 2048,应与 bootloader 的页面大小一致
-v 显示详细信息(verbose)
-h 显示帮助信息

示例

# 基本用法:将 ./dtbs/ 目录下的所有 .dtb 文件合并为 dtb.img
./dtbtool -o dtb.img ./dtbs/

# 指定页面大小为 4096 字节,并显示详细输出
./dtbtool -s 4096 -v -o dtb.img ./dtbs/

# 如果 dtc 不在 PATH 中,指定其路径
./dtbtool -p /usr/local/bin/ -o dtb.img ./dtbs/

📂 4. 输入文件要求

  • 输入目录中应包含一个或多个 .dtb 文件(扩展名必须为 .dtb)。

  • 每个 .dtb 对应的设备树源码中必须包含以下格式的属性:

    sprd,sc-id = ;

    例如: sprd,sc-id = <0x1808 0x01 0x20000>;

  • 工具会解析每个 .dtb 文件,提取 sprd,sc-id 中的三元组,并以此作为去重和排序的依据(按 chipset → platform → rev 升序)。如果多个 DTB 具有相同的三元组,只会保留第一个(后续的会报告 duplicate 并跳过)。

    这个头部在紫光被用于校验芯片。


📄 5. 输出文件结构

生成的镜像文件包含以下部分(以页面大小对齐):

  1. 文件头(12 字节)

    • Magic: "SPRD" (4 字节)
    • Version: 1 (4 字节)
    • DTB 数量: n (4 字节)
  2. 索引表(每个 DTB 条目 20 字节)
    每个条目包含:

    • chipset (4 字节)
    • platform (4 字节)
    • rev (4 字节)
    • offset (4 字节) — DTB 数据在文件中的起始偏移
    • size (4 字节) — DTB 数据的大小(按页对齐后)
  3. 结束标志(4 字节) — 值为

  4. 填充到页面边界 — 以便第一个 DTB 从页边界开始

  5. 每个 DTB 数据块(按页对齐)


⚠️ 6. 注意事项

  1. dtc 依赖:工具必须能够调用 dtc 来反编译 .dtb。如果 dtc 安装路径不在 $PATH 中,请使用 -p 指定。
  2. 页面大小:务必与目标设备的 bootloader 期望的页面大小一致(通常为 20484096)。如果不确定,可以查看原厂 dtb.img 的信息或查阅设备文档。
  3. 去重规则:仅当两个 DTB 的 sprd,sc-id 三元组完全相同时才会去重。如果同一芯片有不同版本,保留全部。
  4. 输出文件:如果生成过程中发生错误,工具会自动删除不完整的输出文件。其实很烦人。

🔄 7. 典型工作流(生成并刷入)

  1. 准备包含所有 DTB 的目录,例如 my_dtbs/

  2. 运行 dtbtool 生成合并镜像:

    ./dtbtool -o dtb.img my_dtbs/
  3. 将生成的 dtb.img 刷入设备的 dtb 分区(通常使用 fastboot):

    fastboot flash dtb dtb.img

    注意:部分设备可能会将 dtb 合并在 boot.img 中,处理方法不同。

此作者没有提供个人介绍。
最后更新于 2026-05-01