Hi, ich bin grade dabei mich näher mit Echtzeitprogrammierung zu beschäftigen! Dazu will ich ein bereits vorhandenes Treibermodul in Linux im Realtimecontext ausführen. Kennt jemand gute Dokumentation/Tutorials über Echtzeitprogrammierung unter Linux(Embeddedlinux(Raspbian))? Gruß Markus
Hi, eventuell findest du hier etwas http://www.tldp.org/ Ich hab schon vergeblich Tutorials für NORMALE Kernel Module gesucht... Eventuell solltest du da ansetzen und dich dann auf Realtime hoch arbeiten. LG
Kommt halt auch drauf an, welche Realtime-Implementation. Die populärsten scheinen PREEMPT-RT und Xenomai zu sein. Bei PREEMPT-RT wird der normale Kernel echzeitfähig gemacht, bei Xenomai ist das aber recht streng getrennt. Da braucht man dann auch für die Hardware extra Xenomai-Treiber für Echtzeit.
Hi. Ich bin jetzt dabei beide Ansätze auszuprobieren. Xenomia: Ich halte mich an folgendes Tutorial: http://diy.powet.eu/2012/07/25/raspberry-pi-xenomai/ Leider schlägt bei mir das Patchen fehl. Dazu eine Frage: Muss die rpi-kernelversion und der Version des Patches die gleiche Version haben? Also linux-rpi-*3.10.y* und rpi-linux-*3.2.21*-xenomai-2.6.1 ? Beim patchen bekomme ich folgenden Ausgabe:
1 | /rpi-linux-3.2.21-xenomai-2.6.1.patch |
2 | patching file arch/arm/Kconfig |
3 | Hunk #1 FAILED at 1149. |
4 | 1 out of 1 hunk FAILED -- saving rejects to file arch/arm/Kconfig.rej |
5 | patching file arch/arm/mach-bcm2708/bcm2708.c |
6 | Hunk #1 FAILED at 32. |
7 | Hunk #2 succeeded at 162 with fuzz 2 (offset 18 lines). |
8 | Hunk #3 FAILED at 663. |
9 | Hunk #4 FAILED at 678. |
10 | Hunk #5 succeeded at 795 with fuzz 2 (offset 104 lines). |
11 | Hunk #6 FAILED at 752. |
12 | 4 out of 6 hunks FAILED -- saving rejects to file arch/arm/mach-bcm2708/bcm2708.c.rej |
PREEMPT-RT: Wenn ich hier folgendes Tutorial verwende: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=39951 bekomme ich nur einen Fehler beim Patchen: Hunk #1 FAILED at 53. 1 out of 1 hunk FAILED -- saving rejects to file drivers/misc/Makefile.rej Inhalt von Makefile.rej:
1 | --- drivers/misc/Makefile |
2 | +++ drivers/misc/Makefile |
3 | @@ -53,3 +53,4 @@ |
4 | obj-$(CONFIG_VMWARE_VMCI) += vmw_vmci/ |
5 | obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o |
6 | obj-$(CONFIG_SRAM) += sram.o |
7 | +obj-$(CONFIG_HWLAT_DETECTOR) += hwlat_detector.o |
Letzte Zeile mit dem "+" ich hinzugefügt, der Fehler kommt aber wieder.:-( Danke für jede Hilfe
:
Bearbeitet durch User
Hi, also ich habe jetzt den Xenomai patch, auf Linux(RaspberryPi) aufgesetzt. Jetzt möchte ich mein vorhandenes Kernelmodule(Spi Gpio Treiber) so modifizieren, dass die GPIO Signale in (annähernd)Echtzeit getriggert werden. Gibt es hierzu gute Dokumentation, wie dies zu handhaben ist? Ich bin auf der Xenomaiseite leider nicht fündig geworden.. Danke schonmal! Gruß Markus
Hast du vor, das die GPIO Signale immer zur selben Zeit getriggert werden sollen ?
Die GPIO Signale sollen zwischen jedem (SPI)Byte übertragen werden(die Hardware auf der SPI-Slave Seite erwartet es so). Ich habe es jetzt alles, weil andere Projekte dies fordern, mit dem RT-Patch realisiert. Nächstes Problem: Bei dem Linux mit dem RT-Patch (http://www.raspberrypi.org/phpBB3/viewtopic.php?f=29&t=39951) antwortet bei einer Kernelconfig von FULLY_PREEMPTIBLE_RT die SPI-Hardware nicht mehr! Hat jemand eine Idee woran es liegen könnte? Gruß Markus
:
Bearbeitet durch User
Hallo, ich arbeite seit kurzen mit einem RT-Linux bzw. beschäftige mich damit und jetzt wollte ich mal wissen, ob die Standardlinuxtreiber echtzeitfähig sind oder ob man diese neu schreiben bzw umschreiben muss. Vielen Dank für eure Hilfe!
jowi97 schrieb: > Hallo, > > ich arbeite seit kurzen mit einem RT-Linux bzw. beschäftige mich damit > und jetzt wollte ich mal wissen, ob die Standardlinuxtreiber > echtzeitfähig sind oder ob man diese neu schreiben bzw umschreiben muss. > > Vielen Dank für eure Hilfe! Der Thread ist zwar uralt, aber egal. So allgemein kann man die Frage nicht beantworten. Ohne Spezifikation was man genau mit "echtzeitfähig" meint, um welche Größenordnungen es geht, und welche Treiber man genau meint. Im Spiele-Kontext hat man vergleichsweise "ewig" Zeit bis zum nächsten Frame, die Synchronmaschine will man aber vermutlich eher nicht am PC regeln. Manche Dinge sind inhärent nicht wirklich echtzeitfähig (Ethernet über die üblichen Kupfer-Verbindungen - wenn der Switch die Leitung drosselt kann man im Quadrat hüpfen, nutzt alles nichts. Bei USB hängt viel vom Hostcontroller, den Endgeräten, der Mondphase und anderen Dingen ab. usw.). Mit PREEMPT-RT sollte z.B. Kommunikation über UDP im 1kHz Raster ohne allzu viel Latenz bei passender Hardware möglich sein.
xvzf schrieb: > Ich hab schon vergeblich Tutorials für NORMALE Kernel Module gesucht... > Eventuell solltest du da ansetzen und dich dann auf Realtime hoch > arbeiten. Linux Kernel Module Programming Guide. Das Werk zum Thema seit der Linux-Steinzeit und damit habe ich schon Programmier-Anfängern zu Hello-World Modulen in unter 30 Minuten verholfen. Wie kann man das übersehen? Deutsche Youtube Tutorials gesucht?
Eigentlich ist das hier besser https://www.iitg.ac.in/asahu/cs421/books/LDD3e.pdf Linux Device Driver 3rd Edition Ist von einem Kernelentwickler mitgeschrieben worden. Und die Frage zu Standardtreiber echtzeitfähig hat schon rµ beantwortet. Das ist sehr komplex
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.