複数の DT の使用

多くの SoC ベンダーと ODM は、デバイスでの複数のデバイスツリー(DT)の使用をサポートしています。そのため、1 つのイメージで複数の SKU または構成に対応できます。このようなケースでは、ブートローダーはハードウェアを識別し、実行時に対応する DT を読み込みます。

図 1. ブートローダー内の複数のデバイスツリー オーバーレイ。

注: 複数の DT を使用することは必須ではありません。

セットアップ

DTO モデルに複数の DT のサポートを追加するには、メイン DT のリストとオーバーレイ DT のリストをセットアップします。

図 2. 複数の DT のランタイム DTO 実装。

ブートローダーでは以下のことができる必要があります。

  • SoC ID を読み、対応するメイン DT を選択する。
  • ボード ID を読み、それに応じてオーバーレイ DT のセットを選択する。

実行時に使用するメイン DT は 1 つだけ選択する必要があります。オーバーレイ DT は複数選択できますが、選択したメイン DT と互換性がある必要があります。複数のオーバーレイを使用することで、DTBO パーティション内にボードごとに 1 つずつオーバーレイを格納するのではなく、ボード ID に基づいて(または、周辺機器をプローブすることにより)必要なオーバーレイのサブセットをブートローダーが決定できるようになります。たとえば、ボード A にはオーバーレイ 1、3、5 によって追加されたデバイスが必要で、ボード B にはオーバーレイ 1、4、5 によって追加されたデバイスが必要な場合があります。

パーティション

パーティショニングするには、DTB と DTBO を格納する、ブートローダーが実行時にアクセスできるフラッシュ メモリ内の信頼できる場所を決定します(ブートローダーは、照合プロセス中にこれらのファイルを検出できる必要があります)。DTB と DTBO は、同じパーティションに存在できません。DTB / DTBO が dtb / dtbo パーティションにある場合は、DTB および DTBO パーティション形式で詳細が説明されているテーブル構造とヘッダー形式を使用します。

ブートローダーで実行する

以下の手順で実行します。

  1. SoC を特定し、ストレージから対応する .dtb をメモリに読み込みます。
  2. ボードを特定し、ストレージから対応する .dtbo をメモリに読み込みます。
  3. .dtb.dtbo でオーバーレイして、DT を統合します。
  4. 統合した DT のメモリアドレスを指定して、カーネルを起動します。