DTBO简介

article/2025/10/24 6:43:59

 1、DTBO简介      

       设备树 (DT) 是用于描述“不可发现”硬件的命名节点和属性构成的一种数据结构。操作系统(例如在 Android 中使用的 Linux 内核)会使用 DT 来支持 Android 设备使用的各种硬件配置。硬件供应商会提供自己的 DT 源文件,接下来 Linux 会将这些文件编译到引导加载程序使用的设备树 Blob (DTB) 文件中。

设备树叠加层 (DTO) 可让主要的设备树 Blob (DTB) 叠加在设备树上。使用 DTO 的引导加载程序可以维护系统芯片 (SoC) DT,并动态叠加针对特定设备的 DT,从而向树中添加节点并对现有树中的属性进行更 改。

设备树叠加层 (DTO) 扩展了现有的扁平化设备树 (FDT) 实现,让用户空间可以通过加载用于修改原始数据的额外叠加层 FDT,在运行时修改内核中的初始设备树数据。Android 不要求在运行时从用户空间更新 DT blob,而是建议供应商借助 libfdt 或 libufdt 在引导加载程序中添加设备树补丁程序

       DTBO(DTB Overlay,设备树块覆盖)用于在 DTB(Device Tree Blob,设备树块)的基础上添加或修改节点信息。它可以配置 ODM(Original Design Manufacturer,原始设计商)和OEM(Original Equipment Manufacturer,原始设备生产商)特有的设备节点,使这些配置与 SoC 隔离,从而让配置与更新更加方便灵活。

       多 DTBO 结构,编译时同一个 BSP_BUILD_FAMILY 下的多个 DTBO 都会打包到 dtbo.img 中。以 SC9863A 为例,图 图 1-1 为其多 DTBO 结构,其中 sp9863a-3h10-overlay.dtbo-base、sp9863a-1c10-overlay.dtbo-base 和 sp9863a-1h10-overlay.dtbo-base 指定的 sp9863a.dtb 都会编译并打包到 dtb.img 中。

 图1-1 多DTBO 结构示意图

     U-Boot 在启动时,它会匹配 DTBO 并将其内容合入或者覆盖到匹配的 DTB 中,随后加载到 DDR,再将地址传给 Kernel.
     dtb.img 在 boot header V2 时会打包到 boot.img,而在 boot header V3/V4 时会打包到 vendorboot.img。
     系统引入 DTBO 后,设备树分割为两部分:
 Native DT:Vendor 供应商提供的 SoC 公用部分和 Vendor 默认配置。
 Overlay DT:ODM/OEM 提供的专属配置或客制化差异配置。 

2、DTB 和 和 DTBO 节点编写 

2.1 基本语法规范
      DTBO 基本语法规范如下:
      1. DTB 和 DTBO 的源文件在文件起始位置必须包含“/dts-v1/;”字符串标签。
      2. DTBO 的源文件起始位置必须包含“/plugin/;”字符串标签。这是为了避免编译过程中 DTBO 对当前文件不存在的节点引用时产生报错。
       3. DTBO 支持 fragment 语法,fragment、target-path 和__overlay__三部分构成完整的 fragment 语法结构。其中每个部分含义如下:
− fragment 代表需要引用 DTB 中节点的片段标签
− target-path 代表需要引用的 DTB 中的节点名称
− __overlay__里的内容代表实际叠加到 DTB 中的内容
具体编写代码示例如图 图 2-1 所示。

图2-1 DTBO 编写示例

扩展阅读:设备树叠加层


http://chatgpt.dhexx.cn/article/f8Rw4QYg.shtml

相关文章

【DTB/DTBO 分区介绍】

如果你的 DTB/DTBO 位于专属的分区(例如 dtb 和 dtbo 分区)中,请使用以下表格结构和头文件格式: 数据结构 dt_table_header 仅适用于 dtb/dtbo 分区;您不能在kernel( image.gz) 末尾处附加此格式。如果您有一个 DTB/D…

2.2设备树的规范(dts和dtb)——DTB格式

本节讲述设备树的dtb格式。 上节讲述了dts格式。回顾上节,在dts文件和dtsi文件中,可以使用C语言的define和include,使用方法和作用也同C语言相同。 编写dts文件后,需要使用dtc工具将dts文件编译成dtb文件。dtc工具可以检查dts文…

「设备树」dtb给内核的两种工作模式

一,传递dtb给内核 对于传统bootloader提供两种工作模式:一是启动加载模式(start loading),一是下载模式(downloading) 工作在启动加载模式时,bootloader会自动执行bootcmd命令&#…

设备树_dtb文件分析

前言:我之前的原计划是没有打算写设备树dtb文件分析,但是情势所迫啊!,学习还是要一步一步来的。 在前面的章节提到过.dts文件以文本方式对系统设备树进行描述,经过Device Tree Compiler(dtc)将dts文件转换成二进制文件…

Linux设备树学习2 - DTB文件格式

