web-dev-qa-db-ja.com

u-Boot dtbファイルとは何ですか、またどのように使用しますか(BeagleBoard xM)?

BeagleBoard xM(Rev. C)用のカスタムLinuxを構築しようとしています。私は多くのC/C++を行いますが、Linuxをゼロからビルドしてインストールする初心者です。

私はYocto Projectビルドアプライアンス( https://www.yoctoproject.org/ )を使用しましたが、これは有望に思われました。u-Bootブートローダー、Linuxカーネル、およびルートファイルシステム用のファイルをビルドしました。

このページ は、Yoctoで生成されたファイルを使用してマイクロSDカードを設定する手順を示します。ただし、イメージファイルには、「。dtb」ファイルが含まれていますが、セットアップ手順には記載されていません。

このファイルはボードハードウェアと関係がありますか?さまざまなサイトでdtdファイルのロードについて言及されています(おそらくuEnv.txtにありますか?)が、詳細な情報は見つかりませんでした。

上記の手順を使用して、MLOとu-boot.imgでブートパーティションをセットアップし、uEnv.txtで少し混乱させました。また、ルートファイルシステムで2番目のパーティションを設定しました。

(シリアルポートコンソール経由で)起動してログインできましたが、ほとんどのボードハードウェアのように見えました。ビデオとイーサネットを含むすべてのUSBデバイス-動作していませんでした。これは、.dtbファイルを使用していないためでしょうか?

誰かがdtbとそれをビーグルボードで使用する方法を説明できますか?ありがとう!

13
Jeremy

何を検索すればよいかがわかった後、自分の質問に答えます。 「dtb」ファイルには、デバイスツリーブロブ(またはバイナリ)が含まれています(適切な説明 ここ )。これは、ボードに関するハードウェア情報をLinuxカーネルに渡すための新しい方法です。

メモリにロードして、u-Bootでカーネルに渡すことができます。

使用したu-Bootコマンドは次のとおりです。

setenv bootargs 'console=tty0 console=ttyO2,115200n8 root=/dev/mmcblk0p2 rootwait rootfstype=ext4 rw'
fatload mmc 0:1 0x80300000 zImage
fatload mmc 0:1 0x815f0000 beagle-xm.dtb
bootz 0x80300000 - 0x815f0000

zImageはカーネル、beagle-xm.dtbはデバイスツリーblobです。私はuEnv.txtに "uenvcmd = ..."変数を設定して(上記を含む)ブートプロセスを自動化しましたが、少し醜く、おそらくもっと良い方法があります。

これが起動し、デバイスツリーが正常に読み込まれたことを通知します。ただし、USBデバイスやビデオはまだありません(私の知る限り)。しかし、それは別の問題かもしれないと思います。

13
Jeremy

ビーグルボーンブラックでUbuntu 14.04を使用しているので、セットアップが少し異なる場合がありますが、カスタムdtbをロードする方法は次のとおりです。

UEnv.txtで、次の行を追加します:dtb=name-of-desired.dtb

検索される場所は指定されたとおりである必要があります here 。私にとってこれは/boot/dtbs/linux-kernel/ここで、linux-kernelはロードされたバージョンの名前です。

2
Damian Manda

2 dtbがあることに注意してください。 u-boot dtbおよびカーネルdtb。彼らは2つの異なるものです。 U-Bootボードdts/dtbは常に使用されているわけではなく、必須ではありません。u-bootでは、u-bootに埋め込んだり、u-bootに連結した「u-boot」dtbを使用したりできます。

0