设备树覆盖

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

设备树 (DT)是描述不可发现硬件的命名节点和属性的数据结构。内核(例如 Android 中使用的 Linux 内核)使用 DT 来支持 Android 设备使用的各种硬件配置。硬件供应商提供他们自己的设备树源 (DTS)文件,这些文件使用设备树编译器编译成设备树 Blob (DTB)文件。引导加载程序随后使用这些文件。 DTB 文件包含一个二进制格式的扁平化设备树

设备树覆盖 (DTO)使中央设备树 blob (DTB) 能够覆盖在设备树上。使用 DTO 的引导加载程序可以维护片上系统 (SoC) DT 并动态覆盖特定于设备的 DT,向树中添加节点并更改现有树中的属性。

DTBO用于覆盖的设备树 Blob

Android 9 版本中的更新

在 Android 9 中,引导加载程序在将统一设备树 blob 传递给内核之前不得修改设备树覆盖中定义的属性。

加载设备树

在引导加载程序中加载设备树涉及构建、分区和运行。

图 1.在引导加载程序中加载设备树的典型实现。
  1. 要创建并刷新设备树 blob:

    1a.使用设备树编译器 ( dtc >) 将设备树源代码 ( .dts ) 编译成设备树 blob ( .dtb )。设备树 blob 被格式化为扁平设备树。 1b.将.dtb文件闪存到引导加载程序运行时可访问的位置(详见下文)。

  2. 要分区,请确定闪存中引导加载程序运行时可访问且受信任的位置以放置.dtb 。示例位置:

    引导分区
    图 2.通过附加到image.gz并作为“ kernel ”传递给mkbootimg ,将.dtb放入启动分区。
    唯一分区
    图 3..dtb放在一个唯一的分区中(例如dtb分区)。

  3. 要加载设备树 blob 并启动内核:

    3a. .dtb从存储加载到内存中。 3b.使用加载的 DT 的内存地址启动内核。

下一步是什么?

本页详细介绍了用于加载 DT 的典型引导加载程序工作流程,并提供了常见 DT 术语的列表。本节中的其他页面描述了如何实现引导加载程序支持,如何编译、验证和优化您的 DTO ,以及如何使用多个 DT 。您还可以获得有关DTO 语法和所需的DTO/DTBO 分区格式的详细信息。