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
Könnte gehen. Aber das Ding in der Mitte erinnert mich an Kanonen und Spatzen.
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
Weshalb kann die Regelung nicht ausschliesslich auf dem FPGA laufen ? Den PC nur zur Visualisierung unf Konfiguration einzusetzen waere einfacher.
Hallo, zuerst zu deinem Problem. Echtzeitlinux auf x86 Basis mit Abtastraten unter 1ms sind sehr wohl möglich. Natürlich kommt das ganz auf dein Modell an. Wie es der Zufall will, arbeite ich bei einer Firma, die ein solches Echtzeitsysteme vertreibt ;-) http://www.cosateq.com/ Gruss Tobi
Was ist das denn für eine Regelung, dass du gleich einen ARM9 verpulvern willst? Was macht das FPGA? Ein ARM7 ohne Linux rechnet trotz TCP/IP Stack noch einiges weg, in so einer Millisekude.
Ja, wenn's nicht floatingpoint sein muss... eine normale Integer Regelung kriegt man schon in einem FPGA hin.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.