検証プラットフォーム
-
win10 64ビット
-
VMware ワークステーション プロ 16
-
ubuntu 20.04
-
dtc ツール:
linux-6.3.5
からscripts/dtc/
dtcツールをインストールする
-
実際には、dtc ソフトウェア パッケージをインストールすることもできますが、お勧めできません。最新の Linux カーネルをコンパイルしてこの dtc ツールを入手することをお勧めします。
-
Linux カーネルをコンパイルして dtc ツールを生成する方法
-
最新の Linux カーネルをダウンロードし、ubuntu 20.04 に解凍して、qemu などのボード defconfig を見つけます。
arch/arm/configs/vexpress_defconfig
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- vexpress_defconfig
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
-
最新の Linux カーネルでコンパイルされた dtc ツールを使用すると、この方法でデバイス ツリー ファイルをコンパイルまたは逆コンパイルすることがより確実になります。もちろん、Linux デバイス ツリーを検討するには、事前に Linux コンパイル環境を準備するのが最善です。
-
ここでは Linux カーネルを再コンパイルする必要はなく、デバイス ツリーを個別にコンパイルするだけです。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
dtbを逆コンパイルする
-
つまり、dtb デバイス ツリー バイナリ ファイルを dts デバイス ツリー ソース ファイルに逆コンパイルします。ここでは dtc ツールを使用します。
-
逆コンパイルするコマンドは次のとおりです。
./dtc -I dtb -O dts vexpress-v2p-ca9.dtb -o vexpress-v2p-ca9_0603.dts
-
パラメータに注意してください。
-
./dtc
dtc の実行パスを示します。実際の状況に応じて指定でき、./dtc
dtc ツールが現在のパスの下にあることを示します。 -
-I dtb -O dts
ここで、I
のInput
省略形、つまり入力形式: はdtb
、出力形式O
を示していることに注意してください。Output
dts
-
vexpress-v2p-ca9.dtb
: デバイスツリーのバイナリdtbファイル、つまり逆コンパイルされたdtbファイル -
-o vexpress-v2p-ca9_0603.dts
、ここ-o
では小文字でoutput
、出力ファイルです。次の名前は自分で定義できます。xxx.dts
-
上記の操作により、dtb ファイルをデバイス ツリー ソース ファイル dts に逆コンパイルできます。
生成された dts は元の dts と比較されます
-
Linux デバイス ツリー ファイルは、dts ソース ファイル、複数の dtsi および .h ヘッダー ファイルで構成されている場合があるため、逆コンパイル後に生成される元の dts ファイルは 1 つだけですが、内容と比較して表示するには、複数の dtsi ファイルを結合する必要がある場合があります。
-
以下のように、Linux の既存の dts を使用して dtb を生成し、dtb を dts に逆コンパイルし、ファイルの内容を比較して、いくつかの相違点を見つけます。
-
結局、生成されるdtsは複数のファイルを組み合わせたものですが、内容は基本的に同じなので、例えば逆コンパイルしたdtsをdtbにコンパイルして、機能が正常かどうかを検証することができます。
dtb にコンパイルされた dts
- 上記のように、dts ファイルが 1 つしかない場合、それを dtb にコンパイルする方法は非常に簡単です。つまり、dtc ツールを使用します。コマンドは次のとおりです。
$ ./dtc -I dts -O dtb vexpress-v2p-ca9_0603.dts -o vexpress-v2p-ca9_0603.dtb
-
1 つの dts、複数の dtsi および .h ファイルを含む完全なデバイス ツリーの場合は、gcc 前処理を使用してから、dtc を使用してそれを dtb にコンパイルする必要があります。ここでは、シェル スクリプトまたは Makefile を使用してそれを実現できます。関連記事:
まとめ
-
この記事では、Linux によって生成されたデバイス ツリー ファイル dtb をデバイス ツリー ソース ファイル dts ファイルに逆コンパイルする方法に注目します。
-
デバイス ツリー コンパイル ツール dtc の入手方法に注意してください。最新の Linux カーネル コンパイルを通じて入手するのが最善です。