使用多个 DT

很多 SoC 供应商和原始设计制造商 (ODM) 都支持在一台设备上使用多个 DT,从而使一个映像能够为多个 SKU/配置提供支持。在这种情况下,引导加载程序会在运行时识别硬件,并加载相应的 DT:

图 1 引导加载程序中的多个设备树叠加层。

注意:使用多个 DT 不是强制性要求。

设置

要向 DTO 模型添加对多个 DT 的支持,请设置一个主 DT 列表和另一个叠加 DT 列表。

图 2. 多个 DT 的运行时 DTO 实现。

引导加载程序应该能够:

  • 读取 SoC ID 并选择相应的主 DT,并
  • 读取板 ID 并选择相应的叠加 DT。

仅选择一个主 DT 和一个叠加 DT 以便在运行时使用,并且所选择的对必须是兼容的。

分区

要进行分区,请在闪存中确定引导加载程序在运行时可访问和可信的位置,以存储 DTB 和 DTBO(引导加载程序必须能够在匹配的进程中找到这些文件)。请记住,DTB 和 DTBO 不能存在于同一个分区中。如果您的 DTB/DTBO 位于 dtb/dtbo 分区中,请使用 DTB/DTBO 分区格式中详细列出的表结构和头文件格式。

在引导加载程序中运行

要运行,请执行以下操作:

  1. 标识 SoC 并将相应的 .dtb 从存储加载到内存中。
  2. 标识板并将相应的 .dtbo 从存储加载到内存中。
  3. .dtbo 叠加 .dtb 以形成合并的 DT。
  4. 启动内核(已给定合并 DT 的内存地址)。