it-swarm.com.de

Was ist eine U-Boot-DTB-Datei und wie verwende ich sie (BeagleBoard xM)?

Ich versuche, ein benutzerdefiniertes Linux für ein BeagleBoard xM (Rev. C) zu erstellen. Ich mache viel C/C++, aber ich bin ein Anfänger darin, Linux von Grund auf neu zu erstellen und zu installieren.

Ich habe die Yocto Project Build-Appliance ( https://www.yoctoproject.org/ ) verwendet, die vielversprechend schien - sie hat Dateien für den U-Boot-Start erstellt Loader, Linux-Kernel und Root-Dateisystem.

Auf dieser Seite finden Sie Anweisungen zum Einrichten der Micro-SD-Karte mit den von Yocto generierten Dateien. Die Bilddateien enthalten jedoch eine ".dtb" -Datei, die in den Einrichtungsanweisungen nicht erwähnt wird.

Hat diese Datei etwas mit der Board-Hardware zu tun? Verschiedene Sites erwähnen das Laden von dtd-Dateien (vielleicht in uEnv.txt?), Aber ich habe keine detaillierten Informationen gefunden.

Ich habe die obigen Anweisungen verwendet, um die Boot-Partition mit MLO und u-boot.img einzurichten, und ein bisschen mit der Datei uEnv.txt herumgespielt. Ich habe auch eine zweite Partition mit dem Root-Dateisystem eingerichtet.

Ich konnte booten und mich anmelden (über die serielle Anschlusskonsole), aber es sah so aus, als wäre die meiste Board-Hardware vorhanden - z. Video und alle USB-Geräte einschließlich Ethernet - funktionierten nicht. Könnte dies daran liegen, dass ich die .dtb-Datei nicht verwendet habe?

Kann jemand das dtb erklären und wie man es auf einem Beagle-Brett benutzt? Vielen Dank!

12
Jeremy

Beantworte meine eigene Frage, nachdem ich herausgefunden habe, wonach ich suchen soll. Eine "dtb" -Datei enthält ein Device Tree Blob (oder Binary) (nette Beschreibung hier ). Dies ist die neue Möglichkeit, Hardware-Informationen über das Board an den Linux-Kernel weiterzuleiten.

Es kann in den Speicher geladen und von u-Boot an den Kernel übergeben werden.

Hier sind die U-Boot-Befehle, die ich verwendet habe:

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 ist der Kernel und beagle-xm.dtb ist der Gerätebaum-Blob. Ich habe den Startvorgang automatisiert, indem ich eine "uenvcmd = ..." - Variable in der Datei "uEnv.txt" eingerichtet habe (mit den oben genannten), aber es ist ein bisschen hässlich und es gibt wahrscheinlich bessere Möglichkeiten.

Beachten Sie, dass dies startet und anzeigt, dass der Gerätebaum geladen wurde. OK. Ich habe jedoch noch keine USB-Geräte oder Videos (soweit ich das beurteilen kann). Ich vermute jedoch, dass dies ein anderes Problem sein könnte.

12
Jeremy

Ich verwende Ubuntu 14.04 auf dem Beaglebone Black, daher ist mein Setup möglicherweise etwas anders, aber so habe ich eine benutzerdefinierte DTB geladen:

Fügen Sie in uEnv.txt eine Zeile mit folgendem Inhalt hinzu: dtb=name-of-desired.dtb

Die gesuchten Orte sollten hier wie angegeben sein . Für mich war das /boot/dtbs/linux-kernel/, wobei linux-kernel der Name der geladenen Version ist.

2
Damian Manda

Beachten Sie, dass es 2 dtb gibt. Der U-Boot-DTB und der Kernel-DTB. Das sind 2 verschiedene Dinge. U-Boot-Board dts/dtb wird nicht immer verwendet, ist nicht obligatorisch. Übrigens können Sie das "U-Boot" -Dtb verwenden, um es in U-Boot einzubetten oder um es mit U-Boot zu verknüpfen.

0