Forum: Mikrocontroller und Digitale Elektronik Orange PI Zero - Echtzeit Anwendungen


von Patrick L. (crashdemon)


Lesenswert?

Hallo Zusammen,

ich bastel gerade ein bisschen mit einem Orange PI Zero herum und habe 
mich gefragt ob es dafür eingentlich auch die möglichkeit gibt 
Echtzeit-Anwendungen drauf laufen zu lassen? Ich benutze auf dem Orange 
PI Zero als OS aktuell armbian.

Grüße

Patrick

von eelhorsto (Gast)


Lesenswert?

Moin, was bedeutet bei dir Echtzeit? Wie zeitnah muss etwas ausgeführt 
werden? Oftmals ist Echtzeit nicht notwendig. Mit Armbian wird das 
nichts. Lieber ein rtos nehmen.

von Viktor B. (coldlogic)


Lesenswert?

Der OPi Zero verwendet einen Chip von Allwinner, damit wird es 
schwierig, ein RTOS daran laufen zu lassen. Zu den Chips gibt es nämlich 
nur sehr wenig Dokumentation. Das heißt, etwas echtzeitfähiges würde 
einen mit SPI o.ä. angeschlossen MC erfordern.

von Pandur S. (jetztnicht)


Lesenswert?

Ich wuerd meinen Echtzeit ist immer noetig.

Nur : Echtzeit bedeutet innerhalb verlangter Zeit auf ein Ereignis 
antworten.

Gilt auch fuer ein GUI mit einem komplexen OS. Wenn der Mousecursor oder 
die Tastatur eine Sekunde nachhaengt ist es nicht brauchbar.

Normalerweise, in industriellen, physikalischen oder sonstwelchen 
Prozessen muss es schneller sein. Aber nicht beliebig schnell. Wie 
schnell ist durch das System bestimmt. Das kann zB eine Millisekunde 
sein.

von Mr. Mephistopheles (Gast)


Lesenswert?

>Nur : Echtzeit bedeutet innerhalb verlangter Zeit auf ein Ereignis
>antworten.

Das bedeutet es nicht. Es bedeutet genau zu einem bestimmten Zeitpunkt 
etwas zu tun und NICHT "irgendwann" von "jetzt" bis spätestens "dann".
Sonst funktioniert kein Regelalgorithmus, weil die einem die Zeitbasis 
wegwandert.
Echtzeit bedeutet eben nicht einfach "so schnell wie möglich"

von Olaf (Gast)


Lesenswert?

> Gilt auch fuer ein GUI mit einem komplexen OS. Wenn der Mousecursor oder
> die Tastatur eine Sekunde nachhaengt ist es nicht brauchbar.

Das hab ich ja auch immer gedacht, aber trotzdem kauf die ganze Welt 
Microsoftprodukte. :)

Olaf

von Peter II (Gast)


Lesenswert?

Mr. Mephistopheles schrieb:
> nicht. Es bedeutet genau zu einem bestimmten Zeitpunkt
> etwas zu tun und NICHT "irgendwann" von "jetzt" bis spätestens "dann".

falsch. Kein Computer kann nicht etwas exakt zu einer zeit machen.
Es wird immer ein Zeitfester geben.

Wiki:

die bestimmte Ergebnisse zuverlässig innerhalb einer vorbestimmten 
Zeitspanne, zum Beispiel in einem festen Zeitraster, liefern können.

von Brummbär (Gast)


Lesenswert?

Olaf schrieb:
> aber trotzdem kauf die ganze Welt
> Microsoftprodukte. :)

Die sind leiderprobt und nehmen es als Standard hin.

von Mr. Mephistopheles (Gast)


Lesenswert?

Sicher kann ein Computer etwas auch nicht zu einem bestimmten Zeitpunkt 
tun - selbst wenn nur ein Programm läuft und die Garbagecollection aktiv 
wrird.

https://de.wikipedia.org/wiki/Echtzeit
>die bestimmte Ergebnisse zuverlässig innerhalb einer vorbestimmten >Zeitspanne

davor steht noch

>>harakterisiert den Betrieb informationstechnischer Systeme,



Das "informationstechnischer" klingt für mich nach Dingen wie z.B. 
Streaming und da reicht es, wenn der nächste Soundschnippsel beliebig 
schnell gezogen wird, solange er passend abgespielt wird.

