Kann kein LDD für ein Devkit8000 erstellen

Kann kein LDD für ein Devkit8000 erstellen

Ich versuche, einen Linux-Gerätetreiber für ein Devkit 8000 zu erstellen. Ich erhalte die folgende Fehlermeldung:

Fehlermeldung

Wenn ich versuche, den Anweisungen zu folgen, werde ich mit einer Reihe von Ja/Nein-Fragen konfrontiert, die ich nicht wirklich verstehe. Am Ende kann ich zwischen 25 verschiedenen Prozessoren wählen(?):

Prozessorauswahl

Hier ist mein Makefile:

ifeq ($(KERNELRELEASE),)

KERNELDIR = ~/sources/linux-3.2.6
PWD := $(shell pwd)
modules:
$(MAKE) ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- -C $(KERNELDIR) M=$(PWD) modules

.PHONY: modules clean

else
# called from kernel build system: just declare what our modules are
obj-m := LED_timer.o
endif

Ich glaube nicht, dass mein Code selbst schon relevant ist, außerdemwissendass mein Quellcode voller Fehler ist, das willst du nicht sehen, haha.

Antwort1

Sie haben nicht gesagt, woher Sie die Quelle haben, die Sie verwenden, aber offensichtlich ist .configdarin ein ungültiger Wert enthalten. Dies wird verwendet, um verschiedene Optionen festzulegen, beispielsweise den Prozessortyp. Es gibt buchstäblich Hunderte dieser Optionen mit komplexen Abhängigkeiten voneinander (z. B. wirkt sich der von Ihnen gewählte Prozessor auf Ihre anderen Auswahlmöglichkeiten aus).

Die Vanilla-Quelle enthält kein .config; Sie müssen entweder eins bereitstellen oder erstellen. make oldconfigwird verwendet, wenn .configaus einer früheren Version stammt und aktualisiert werden muss. Manchmal kann dieser Prozess nicht vollständig automatisiert werden und Sie führen am Ende im Grunde aus make config, das eine CLI-Schnittstelle verwendet; das kann auch passieren, wenn Sie es make oldconfigohne Konfiguration versuchen.

Sie sollten sich die Grafik genauer ansehen, make menuconfigum einen besseren Überblick darüber zu bekommen, worum es geht.

Es ist jedoch unmöglich, bei Null anzufangen und zu versuchen, eine für Sie funktionierende Konfiguration zu erhalten, wenn Sie nicht wissen, was Sie tun. Idealerweise beginnen Sie mit der Konfiguration, die zum Erstellen Ihres laufenden Kernels verwendet wurde. Dies gilt insbesondere, wenn Sie nur ein Modul erstellen. Sie müssen zwar nicht den eigentlichen Kernel erstellen, aber um das Modul zu kompilieren, müssen Sie wissen, wie der Kernel kompiliert wurde, für den es verwendet werden soll.

Hoffentlich finden Sie das auf /proc/config.gzdem Zielsystem. Dies ist keine Datei auf der Festplatte, das System muss laufen, um sie abzurufen. Es ist gzippt, also

gunzip config.gz
mv config .config

Sollte funktionieren. Kopieren Sie das in Ihren Quellbaum und führen Sie es aus, make menuconfigum Anweisungen für das Modul hinzuzufügen, das Sie erstellen möchten.

Wenn es das nicht gibt, müssen Sie die verwendete Konfiguration ermitteln. Beachten Sie auch, dass Sie beim Erstellen eines Moduls genau dieselbe Kernelversion verwenden müssen.

Hier istein allgemeiner Überblickdes Kompilierungsprozesses, der ebenfalls hilfreich sein könnte, lesen Sie zuerst Nr. 2 und 3.

Antwort2

Zuerst müssen wir die alte Konfiguration löschen, etwa make mrproper.

Führen Sie danach erneut aus make menuconfig. Wenn Sie unerwünschte Elemente definitiv ausgewählt haben, .config werden diese nicht erstellt.

verwandte Informationen