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


13

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

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

このページでは、Yoctoで生成されたファイルを使用してmicro SDカードをセットアップする方法について説明します。ただし、イメージファイルには、セットアップ手順に記載されていない「.dtb」ファイルが含まれています。

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

上記の手順を使用してMLOとu-boot.imgでブートパーティションを設定し、uEnv.txtを少し台無しにしました。また、ルートファイルシステムで2番目のパーティションを設定します。

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

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


ファイル名を読み違えたことが判明しました-元々は ".dtd"ファイルだと思っていましたが、実際には ".dtb"であるため、その情報を見つけることができませんでした。質問は更新されました。
ジェレミー14

:より良い概念を理解するためのQEMU仮想デバイスとの最小限の例stackoverflow.com/questions/17488320/...
チロSantilli新疆改造中心法轮功六四事件

回答:


13

何を検索するかを考え出した後、自分の質問に答えます。「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デバイスまたはビデオはまだありません(わかる限り)。しかし、それは別の問題かもしれないと思う。


3
これは、ボードに関するハードウェア情報をLinuxカーネルに渡す新しい(新しい)方法です。ハードウェア情報をカーネルに渡す以前の方法はありませんでした。代わりに、カーネルはすべての情報を静的に含める必要があるため、それらのマッピングをすべてリストするボード固有のCファイルが必要になります。これは、カーネルの観点から見るとメンテナンスの悪夢でした。
BatchyX 14

ありがとう!dtbファイルをロードする方法を考え出したところ、Linuxが起動し、ドライバーのロードに関するさまざまなメッセージを発行するようになりましたが、USBデバイス(イーサネットモジュールを含む)が表示されません。新しい質問:linkをご覧ください。Linuxで手動で設定する必要があるものがありますか?
ジェレミー

しかし、dtbファイルに使用するアドレスは何ですか?たとえば、zImageがアドレス0x43000000に移動する場合(上記の例の代わりに0x80300000)、dtbはどこに行くべきですか?
アンドレヴァンシューブロエック16

2

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

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

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


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.