Weiter unten im Artikel steht das, was ich sagte:
>Zur Beschreibung einer Steuerungs- und Regelungsaufgabe reicht es aber >nicht 
aus, eine Echtzeit über die Reaktionszeit zu definieren

Da geht der Ball also zurück an den TE.
Willst du was regeln oder geht es um Dinge, die sich eher in 
"Verfügbarkeit" (also maximale Reaktionszeit) verkaufen müssen?

von Dirk B. (dirkb2)


Lesenswert?

Mr. Mephistopheles schrieb:
> Das "informationstechnischer" klingt für mich nach Dingen wie z.B.
> Streaming und da reicht es, wenn der nächste Soundschnippsel beliebig
> schnell gezogen wird, solange er passend abgespielt wird.

Die informationstechnische Echtzeit ist älter als Streaming.
Es geht um Echtzeit bei Computer-Systemen. Ganz allgemein.

Mr. Mephistopheles schrieb:
> Weiter unten im Artikel steht das, was ich sagte:
>>Zur Beschreibung einer Steuerungs- und Regelungsaufgabe reicht es aber >nicht
>> aus, eine Echtzeit über die Reaktionszeit zu definieren

Und? Hat ja auch keiner behauptet, dass das ausreicht.

Wie groß die Zeitspanne ist, in der die Aufgabe erledigt werden muss, 
gibt die Aufgabe vor, nicht die Definition für "Echtzeit".

Das kann auch deutlich mehr als Sekunden sein.

von Pandur S. (jetztnicht)


Lesenswert?

>>Nur : Echtzeit bedeutet innerhalb verlangter Zeit auf ein Ereignis
>>antworten.
>
>Das bedeutet es nicht.

Doch bedeutet es. Denn Regelungsaufgaben laufen equidistant, mit einem 
Timer. Und das ganze System muss eben so schnell wie der Timer sein. 
Sensoren, Aktoren, Rechner, zusammen muessen mitmoegen.

von Patrick L. (crashdemon)


Lesenswert?

Ich möchte an dem Orange Pi Zero ein paar TLC5940 (12x) hängen und diese 
über das TPM2 Protokoll steuern. Der Orange Pi hängt dann über WLAN im 
Netzwerk. Ziehl ist damit einen LED-Tisch zu bauen.

Ich hätte als Anforderung, dass vom Senden des Befehls über TPM2 bis er 
an dem entsprechenden TLC5940 ankommt nicht mehr als 200ms vergehen. 
Denkt ihr das ist realistisch? Außerdem wäre es schön wenn die 
Verzögerung immer ungefähr gleich wäre, damit es beim abspielen von 
Sequenzen nicht zu "rucklern" kommt.

von Viktor B. (coldlogic)


Lesenswert?

Ja, das sollte machbar sein. Ist auch eine ziemlich "weiche" Echtzeit

von Mikro 7. (mikro77)


Lesenswert?

Patrick L. schrieb:
> mit einem Orange PI Zero herum und habe
> mich gefragt ob es dafür eingentlich auch die möglichkeit gibt
> Echtzeit-Anwendungen drauf laufen zu lassen? Ich benutze auf dem Orange
> PI Zero als OS aktuell armbian.

Grundsätzlich kann jeder Thread im Userland zu einem beliebigen 
Zeitpunkt und beliebig lange unterbrochen werden. Auf einem 
Mehrkernsystem kann man allerdings seine Chancen "verbessern" wenn man 
den Prozess auf einen gesonderten Kern (nicht den der die Interrupts 
bearbeitet) und mit Echtzeitpriorität laufen lässt.

Patrick L. schrieb:
> Ich hätte als Anforderung, dass vom Senden des Befehls über TPM2 bis er
> an dem entsprechenden TLC5940 ankommt nicht mehr als 200ms vergehen.

Also alle 200ms? Das könnte ohne Verrenkungen klappen. Ansonsten kann 
man grundsätzlich auch versuchen direkt auf die Peripherie zuzugreifen 
und eine DMA Loop bauen (das geht zumindest auf dem Raspberry).

von Patrick L. (crashdemon)


Lesenswert?

Mikro 7. schrieb:
> Grundsätzlich kann jeder Thread im Userland zu einem beliebigen
> Zeitpunkt und beliebig lange unterbrochen werden.

Ja, richtig. Deswegen hatte ich überlegt ob es da nicht irgendeine 
möglichkeit gibt das zu verhindern^^

