Forum: PC-Programmierung Linux Treiber - Realtime


von Markus R. (mark989)


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

von xvzf (Gast)


Lesenswert?

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

von Rolf Magnus (Gast)


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.

von Markus R. (mark989)


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

: Bearbeitet durch User
von Markus R. (mark989)


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

von Hans Ulli K. (Gast)


Lesenswert?

Hast du vor, das die GPIO Signale immer zur selben Zeit getriggert 
werden sollen ?

von Markus R. (mark989)


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

: Bearbeitet durch User
von jowi97 (Gast)


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!

von (Gast)


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.

von Bibo (Gast)


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?

von Bibo (Gast)


Lesenswert?

Omg, tut mir leid, wegen der gleich zweifachen Leichenschändung.

von jowi97 (Gast)


Lesenswert?

Vielen Dank!
Das hat auf jeden Fall ein wenig weitergeholfen.

von elektroman (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.