2017-09-28 5 views
0

ZusammenfassungWie Kernel DTB-Datei

Ich bin derzeit Kompilieren den Linux-Kernel (Kernel, Module und DTB) mit einigen benutzerdefinierten Treiber für ein benutzerdefiniertes Bord ändern. Gelegentlich kompiliere ich den Kernel und stelle fest, dass die Kompatibilitätszeichenfolge in der DTB-Datei nicht das ist, wonach der benutzerdefinierte Treiber sucht. Momentan kann ich den DTS- oder Kernel-Treiber nur ändern, damit die Zeichenfolgen übereinstimmen, und den Kernel dann erneut kompilieren. Gibt es Möglichkeiten, wie ich die DTB-Datei nur bearbeiten kann, um die Kompatibilitätszeichenfolge zu aktualisieren?

Fehlgeschlagene Versuche

ich konnte die DTB-Datei wieder zu einer DTS-Datei mit dem Befehl dekompilieren:

dtc -I dtb -o <filename>.dts -<filename>.dtb 

Allerdings, wenn ich die Datei DTS ändern und neu kompilieren mit dem Befehl:

dtc -I dts -o <filename>.dtb -<filename>.dts 

Der Kernel wird die neu kompiliert DTB-Datei nicht geladen

+1

Können Sie Fehler anzeigen oder Kernel-Logs machen. ? –

+0

Sie sollten -O-Flag zum Kompilieren verwenden, -I soll den Gerätebaum in Text aus dem Gerätebaum-Blob erhalten. – LethalProgrammer

Antwort

0

Warum generieren Sie kein neues dtb?

DTB (Device Tree Blob/Binär), ist eine Hardwaredatenbank, die die Hardwarekomponenten der Platine darstellt.

U-Boot übergeben Sie die Board Information Struct zum Kernel, der von der Header-Datei in U-Boot abgeleitet ist.

DTB wird von dem speziellen Compiler kompiliert, der die Binärdatei in der richtigen Form für U-Boot und Linux erstellt, um zu verstehen.


DTC (Device-Baum Compiler) übersetzt es Gerätebaum-Datei in den maschinenlesbaren binären, die U-Boot und Linux-Kernel verstehen.

Der einfache Weg zur Verwendung von DTC.

$ dtc -O dtb -o arm_board.dtb -b 0 arm_board.dts 

, um den Gerätebaum in Text vom dtb zu erhalten.

dtc -I dtb -O dts arm_board.dtb 

board.dts ist binär erstellt mit dem obigen Befehl. -O gibt das Ausgabeformat an. -o Flag ist Ausgabedatei. -b 0 gibt die physische Boot-CPU an.

Dann tun

$ make ARCH=arm arm_board.dtb 

Ein weiterer Ansatz könnte nur make dtbs dies nennt dtc verwenden werden. listet welche DTBs sollten generiert um Build-Zeit Dies ist eine andere Möglichkeit, es zu kompilieren. in diesem Ort des Baumes Kernel setzen, dass /arch/arm/boot/dts

Haben Sie einen Blick auf diesen Device Tree for Dummies

+0

Der 'make' Anruf wird definitiv funktionieren. Leider benutze ich das 'yocto' Build-System, so dass ich ein zusätzliches Rezept machen müsste, um diesen Aufruf zu enthüllen. Ich denke, das ist die beste Option, weil das 'dtc' (sogar mit dem -O) immer noch nicht für mich funktioniert. –

Verwandte Themen