Mikro 7. schrieb:
> Also alle 200ms? Das könnte ohne Verrenkungen klappen. Ansonsten kann
> man grundsätzlich auch versuchen direkt auf die Peripherie zuzugreifen
> und eine DMA Loop bauen (das geht zumindest auf dem Raspberry).

Ja, dann müsste ich vermutlich einen Kernel-Triber schreiben. Weil ja 
der direkt Zugriff auf die Periphere nicht möglich ist.

Kann man des den bewerkstelligen das wenn es zu einer Verzögerung kommt 
diese zumindest immer gleich ist?

Gibt es eig. eine SPI-Lib für den Orange Pi Zero?

von 艺人 (Gast)


Lesenswert?

Patrick L. schrieb:
> Ja, richtig. Deswegen hatte ich überlegt ob es da nicht irgendeine
> möglichkeit gibt das zu verhindern^^

Eine Zange ist nur selten das richtige Werkzeug, um einen Nagel 
reinzuschlagen. Aber ein bisschen geht es.

von S. R. (svenska)


Lesenswert?

Patrick L. schrieb:
> Ja, richtig. Deswegen hatte ich überlegt ob es da nicht irgendeine
> möglichkeit gibt das zu verhindern^^

Echtzeitpriorität einstellen. Linux kann Echtzeit, wenn man dem Kernel 
das beigebracht hat. Allerdings nicht unbegrenzt hart (d.h. nicht bis an 
die Lastgrenze des Systems). Deine 200ms weicher Echtzeit (= "mal ein 
Ereignis verpasst") sollte das System auch so schaffen.

von Daniel B. (dbuergin)


Lesenswert?

Sonst ev. in Richtung RealTime (RT) Kernel Erweiterungen schauen.
z.B 
https://forum.armbian.com/topic/4130-rt-preempt-error-in-orange-pi-zero/
Scheint zwar noch Probleme zu geben, aber ev. sind die ja jetzt gefixt.

von Alex G. (dragongamer)


Lesenswert?

Ist dieses TPM2 Protokoll so Overheadbehaftet?
Denn ganz ehrlich, ich krieg problemlos smoothe Lichtefekte über ein PWM 
Board, angeschlossen an einem Raspberry Pi (standard Raspian) per i2C 
und kontroliert über Java(!) hin! Wertänderung rund 60 mal pro Sekunde 
angestrebt.
Hab bislang nur 4 Kanäle getestet (da die Lichtefekte EL Wire sind), 
aber die Prozessauslastung ist niedrig.
Denke 200ms pro Befehl reicht locker, selbst wenn irgendein OS Thread 
zwischenschiessen sollte. Der Orange PI Zero hat genau für den Zweck ja 
eine Multicore CPU.

: Bearbeitet durch User
von Mikro 7. (mikro77)


Lesenswert?

Patrick L. schrieb:
> Mikro 7. schrieb:
>> Also alle 200ms? Das könnte ohne Verrenkungen klappen. Ansonsten kann
>> man grundsätzlich auch versuchen direkt auf die Peripherie zuzugreifen
>> und eine DMA Loop bauen (das geht zumindest auf dem Raspberry).
>
> Ja, dann müsste ich vermutlich einen Kernel-Triber schreiben. Weil ja
> der direkt Zugriff auf die Periphere nicht möglich ist.

Doch, über /dev/mem. (Edit: Wenn es ähnlich zum Rpi gelöst ist).

Bei den angestrebten 200ms wird das aber wohl nicht notwendig sein.

: Bearbeitet durch User
von Patrick L. (crashdemon)


Lesenswert?

Alles klar. Dann probiere ich das erstmal ohne Echtzeit-Erweiterung aus.

von S. R. (svenska)


Lesenswert?

Patrick L. schrieb:
> Ja, dann müsste ich vermutlich einen Kernel-Triber schreiben. Weil ja
> der direkt Zugriff auf die Periphere nicht möglich ist.

Schaue dir mal das UIO-Subsystem (Userspace I/O) des Kernels an.

Um das zu benutzen, trägst du in den Devicetree den Adressraum ein und 
kannst dann über /dev/uioX darauf zugreifen. Das ist wesentlich 
sauberer, als direkt mit /dev/mem zu arbeiten und es kann mit Interrupts 
umgehen.

Allerdings kann ich mir nicht vorstellen, dass es für RPi-interne 
Hardware (wie die DMA-Engine) keinen Treiber gibt. Es gibt ein 
vollwertiges DMA-Subsystem im Kernel, das sollte man dafür auch benutzen 
können.

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.