dtbo(Device Tree Blob Overlay)是 Linux/Android 系统中用于动态叠加修改硬件配置的设备树覆盖层二进制文件,需与主设备树(.dtb)合并后由内核加载 。核心特征
本质:编译后的二进制文件(由 .dts 源文件经 dtc 工具生成),非独立运行,必须叠加到主 .dtb 上生效 。
作用:在不修改主设备树的前提下,实现对特定硬件节点(如外设启用、引脚复用、参数调整)的增量配置,常用于区分同一 SoC 下不同机型或模块配置 。
应用场景:Android 启动分区(dtbo.img)、树莓派 overlays/ 目录、嵌入式 BSP 定制 。
加载机制:引导加载程序(Bootloader)先将 .dtb 载入内存,再应用 .dtbo 进行节点合并,最终形成完整设备树传给内核 。
与相关概念区别
DTS/DTSI:设备树源码(文本格式),.dts 为主文件,.dtsi 为可复用片段 。
DTB:主设备树二进制,描述基础硬件架构,通常由 SoC 厂商提供 。
DTBO:设备树叠加层二进制,描述差异化配置,由板级厂商或定制方提供 。
若需查看或修改其内容,需使用 dtc 工具反编译为 DTS 格式处理,不可直接编辑二进制文件 。
oct1158
@oct1158-ubuntu:~/Documents/Code/C/kernel-stable-4.4-rockpis$ ls -lh arch/arm64/boot/dts/rockchip/overlay/*.dtbo
-rw-rw-r-- 1 oct1158 oct1158 1.3K Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/i2c1-hym8563.dtbo
-rw-rw-r-- 1 oct1158 oct1158 546 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-console-on-uart0.dtbo
-rw-rw-r-- 1 oct1158 oct1158 788 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-console-on-uart1.dtbo
-rw-rw-r-- 1 oct1158 oct1158 669 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-console-on-uart2.dtbo
-rw-rw-r-- 1 oct1158 oct1158 505 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-i2c0.dtbo
-rw-rw-r-- 1 oct1158 oct1158 262 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-i2c1.dtbo
-rw-rw-r-- 1 oct1158 oct1158 383 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-i2c2.dtbo
-rw-rw-r-- 1 oct1158 oct1158 504 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-i2c3.dtbo
-rw-rw-r-- 1 oct1158 oct1158 624 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-i2c3-m0.dtbo
-rw-rw-r-- 1 oct1158 oct1158 624 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-i2c3-m1.dtbo
-rw-rw-r-- 1 oct1158 oct1158 262 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-pwm1.dtbo
-rw-rw-r-- 1 oct1158 oct1158 383 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-pwm2.dtbo
-rw-rw-r-- 1 oct1158 oct1158 383 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-pwm3.dtbo
-rw-rw-r-- 1 oct1158 oct1158 260 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-shajin-gt970.dtbo
-rw-rw-r-- 1 oct1158 oct1158 881 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-spi-spidev.dtbo
-rw-rw-r-- 1 oct1158 oct1158 382 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-uart0.dtbo
-rw-rw-r-- 1 oct1158 oct1158 624 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-uart1.dtbo
-rw-rw-r-- 1 oct1158 oct1158 384 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-uart2.dtbo
-rw-rw-r-- 1 oct1158 oct1158 624 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-uart3.dtbo
-rw-rw-r-- 1 oct1158 oct1158 295 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-usb20-host.dtbo
-rw-rw-r-- 1 oct1158 oct1158 491 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rk3308-w1-gpio.dtbo
-rw-rw-r-- 1 oct1158 oct1158 2.4K Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rockpis-dmic-8ch-pdm.dtbo
-rw-rw-r-- 1 oct1158 oct1158 963 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rockpis-i2s-out.dtbo
-rw-rw-r-- 1 oct1158 oct1158 966 Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rockpis-spdif-out.dtbo
-rw-rw-r-- 1 oct1158 oct1158 2.5K Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rockpis-v11-spi2-waveshare35b-v2.dtbo
-rw-rw-r-- 1 oct1158 oct1158 2.5K Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rockpis-v11-spi2-waveshare35c.dtbo
-rw-rw-r-- 1 oct1158 oct1158 2.5K Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rockpis-v12-spi2-waveshare35b-v2.dtbo
-rw-rw-r-- 1 oct1158 oct1158 2.5K Jul 29 17:29 arch/arm64/boot/dts/rockchip/overlay/rockpis-v12-spi2-waveshare35c.dtbo
oct1158
@oct1158-ubuntu:~/Documents/Code/C/kernel-stable-4.4-rockpis$