Linux-Headers - Woher bekommen? Xilinx Zynq

Gast #4858158
Lesenswert?
• ▲
▼
Hallo, ich arbeite hier auf dem Zynq und habe folgenden Linux-Kernel 
(kommt wenn ich uname -r) eingebe.

4.6.0-xilinx-00040-g7862283-dirty

Ich möchte ein char-device kompilieren.

Natürlich habe ich gemerkt, dass die Verlinkung 
/lib/modules/4.6.0-xilinx-00040-g7862283-dirty/build fehlt.

Auch unter /usr/src ist leere.


Der Befehl sudo apt-get install linux-headers-`uname -r` funktioniert 
auch nicht.


jetzt muss ich mir manuell die Header beschaffen.


Ist es möglich, dass ich mir grad von Git nochmal alles hole und in 
diesen Ordner dann die Verlinkung mache?
https://github.com/Xilinx/linux-xlnx

Ist es wichtig, dass die Inhalte unter /usr/src liegen?


Danke
Gast #4858197
Lesenswert?
• ▲
▼
Markus schrieb:
> Clemens L. schrieb:
>> Was ist denn der Name des Pakets, in dem der Kernel selbst ist?
>
> Wie finde ich das raus, wenn ich mal so doof fragen darf?

Der Kernel liegt einfach als Binärfile auf der SD-Karte in einer extra 
FAT-Partition, der wird von U-Boot in den Ram geladen.
Als rootfs habe ich mir einfach ein armhf-ubuntu minimal rootfs irgendwo 
runtergeladen, das kommt nicht von xilinx.
#4858305
Lesenswert?
• ▲
▼
Markus schrieb:
> Den habe ich selber cross-(kompiliert) aus dem Xilinx-Linux Repo.

Den Kernel baust du mit "make bzImage".
Die Module bekommst du mit "make modules modules_install".
Die Header bekommst du mit "make headers_install".

Beachte die Pfade, wo das hin installiert wird. Ich habe gerade keinen 
Baum da, schau ins Makefile vom Kernel.
Gast #4858657
Lesenswert?
• ▲
▼
Mw E. schrieb:
> Oder wenn er nen Kernelmodul/Treiber Für seine FPGA Hardware am
> AXI Bus
> schreiben will ;)

Genau das habe ich vor, aber mein VHDL-AXILite Modul funktioniert sogar 
schon ;-)
Wenn ich direkt auf die Register via /dev/mem und mmap zugreife 
funktioniert das.


Muss jetzt nur einen character-device dafür schreiben damit es einfacher 
nutzbar ist.
#4858697
Lesenswert?
• ▲
▼
Schau dir mal das UIO Framwork an (muss natürlich in deinem Kernel 
aktiviert sein)

Da wirfst du eine Beschreibung "welchen Adressraum, wie viel, welchen 
Interrupt" in den Device-Tree und bekommst ein /dev/uio0, mit dem du 
ohne jede Kernelprogrammierung folgendes machen kannst:
- lesen (blockiert bis zum nächsten Interrupt)
- schreiben (aktiviert Interrupts)
- mmap (mappt den angegebenen Adressraum)

Das reicht für die meisten, eher einfachen FPGA-Module vollkommen aus, 
ersparst dir einen eigenen Kerneltreiber und ist deutlich sicherer als 
ein Zugriff über /dev/mem.
Gast #4858704
Lesenswert?
• ▲
▼
S. R. schrieb:
> Schau dir mal das UIO Framwork an (muss natürlich in deinem Kernel
> aktiviert sein)
>
> Da wirfst du eine Beschreibung "welchen Adressraum, wie viel, welchen
> Interrupt" in den Device-Tree und bekommst ein /dev/uio0, mit dem du
> ohne jede Kernelprogrammierung folgendes machen kannst:
> - lesen (blockiert bis zum nächsten Interrupt)
> - schreiben (aktiviert Interrupts)
> - mmap (mappt den angegebenen Adressraum)
>
> Das reicht für die meisten, eher einfachen FPGA-Module vollkommen aus,
> ersparst dir einen eigenen Kerneltreiber und ist deutlich sicherer als
> ein Zugriff über /dev/mem.

Danke für den Tipp, ich werds mir mal anschauen ;-)
Gast #4858709
Lesenswert?
• ▲
▼
Aber mal so eine grundsätzliche Frage:

Wenn ihr Hardwaremodule für AXI entwerft, schreibt ihr quasi direkt die 
Module mit der entsprechenden Funktion (z.B. PWM) die dann auch direkt 
ein AXI Interface haben?

Bei uns wurde es so festgelegt, dass wir getrennte AXI-Lite Module nur 
für schreiben und nur für lesen haben die zur weiteren Hardware über ein 
FIFO-Interface entkoppelt ist, sodass man sich bei jeder weiteren 
Entwicklung nicht immer mit der AXI-Kommunikation rumschlagen muss.

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