GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So ändern Sie die Kernel-DTB-Datei

Warum generieren Sie kein neues dtb?

DTB (Device Tree Blob/Binary) ist eine Hardwaredatenbank, die die Hardwarekomponenten des Boards darstellt.

U-Boot übergibt die Board-Informationsstruktur an den Kernel, die von der Header-Datei in U-Boot abgeleitet wird.

DTB wird von dem speziellen Compiler kompiliert, der die Binärdatei in der richtigen Form erzeugt, damit U-Boot und Linux sie verstehen können.

DTC (Device Tree Compiler) übersetzt die Gerätebaumdatei in die maschinenlesbare Binärdatei, die U-Boot und der Linux-Kernel verstehen können.

Die unkomplizierte Art, DTC zu verwenden.

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

um den Gerätebaum als Text vom dtb zu bekommen.

dtc -I dtb -O dts arm_board.dtb

board.dts ist eine Binärdatei, die mit dem obigen Befehl erstellt wurde. -O gibt das Ausgabeformat an. -o Flag ist die Ausgabedatei. -b 0 gibt die physische Boot-CPU an.

Dann tun

$ make ARCH=arm arm_board.dtb

Ein anderer Ansatz könnte darin bestehen, einfach make dtbs zu verwenden dies wird dtc aufrufen. arch/arm/boot/dts/Makefile listet auf, welche DTBs zur Erstellungszeit generiert werden sollen. Dies ist eine andere Möglichkeit, sie zu kompilieren. make wird das an dieser Stelle des Kernelbaums /arch/arm/boot/dts ablegen

Sehen Sie sich diesen Gerätebaum für Dummies an


Ich möchte dies nur mit 2 Jahren mehr Erfahrung zu diesem Thema aktualisieren.

Die DTS-Dateien im Linux-Repository sind eine Mischung aus DTS und C-Präprozessordirektiven (#include, #define usw.). Wenn also der ursprüngliche DTB kompiliert wird, verknüpft der Präprozessor die referenzierten Dateien, um eine reine DTS-Datei zu erstellen. dtc konvertiert die einzelne DTS-Datei in eine DTB-Datei.

Wenn Sie also eine Kernel-DTS-Datei ändern und kompilieren möchten, haben Sie zwei Möglichkeiten:

  1. Führen Sie einfach make dtbs aus die das alles automatisch erledigt
  2. Führen Sie den Präprozessor manuell aus (cpp -nostdinc -I <include dir> -undef -x assembler-with-cpp ... ) und dann die Ausgabe mit dtc kompilieren .

Linux
  1. Wie kann ich den Kernel auf 12.10 downgraden?

  2. CentOS / RHEL 7 :So ändern Sie die Kernel-Befehlszeile

  3. Wie macht man eine Datei spärlich?

  4. Wie grep \n in Datei

  5. So sortieren Sie eine Datei an Ort und Stelle

So erstellen Sie eine Datei unter Linux

So erstellen Sie eine Tar-Gz-Datei

So entpacken (öffnen) Sie die Gz-Datei

So verknüpfen Sie eine Datei unter Linux per Symlink

Wie Echo in Datei

Wie funktioniert /proc/*?