デバイスツリーオーバーレイ

デバイス ツリー (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 をロードしてカーネルを起動するには、次のようにします。

    • .dtbストレージからメモリにロードします。
    • ロードされた DT のメモリ アドレスを使用してカーネルを起動します。

次は何ですか?

このページでは、DT をロードするための一般的なブートローダー ワークフローについて詳しく説明し、一般的な DT 用語のリストを提供します。このセクションの他のページでは、ブートローダーのサポートを実装する方法、 DTO をコンパイル、検証、最適化する方法、および複数の DT を使用する方法について説明します。 DTO 構文と必要なDTO/DTBO パーティション フォーマットの詳細も取得できます。