Android DTO和dtbo简介

在做Android8时,发现在dts中引入了dto。设备树叠加层(DTO)可让主要的设备树(DTB)叠加到设备树上。使用DTO的引导程序可以维护系统芯片(SOC)DT,并动态叠加针对特定设备的DT,从而向树中添加节点并对先用树中的属性进行更改。也就是SOC的设备节点作为DTB,其他设备作为DTO,DTO可以对DTB中的节点进行引用和修改。实现DTO包括分割设备树,编译,分区和运行。

分割DT

首先将设备树分割成两部分:

  • 主DT。由SOC供应商提供的SOC公用部分和默认配置。
  • 叠加DT。由原始设计制造商(ODM)/原始设备制造商(OEM)提供的设备专属配置。
编译主DT和叠加DT

要编译主DT,请执行以下操作:

  1. 将朱.dts编译为.dtb文件。
  2. 将.dtb文件刷写到引导加载程序在运行时可访问的分区。

要编译叠加DT,请执行以下操作:

  1. 将叠加DT .dts编译为.dtbo文件。虽然文件格式与已格式化为扁平化设备树的.dtb文件相同,但是用不同的文件扩展名可以将其与主DT分开来。
  2. 将.dtbo文件刷写到引导加载程序在运行时可访问的分区。
对DT进行分区

在闪存中确定加载程序在运行时可访问和可信的位置以放入.dtb和.dtbo。

朱DT的实例位置:

  • 引导分区的一部分,已附加到内核(image.gz)
  • 单独的DT blob(.dtb),位于专用的(dtb)中。
在引导加载程序中运行
  1. 将 .dtb 从存储加载到内存中
  2. 将 .dtbo 从存储加载到内存中
  3. 用 .dtbo 叠加 .dtb 以形成合并的 DT
  4. 启动内核(已给定合并 DT 的内存地址)

对于包含关系,我们可以从dts目录下的Makefile看到:

dtbo-$(CONFIG_ARCH_SDM429) += sdm429-mtp-overlay.dtbo \
	sdm429-cdp-overlay.dtbo \
	sdm429-qrd-overlay.dtbo \
	sdm429-spyro-qrd-evt-overlay.dtbo \
	sdm429-spyro-qrd-dvt-overlay.dtbo
	
	
sdm429-spyro-qrd-evt-overlay.dtbo-base := sdm429-spyro.dtb
sdm429-spyro-qrd-dvt-overlay.dtbo-base := sdm429-spyro-dvt.dtb

对于SDM429来说,将有5个dtbo,sdm429-spyro-qrd-evt-overlay.dtbo-base这个dtbo依赖于sdm429-spyro.dtb,sdm429-spyro-qrd-dvt-overlay.dtbo-base这个dtbo依赖于sdm429-spyro-dvt.dtb。更具这些dtbo和dtb我们能够追溯到引用的各个dtsi文件。

  • 2
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值