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 erschien - sie erstellte Dateien für den U-Boot-Bootloader, den Linux-Kernel und das Root-Dateisystem.
Diese Seite enthält 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 ob die meiste Board-Hardware - z. B. Video und alle USB-Geräte einschließlich Ethernet - nicht funktionierten. 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!
quelle
Antworten:
Beantwortung meiner eigenen Frage, nachdem ich herausgefunden hatte, wonach ich suchen sollte. 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:
zBild 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 besagt, 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.
quelle
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 hinzu mit:
dtb=name-of-desired.dtb
Die Standorte gesucht sollte angegeben werden als hier . Für mich war
/boot/dtbs/linux-kernel/
das der Name der geladenen Version des Linux-Kernels.quelle
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 mit U-Boot zu verknüpfen.
quelle