Forum: Compiler & IDEs Linux Kernel Modul kompilieren für De1-SOC yocto


von Humpawumpa (Gast)


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

von Operator S. (smkr)


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.

von Humpawumpa (Gast)


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.

von proggen (Gast)


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).

von humpawumpa (Gast)


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.

von proggen (Gast)


Lesenswert?

Guten Morgen,

vll. hilft dir der Link noch weiter: 
http://stackoverflow.com/questions/3467850/cross-compiling-a-kernel-module

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.