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
Was ist denn der Name des Pakets, in dem der Kernel selbst ist?
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?
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.
Markus schrieb: > Der Kernel liegt einfach als Binärfile auf der SD-Karte in einer extra > FAT-Partition Und wo hast du diesen Kernel her?
Clemens L. schrieb: > Markus schrieb: >> Der Kernel liegt einfach als Binärfile auf der SD-Karte in einer extra >> FAT-Partition > > Und wo hast du diesen Kernel her? Den habe ich selber cross-(kompiliert) aus dem Xilinx-Linux Repo.
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.
S. R. schrieb: > Beachte die Pfade, wo das hin installiert wird. Ich habe gerade keinen > Baum da, schau ins Makefile vom Kernel. Das verrät "make help".
Vielen Dank Leute, das mit make headers_install hat funktioniert. Wieder was gelernt auf dem steinigen Weg zu einem embedded-linux-Menschen ;-)
Mw E. schrieb: > Oder wenn er nen Kernelmodul/Treiber Für seine FPGA Hardware am > AXI Bus schreiben will ;) BTDT: Das UIO-Framework macht das relativ einfach, wenn man es nutzen will.
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.
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.
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 ;-)
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.
Ich habe mir ein AXI-Lite-Interface mit Timeout in VHDL selbst geklöppelt, welches hinten einen simplen parallelen Bus ansteuert. Das hat aber keine besonderen Grund, außer dass ich Anfänger bin.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.