Linux Treiber - Realtime

OP #3431709
Lesenswert?

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
Gast #3433454
Lesenswert?

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.
OP #3433830
Lesenswert?

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
OP #3437895
Lesenswert?

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
OP #3448945
Lesenswert?

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
Gast #5976666
Lesenswert?

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!
Gast #5976698
Lesenswert?

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.
Gast #5976717
Lesenswert?

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?

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