新しい dtb を生成しませんか?
DTB (デバイス ツリー ブロブ/バイナリ) は、ボードのハードウェア コンポーネントを表すハードウェア データベースです。
U-Boot は、U-Boot のヘッダー ファイルから派生したボード情報構造体をカーネルに渡します。
DTB は、U-Boot と Linux が理解できる適切な形式でバイナリを生成する特別なコンパイラによってコンパイルされます。
DTC (デバイス ツリー コンパイラ) は、デバイス ツリー ファイルを、U-Boot と Linux カーネルが理解できる機械可読バイナリに変換します。
DTC を使用する簡単な方法。
$ dtc -O dtb -o arm_board.dtb -b 0 arm_board.dts
dtb からデバイス ツリーをテキストで取得します。
dtc -I dtb -O dts arm_board.dtb
board.dts は、上記のコマンドで作成されたバイナリです。 -O
出力形式を指定します。 -o
flag は出力ファイルです。 -b 0
物理ブート CPU を指定します。
$ make ARCH=arm arm_board.dtb
別のアプローチは、 make dtbs
を使用することです これは dtc を呼び出します。 arch/arm/boot/dts/Makefile
ビルド時に生成する必要がある DTB をリストします。これは、コンパイルする別の方法です。 make はそれをカーネルツリー /arch/arm/boot/dts
のこの場所に配置します
ダミー用のこのデバイス ツリーをご覧ください
この件に関する 2 年間の経験でこれを更新したいだけです。
Linux レポジトリの DTS ファイルは、DTS のとが混在しています。 C プリプロセッサ ディレクティブ (#include、#define など)。したがって、元の DTB がコンパイルされると、プリプロセッサは参照ファイルにリンクして純粋な DTS ファイルを作成します。 dtc
単一の DTS ファイルを DTB ファイルに変換します。
したがって、カーネル DTS ファイルを変更してコンパイルする場合は、次の 2 つのオプションがあります。
<オール>make dtbs
を実行するだけです このすべてを自動的に処理しますcpp -nostdinc -I <include dir> -undef -x assembler-with-cpp ...
)、出力を dtc
でコンパイルします .