一. DTB文件简介 DTB文件是由DTS文件通过dtc命令编译生成的二进制文件。DTS文件不能直接被内核解析,需要编译成DTB文件才可以直接被内核识别并解析使用的。 二. DTB文件内容布局 从上图可以看出,DTB由四个部分组成,分别是struct fdt_header&a…

setUserVisibleHint-- fragment真正的onResume和onPause方法

这个情况仅适合与多个fragment之间切换时统计,而非activity和fragment同时交互,因当时项目为首页4个fargment时长统计,因此适合,经下面网友评论指出,特在这里写出此问题,因最近项目较忙,具体情况…

onCreate与onStart区别,onStart与onResume区别

http://www.cnblogs.com/kofi1122/archive/2011/04/10/2011772.html Activity生命周期之我见 关于Activity生命周期的文章很多,而且大部分也说得很详细,所以作为关于这方面的内容我本来不想多说,但是大家可能跟我之前一样,在看这方…

Flutter BaseWidget 实现onResume、onPause()

熟读唐诗三百首,不会作诗也会吟。——孙洙 最近用Flutter开发的项目算是完成了开发到上线第一阶段了。任何一个项目开始了,若想追求的是更好,那么就需要下功夫对项目用户体验和代码效率深入的研究了。作为用户和产品经理、老板、UI、不懂技术…

Activity生命周期中onStart()和onResume()的区别

Activity生命周期中onStart()和onResume()的区别 在讲onStart()和onResume()的区别之前,必须清楚Activity的四种状态: 1.Running状态:一个新的Activity的启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它…

android Activity的onPause()与onResume()

官方文档地址:http://www.android-doc.com/training/basics/activity-lifecycle/pausing.html#Resume Pause和Resume一个Activity 在一般的app使用中,前台的activity一般是会被视觉组件所遮住的,这就会导致activity的pause。举个例子&#x…

android中onResume、onPause等方法

程序正常启动:onCreate()->onStart()->onResume(); 正常退出:onPause()->onStop()->onDestory() 程序按back 退出: onPause()->onStop()->onDestory(),再进入:onCreate()->onStart()->onResume(); 程序按…

OnStart()方法和OnResume()方法的区别

文章目录 一、Activity的生命周期简述在讲onStart()和onResume()的区别之前,必须清楚Activity的四种状态: 二、OnStart()和OnResume()方法的区别区别: 总结 一、Activity的生命周期简述 在讲onStart()和onResume()的区别之前,必须…

简单介绍几种Java后台开发常用框架组合

01 前言 Java框架一直以来都是面试必备的知识点,而掌握Java框架,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能对当前正在开发中的系统有整体的认知,从而更好的熟悉和学习技术,这…

用IDEA进行Java后台开发(一)

想尝试着进行java后台开发,发现能找到的完整工程教程很多都是用eclipse开发的,于是照着搭了一套开发环境,也简单的写了一个测试代码,由于好几年没有使用eclipse了,快捷键实在用的费劲,遂找到了IDEA这个开发…

Java后台学习路线

2021.01.31.更新 2018.11.10更新,请看文章末尾惊喜 或者点击 https://blog.csdn.net/qq_40374604/article/details/83932163 本文摘自---https://blog.csdn.net/u014624241/article/details/52946378---感谢作者的分享 ①一段摘自知乎的文档 Java就业方向目前主…

Java后台开发一:环境搭建

很久之前就想做Java后台开发了,苦于一直没有找到合适的后台开发教程,某日发现一篇很不错的Java后台开发配置文章,记录如下: jdkeclipsesvnmavenmysqltomcat7.0sublime安装包和jar插件 配置管理工具-SVN http://download.csdn.net/…

Java后台开发知识一览

Java后台开发知识一览 1、后端 WEB服务器:Weblogic、Tomcat、WebSphere、JBoss、Jetty 核心框架:Spring Framework 分布式服务框架 Dubbo(感谢浅浅浅丿忧伤指正) 安全框架:Apache Shiro 视图框架:Spr…

Java后台开发常见官方网站汇总

Java后台开发常见官方网站汇总 写在前面开发工具篇JDKJavaSE开发文档Oracle数据库(收费)MySQL数据库(免费)RedisMongoDBJDBCDruid连接池ElasticsearchKibana——Elasticsearch的客户端RabbitMQMavenGitSpring Framework&#xff0…

【Java后台开发规范】--- 日志的输出

文章目录 前言其他类型的规范 日志输出过多日志重复打印批量打印日志中带方法讲故事日志跟踪其他基本要求 前言 做Java开发的,大多数可能都有看过阿里的Java后台开发手册,里面有关于Java后台开发规范的一些内容,基本覆盖了一些通用、普适的规…

用IDEA进行Java后台开发(二)

这篇博客接上一篇,用IDEA进行Java后台开发(一) 上一篇我们已经将工程创建完成了,下面我们将创建一个Servlet,然后本地启动tomcat后调用接口,返回helloWorld,过程如下: 1.在src目录…