Lösung für den Fehler von 6ull beim Laden des Linux-Treibermoduls

Lösung für den Fehler von 6ull beim Laden des Linux-Treibermoduls

0x01 Das Treibermodul konnte nicht geladen werden

Die Beschreibung des Fehlers beim Laden des Treibers lautet wie folgt. Die Fehlermeldung gibt an, dass die auf der Karte ausgeführte Linux-Kernelversion 4.1.15-g49efdaa und die Architektur ARMv7 ist; während die zum Kompilieren des Treibers verwendete Kernel-Quellcodeversion 4.1.15 und die Architektur ARMv6 ist. Dies weist darauf hin, dass der zum Kompilieren des Treibers verwendete Kernel-Versionsname und die Architektur nicht mit denen auf der Platine übereinstimmen.

root@ALIENTEK-IMX6U:~/get# insmod led.ko
[1634.442887] führte: Version Magic „4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8“ sollte „4.1.15-g49efdaa SMP preempt mod_unload modversions ARMv7 p2v8“ sein.
insmod: FEHLER: Modul konnte nicht eingefügt werden led.ko: Ungültiges Modulformat

0x02 Lösung

Es gibt zwei Möglichkeiten, dieses Problem zu lösen:
(1) Kompilieren Sie den Kernel und den Gerätebaum neu und brennen Sie diese auf die Platine.
(2) Ändern Sie die Kernelkonfigurationsinformationen im Host, um sie mit denen auf der Platine in Einklang zu bringen.

Das erneute Brennen des Kernels ist mühsam, deshalb verwenden wir hier Methode 2 .

1. Geben Sie die Befehle uname -r und uname -p im Board-Terminal ein, um die Versions- und Architekturinformationen des auf dem Board laufenden Kernels anzuzeigen.

root@ALIENTEK-IMX6U:~/get# uname -r
4.1.15-g49efdaa
root@ALIENTEK-IMX6U:~/get# uname -p
armv7l

Die auf der Platine laufende Linux-Kernelversion ist 4.1.15-g49efdaa und die Prozessorarchitektur ist ARMv7

2. Geben Sie das Stammverzeichnis des vom Treibermodul verwendeten Linux-Kernels im Host ein und führen Sie make menuconfig aus, um die grafische Konfigurationsoberfläche des Linux-Kernels zu starten (wenn Sie menuconfig nicht verwenden können, können Sie Baidu verwenden, um die entsprechenden abhängigen Bibliotheken zu installieren).

Geben Sie System Type ein, wie in der folgenden Abbildung gezeigt:

Bildbeschreibung hier einfügen

Geben Sie dann die Option Multiple platform selection ein:

Bildbeschreibung hier einfügen

Entfernen Sie dann in der folgenden Benutzeroberfläche das * vor der ersten ARMv6 based platforms(ARM11) (drücken Sie nach der Auswahl die Leertaste, um abzubrechen).

Bildbeschreibung hier einfügen

Nach dem Abbrechen, Speichern und Beenden wird die vom Kernel unterstützte Architektur auf ARMv7 geändert.
Geben Sie nach der Konfiguration von menuconfig keine anderen Kernelkonfigurationsbefehle ein, da sonst die vorherige Konfiguration gelöscht wird.

3. Öffnen Sie das Makefile im Kernel-Stammverzeichnis und fügen Sie nach der Variable EXTRAVERSION die zweite Hälfte der Versionsnummer des Linux-Kernels hinzu, der auf Ihrem Board läuft. Die zweite Hälfte meines Kernels lautet beispielsweise -g49efdaa .

Bildbeschreibung hier einfügen

Speichern Sie die Änderungen nach Abschluss und führen Sie make -j12 im Stammverzeichnis des Linux-Kernels aus, um den Kernel neu zu kompilieren.
Kompilieren Sie das Treibermodul neu, nachdem der Kernel kompiliert wurde.

Nachdem das Treibermodul kompiliert wurde, verwenden Sie NFS, um es auf die Karte herunterzuladen. Geben Sie modinfo [驅動模塊名] ein, um die Informationen zum Treibermodul anzuzeigen:

root@ALIENTEK-IMX6U:~/get# modinfo led.ko
Dateiname: /home/root/get/led.ko
Autor: zuozhongkai
Lizenz: GPL
Quelle:597E1DDC8A372707B8FD0DE
kommt darauf an:
vermagic: 4.1.15-g49efdaa SMP preempt mod_unload modversionen ARMv7 p2v8

Es ist ersichtlich, dass die Kernelversion und die Prozessorarchitektur des in vermagic Zeile angezeigten Treibermoduls mit den Kernelinformationen auf der Platine übereinstimmen und das Treibermodul erfolgreich geladen werden kann.

root@ALIENTEK-IMX6U:~/get# uname -r
4.1.15-g49efdaa
root@ALIENTEK-IMX6U:~/get# uname -p
armv7l

Zusammenfassen

Dies ist das Ende dieses Artikels über die Lösung für den Fehler beim Laden des Linux-Treibermoduls durch 6ull. Weitere verwandte Inhalte zum Fehler beim Laden des Linux-Treibermoduls finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Linux-Kernel-Gerätetreiber. Zusammenfassung der Hinweise zum Lademechanismus von Linux-Kernelmodulen.

<<:  So verwenden Sie den Flat Style zum Gestalten von Websites

>>:  Detaillierte Erläuterung der Vue-Projektverpackung

Artikel empfehlen

So installieren und konfigurieren Sie MySQL 5.7.19 unter CentOS 6.5

Die detaillierten Schritte zur Installation von m...

So überprüfen und organisieren Sie Websitedateien mit Dreamweaver8

Was ist der Zweck der Erstellung einer eigenen Web...

Tiefgreifendes Verständnis des Vue-Übergangs und der Animation

1. Wenn Sie DOM-Elemente einfügen, aktualisieren ...

So passen Sie Docker-Images mit Dockerfile an

Anpassen von Bildern mit Dockerfile Unter Bildanp...

Detaillierte Erläuterung der MySQL-Cursor-Konzepte und -Verwendung

Dieser Artikel erläutert anhand von Beispielen da...

Analysieren von AB-Leistungstestergebnissen unter Apache

Ich habe immer Loadrunner für Leistungstests verw...

Beispielcode zum automatischen Umbrechen des Pre-Tags

Das Pre-Element definiert vorformatierten Text. In...

Detaillierte Erklärung zum CSS-Randkollaps

Vorherige Das ist eine klassische alte Frage. Da ...

So steuern Sie die Startreihenfolge von Docker Compose-Diensten

Zusammenfassung Docker-Compose kann problemlos me...

Detaillierte Erklärung zum dynamischen Festlegen des Browsertitels in Vue

Inhaltsverzeichnis Unsinn Text Der erste router/i...

CSS+HTML zur Realisierung der Funktion der oberen Navigationsleiste

Implementierungseffektdiagramm für die Navigation...

So erstellen Sie ein neues Image basierend auf einem vorhandenen Image in Docker

Das Erstellen neuer Images aus vorhandenen Images...

Implementierungsmethode des Nginx+Tomcat-Lastausgleichsclusters

Die experimentelle Umgebung ist wie folgt Hier mü...

So verwenden Sie Vue+ElementUI Tree

Die Verwendung von Vue + ElementUI Tree dient zu ...

CSS3 verwendet scale() und rotate() zum Zoomen und Drehen

1. scale()-Methode Zoom steht für „Verkleinern“ u...