Analysieren Sie die Kompilierung und das Brennen des Linux-Kernels und des Gerätebaums

Analysieren Sie die Kompilierung und das Brennen des Linux-Kernels und des Gerätebaums

1. Materialien vorbereiten

Die entsprechenden Materialien können Sie je nach Bedarf vorbereiten:

Entwicklungsumgebung: VMware

Betriebssystem: Ubuntu

Entwicklungsversion: PaiTu i2S-6UB

2. Laden Sie die Linux-Kerneldatei herunter

Freunde, die zuvor UBoot-Dateien heruntergeladen haben, sollten wissen, dass in den Informationen zu jeder Entwicklungsversion eine entsprechende Datei vorhanden ist. Wenn Sie diese nicht haben, können Sie in dem Geschäft nachfragen, in dem Sie die Entwicklungsversion gekauft haben.

Kopieren Sie die Datei nach dem Herunterladen auf das Linux-System und entpacken Sie sie. Das Verzeichnis nach der Dekomprimierung sieht wie in der folgenden Abbildung aus:

Hinweis: Beim Kompilieren müssen Sie im aktuellen Pfad kompilieren.

3. Zusammenstellung

1. Projekt aufräumen

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean

2. Legen Sie die Standardkonfigurationsdatei fest

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- i2som_imx6_defconfig

Nach Abschluss der Kompilierung wird „.config“ generiert, wie unten gezeigt:

Hinweis: Die Standardkonfigurationsdatei von PaiTu ist „i2som_imx6_defconfig“. Die Standardkonfigurationsdateien verschiedener Hersteller sind unterschiedlich. Sie können sie anhand der entsprechenden Dokumente überprüfen. Wie auf der offiziellen Website von Paitu beschrieben, wie in der Abbildung unten dargestellt

3. Kompilieren und generieren Sie die Kernrl-Datei

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage

4. Kompilieren und generieren Sie die .dtb-Datei

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

Hinweis: An diesem Punkt ist die Kompilierung des Kernels und des Gerätebaums abgeschlossen. Wenn Sie genau hinschauen, werden Sie feststellen, warum mein Befehl länger ist. „ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-“ wird in jeder Anweisung verwendet, um den Compiler als Cross-Compiler einzustellen. Um die Kompilierungsanweisungen präziser zu gestalten, können Sie die Konfiguration von ARCH und CROSS_COMPILE in die Makefile-Datei einfügen. In Zukunft können Sie beim Kompilieren den Teil „ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-“ im Befehl weglassen, wie in der folgenden Abbildung gezeigt:

5. Dateipfad generieren

zImage: im Verzeichnis /arch/arm/boot/

dtb: im Verzeichnis /arch/arm/boot/dts

4. Brennen Sie zImage- und .dtb-Dateien über TFTp

1. Legen Sie die zImage- und .dtb-Dateien auf den TFTP-Server

2. Rufen Sie die Befehlszeile der Entwicklungsversion von UBoot auf und konfigurieren Sie die TFTP-Dienstadresse

setenv serverip 192.168.1.99

speichern

3. Laden Sie die zImage-Datei herunter

tftp 80800000 zImage

4. Laden Sie die .dtb-Datei herunter

tftp 83000000 i2c6ulxb-i2s6ull-emmc.dtb

5. Starten Sie das Laden von zImage- und dtb-Dateien

bootz 80800000 - 83000000

6. Erfolg überprüfen

Nach Abschluss des Brennvorgangs wird beim Start des Kernels die Kompilierungszeit ausgedruckt. Wenn die Zeit korrekt ist, bedeutet dies, dass der Vorgang erfolgreich war. Die Startinformationen sind in der folgenden Abbildung dargestellt:

5. Häufig gestellte Fragen

1. Die Fehler, die beim Kompilieren und Generieren von zImage auftreten können, sind in der folgenden Abbildung dargestellt:

