mikrocontroller.net

Forum: PC-Programmierung Linux Treiber - Realtime


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Markus R. (mark989)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: xvzf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Markus R. (mark989)
Datum:

Bewertung
0 lesenswert
nicht 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:
/rpi-linux-3.2.21-xenomai-2.6.1.patch 
patching file arch/arm/Kconfig
Hunk #1 FAILED at 1149.
1 out of 1 hunk FAILED -- saving rejects to file arch/arm/Kconfig.rej
patching file arch/arm/mach-bcm2708/bcm2708.c
Hunk #1 FAILED at 32.
Hunk #2 succeeded at 162 with fuzz 2 (offset 18 lines).
Hunk #3 FAILED at 663.
Hunk #4 FAILED at 678.
Hunk #5 succeeded at 795 with fuzz 2 (offset 104 lines).
Hunk #6 FAILED at 752.
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:
--- drivers/misc/Makefile
+++ drivers/misc/Makefile
@@ -53,3 +53,4 @@
 obj-$(CONFIG_VMWARE_VMCI)  += vmw_vmci/
 obj-$(CONFIG_LATTICE_ECP3_CONFIG)  += lattice-ecp3-config.o
 obj-$(CONFIG_SRAM)    += sram.o
+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
Autor: Markus R. (mark989)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans Ulli K. (elektroman)
Datum:

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

Autor: Markus R. (mark989)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: jowi97 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: rµ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bibo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Bibo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Omg, tut mir leid, wegen der gleich zweifachen Leichenschändung.

Autor: jowi97 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!
Das hat auf jeden Fall ein wenig weitergeholfen.

Autor: elektroman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.