Linux Kernel Modul kompilieren für De1-SOC yocto

Gast #4617894
Lesenswert?

Hallo allerseits, zwar habe ich einige verwandte Themen gefunden 
allerdings enthalten diese nicht die Detaisl die ich brauche.

Ich versuche ein Linux Kernel Modul für mein De1-Soc von Terasic zu 
kompilieren, scheitere aber kläglich. Meine Linux Kenntnisse selbst sind 
leider etwas beschränkt und ich finde im Internet nicht die richtige 
Hilfestellung oder weiss nicht wo ich anfangen muss.

Ich habe ein laufendes embedded Linux von der Terasic homepage (Linux 
Kernel 3.12), dies läuft auf dem HPS meines Cyclone V.
Nun möchte ich, um Interrupts des FPGA verarbeiten zu können ein 
Kernelmodul hinzufügen, dass diese entsprechend registriert.

Gibt es irgendwo Informationen wie ich dies bewerkstellige? Welche 
Kernelsourcen brauche ich genau? Herunterladen kann ich 3.12.60 und wo 
müssen diese hin? Wie richte ich den Compiler ein, kann ich den selben 
verwenden wie für meine Target Applikationen? Wie muss das Makefile 
genau aussehen?

Danke und Gruss
#4621474
Lesenswert?

Möchtest du nur das Kernelmodul kompilieren, oder das gesamte Image?

Wenn nur das Modul, dann müsstest du die Imageumgebung vom Hersteller 
beziehen können, oft auch als SDK abgekürzt. Dort sind alle Headerfiles 
im Filetree abgebildet, zudem der Crosscompiler und vielleicht sogar ein 
Beispielprojekt.
Solltest du in Eclipse programmieren, so kannst du dort in den 
Linkeroptions auf das SDK verweisen. Dies geschieht mit dem Keywort 
'sysroot' und danach der Pfad zu deinem rootfs (z.B. 
sysroot=/home/Humpawumpa/de1-soc-terasic/rootfs/ )

In CMake kannst du ebenfalls mit Sysroot arbeiten, ich glaube aber erst 
ab Version 3. Fürs Makefile gibt es vielleicht eine ähnliche Option.
Gast #4631153
Lesenswert?

Ja ich will nur das Module kompilieren.
Das Problem mit dem Yocto Image ist, dass es das /build nicht enthält - 
zumindest habe ich es nicht gefunden.
Ich versuches mal mit Ubuntu Image das man ebenfalls auf deren Homepage 
herunterladen kann und das auf demselben Kernel basiert.
Gast #4631186
Lesenswert?

Hi

was du benötigst ist der cross compiler z.B. die 
arm-linux-gnueabihf-toolchain, um dein modul zu kompilieren.

Falls der Interrupt vom FPGA kommt musst du diesen auch im Qsys-Design 
mit dem HPS verbinden und die Interruptnummer vergeben. Beachte das du 
hier zwei Interruptreceiver hast und du entsprechend die Interruptnummer 
auswählen musst. Ich glaube die Interrupts vom FPGA liegen von 72 bis 
135(mehr sagt dir das HPS Handbuch).
Gast #4636244
Lesenswert?

proggen schrieb:

> Falls der Interrupt vom FPGA kommt musst du diesen auch im Qsys-Design
> mit dem HPS verbinden und die Interruptnummer vergeben. Beachte das du
> hier zwei Interruptreceiver hast und du entsprechend die Interruptnummer
> auswählen musst. Ich glaube die Interrupts vom FPGA liegen von 72 bis
> 135(mehr sagt dir das HPS Handbuch).

Genau, das hab ich gemacht,es scheitert wirklich nur am kompilieren. 
Aber habe die entsprechenden Kernelsourcen gefunden glaube ich.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren