Embedded Linux mit Regelung im 1ms Bereich. Möglich?

Gast #839848
Lesenswert?

Hallo,

ich habe einen FPGA mit USB 2.0 Schnittstelle der zur Zeit mit einem 
normalen PC (für eine Regelung) läuft. Ich würde jetzt gerne die 
Regelung unter 1ms Ablaufen lassen. Die USB-Delay Zeit ist sehr gering 
und die Berechnung sollte auch reletiv schnell erfolgen. Da das aber mit 
einem großem Linux System wohl nicht so schnell geht habe ich an ein 
ARM9 System mit Embedded Linux gedacht. Die Soll-Größen sollen ca. alle 
100ms mit der alten Steuerung auf dem PC erneuert werden. Hier dachte 
ich an Ethernet.

Ich bin mir der Komplexität durchaus bewust. Und sag mal, dass ich das 
hinbekomme könnte.

Aber geht das überhaupt. Die RT-Kernels von PC-Distributionen haben 
Taskscheiben im 1ms Bereich. Ich bräuchte kleinere (Faktor 10?!?), aber 
dann besteht die Gefahr das die CPU nur mit Task-Wechseln zutun hat.

Ich stelle mir das ungefähr so vor:

Embedded Linux <-> FGPA: (alle 1ms)
--Daten empfangen
--Berechnen (auch der Daten zum/vom PC)
--Daten senden

Embedded Linux <-> PC:  (alle 100ms)
--Daten empfangen
--Daten senden

     1ms                100ms
FPGA-----Embedded Linux-------PC

Könnte das gehen?!?

Grüße

Samuel
Gast #839925
Lesenswert?

Hallo,

vielen Dank für die Antowort. Wg: "Kanonen und Spatzen", wie darf ich 
das verstehen? Sollte ich lieber auf dem PC ein RT Betriebsystem mit 
einem normalen Linux Kernel als Task laufen lassen?

Gruß

Samuel
Gast #840672
Lesenswert?

Brauchst du garantierte Berechnungszeiten? Davon hängt deine OS-Wahl 
maßgeblich ab. Es gibt in dem Bereich sog. "soft-real-time" OSes (glaub 
darunter fällt Embedded Linux auch, bin aber nicht sicher) die im 
Prinzip normale OSes mit massiver Optimierung auf Geschwindigkeit sind. 
Und es gibt "hard-real-time" OSes, die i.a. sogar langsamer sind, aber 
ihre garantierten Verzögerungszeiten auch einhalten.

Nur um ein Beispiel zu nennen: Ein soft-RT-OS könnte einen 
Prozesswechsel in max. 100 µs durchführen, außer du hast extremes Pech 
mit Cache Misses, dann können es schonmal bis zu 500 µs und mehr sein - 
kommt aber fast nie vor, deshalb nicht so schlimm. Ein hard-real-time-OS 
würde dagegen sagen: "200 µs, aber niemals mehr, egal was passiert". 
Ersteres wäre z.B. für ein User Interface praktisch, letzteres wenn >200 
µs eine Maschine gegen die Wand fahren lassen würde (typischerweise in 
einer Kette von anderen Ereignissen).

Deshalb: Überleg als erstes, ob du garantierte Zeiten brauchst. Embedded 
Linux ist wie gesagt - meines wissens - ein soft-RT-OS.

Davon abgesehen überleg auch, ob es für eine Steuerung überhaupt ein OS 
braucht. Sowohl kurze als auch garantierte Zeiten bekommt man ganz ohne 
OS sehr viel einfacher, sofern die Aufgaben entsprechend einfach sind.

Ansonsten sparst du sicher mit Linux ne Menge Arbeit, aber es lohnt sich 
sicher auch, andere RTOS-Projekte anzusehen.
Gast #841620
Lesenswert?

Hallo,

vielen Dank für die Antworten.

RE: Weshalb kann die Regelung nicht ausschliesslich auf dem FPGA laufen?

Es sollen mehrere Fuzzy Regler laufen die event lernen sollen. Zur Zeit 
dient das FPGA nur zum Sammeln der Daten. Die Logik möchte ich ungerne 
im FPGA haben, weil es dann lange dauert wenn etwas geändert werden 
soll.

RE: zuerst zu deinem Problem. Echtzeitlinux auf x86 Basis mit 
Abtastraten
unter 1ms sind sehr wohl möglich.

Ich habe nochmal gegoogelt und mittels RTAI einen 10kHz Taktgeber als 
Thread bei ausgelastetem PC gesehen. Sehr eindrucksvoll.

RE: dass du gleich einen ARM9 verpulvern willst?
Es muss nicht ein ARM9 sein. Ich habe nur mal grob überfolgen was man 
für sein Geld bekommt und ein ARM9 ist nicht viel teuer und er hat eine 
MMU (erleichtert etwas den Einstaz von Linux). Aber es kann auch was 
ganz anderes sein.

RE: Ja, wenn's nicht floatingpoint sein muss... eine normale Integer
Regelung kriegt man schon in einem FPGA hin.

Nein ich könnte es ganzzahlig mit einer Auflösung von 12Bit realisieren.

RE: Brauchst du garantierte Berechnungszeiten?

Ja. Es soll eine Stromregelung für Gleichstrom-Motoren werden.

---

Ich mag die Kombination von Echtzeit und Betriebsystem nicht gerne. Ich 
habe da nicht viel Ahnung von. Ich werden einfach mal weiter mit Euren 
Meinungen und Informationen googlen und überlegen. Und bin für weitere 
Tips natürlich dankbar.

Grüße

Samuel

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