Dieser Fehler tritt hauptsächlich auf, weil in der Entwicklungsumgebung das Tool „lzop“ nicht installiert ist. Sie müssen es nur installieren und neu kompilieren.

sudo apt-get installiere lzop

2. Der Startvorgang bleibt bei „Kernel wird gestartet …“ hängen, wie unten gezeigt:

Ich weiß nicht, ob bei meiner Entwicklung ein Problem vorliegt oder sonst etwas, aber solange die Kompilierung korrekt ist, treten im Allgemeinen keine Konfigurationsfehler auf, wenn Sie andere Dateien ändern. Wenn Sie also auf diese Situation stoßen, versuchen Sie es einfach noch ein paar Mal erneut.

3. Das System kann wie im Bild gezeigt gestartet werden. Die Entwicklungsversion von PaiTu kann auch durch Ersetzen von Dateien aktualisiert werden. Nachdem Sie die Entwicklungsversion des Systems eingegeben haben, befolgen Sie die folgenden Schritte.

mkdir /mnt/linux/

umount /mnt/linux/

mount /dev/mmcblk1p1 /mnt/linux/

cp i2c6ulxb-i2s6ull-emmc.dtb /mnt/linux/zImage-i2c6ulxb-i2s6ull-emmc.dtb; synchronisieren

umount /mnt/linux

Neustart

Das offizielle Tutorial wird unten angezeigt:

4. Nach dem Start werden Sie feststellen, dass es nicht normal gestartet werden kann. Dies liegt daran, dass keine Root-Datei vorhanden ist.

Oben finden Sie den detaillierten Inhalt der Analyse der Kompilierung und des Brennens des Linux-Kernels und des Gerätebaums. Weitere Informationen zur Kompilierung und zum Brennen des Linux-Kernels und des Gerätebaums finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Einführung in die Containerfunktion of() in der Linux-Kernel-Programmierung
  • Analyse der Initialisierung des Quellcodes des Linux-Kernel-Schedulers
  • Analyse der Verwendung des statischen Speichers des Hongmeng Light-Kernels
  • Detaillierte Erklärung der Kernel-Thread-Theorie und Beispiele in Java
  • Ein Artikel zeigt Ihnen, wie Sie Kernel in der Sprache C schreiben

<<:  Wie gestaltet man eine Webseite? Wie erstelle ich eine Webseite?

>>:  So verwenden Sie JSONP in Vue

Artikel empfehlen

Verwenden Sie CSS, um ein Datei-Upload-Muster zu zeichnen

Wenn Sie es wären, wie würden Sie es erreichen, w...

So positionieren Sie die Kopfzeile mithilfe des CSS-Sticky-Layouts oben

Anwendungsszenarien: Eine der neuen Anforderungen...

Detaillierte Erklärung zur Verwendung von this.$set in Vue

Inhaltsverzeichnis Verwendung von this.$set in Vu...

Ubuntu 18.04 Touchpad per Befehl deaktivieren/aktivieren

Unter Ubuntu kommt es häufig vor, dass sich das T...

URL-Darstellung in HTML-Webseiten

In HTML werden gängige URLs auf verschiedene Arten...

Javascript verwendet das Integritätsattribut zur Sicherheitsüberprüfung

Inhaltsverzeichnis 1. Dateien mit Skript-Tags imp...

Detaillierte Erklärung der HTML-Programmier-Tags und der Dokumentstruktur

Der Zweck der Verwendung von HTML zum Markieren v...

Detaillierte Erklärung der grundlegenden Syntax und Datentypen von JavaScript

Inhaltsverzeichnis JavaScript importieren 1. Inte...

So verwenden Sie vue3 zum Erstellen einer Materialbibliothek

Inhaltsverzeichnis Warum brauchen wir eine Materi...

Docker-Bindung mit fester IP/Hostübergreifender Container-Gegenzugriffsvorgang

Vorwort Bisher waren statische IPs, die über Pipe...