Frage

Auf einem kleinen Embedded-System-Projekt, das wir einen Code haben, die wir gerne in einem Thread ausgeführt, so werden die Wahl wir in der Oberseite eines eingebetteten RTOS (ECOS) zu bauen.

Bisher haben wir eine zyklische Exekutive in Haupt () verwendet, die Aufgaben fuhr jeweils als Zustandsmaschine implementiert. Für einige Aufgaben stießen wir auf Probleme, bei denen die Aufgabe in viele feinkörnigen Staaten werden müßten aufgebrochen somit den Code Extra-Komplex zu machen.

Wenn zu einem RTOS Schalten wir die Speichernutzung für jeden Thread Stack gefunden schnell summiert sich, wenn wir jede einzelne Aufgabe geben ist es eigenen Thread. (Wir nur 64k haben und den Speicher für unsere Kommunikationspuffer müssen)

Wir erwägen für eine zyklische Exekutive eine Lauffläche für unsere Kommunikationsaufgabe und einen anderen Thread verwenden. Die zyklische Exekutive werden die anderen logischen Aufgaben treiben.

Ist es sinnvoll eine RTOS und zyklische Exekutive so zu mischen?

War es hilfreich?

Lösung

Dies ist ein absolut gültiges Design.
In einem unserem Produkt verwenden wir ein ähnliches Design, wo die asynchronen I / O-Kanäle (TCP / IP, 2 seriellen Streams) in ihren eigenen Aufgaben waren und wir hatten eine „Haupt“ Aufgabe, die für mehrere Funktionsbereiche zuständig ist .

Denken Sie an Aufgaben wie einfach einen Trennmechanismus, dass Sie Ihr Design vereinfachen kann.

Andere Tipps

Ja, eine zyklische Exekutive in einem OS-Thread laufen mehrere ‚Aufgaben‘ hat, kann Sinn machen. In der Tat, es sei denn zwei Aufgaben Konflikt mit Anforderungen an das Scheduling (ein Block muss, ist eine höhere Priorität als die anderen und die mit niedriger Priorität ein dauert eine lange Zeit auszuführen, etc.), würde ich empfehlen, sie im selben Thread setzen.

Dies gilt insbesondere in dem Fall, in dem Sie eine leichtgewichtige RTOS ohne Speicherschutz verwenden: separate Threads sind nicht sicherer als ein Thread (kein MMU Schutz der Adressräume), in der Tat sind sie potentiell gefährlicher wegen des größeren Bedarfs an Gleichzeitigkeit Schutz. Selbst wenn Ihr IPC Schema robust und nicht anfällig von Programmierern zu missbrauchen, ist es Overhead ist in der Regel nicht Null, so die Notwendigkeit vermieden wird es in Leistungssteigerungen führen kann.

Wenn Sie sehen FreeRTOS , sie tatsächlich einen anderen Scheduler in einer Aufgabe ausführen, Art: )

Und anderes Echo, klingt nichts mehr im Design falsch. Kein Grund (zum Teil) Ihre Aufgaben nicht Zustandsmaschinen sein können, wenn es ein klarer Weg ist etwas, das Art und Weise zum Ausdruck bringen.

Es ist ein gültiges Design, aber ich denke, dass ich den Grund verpassten das O überhaupt zu haben.

Welche Einrichtungen des OS planen Sie verwenden?

Aus den vorliegenden Informationen scheint es, dass Sie die Komplexität der Aufgaben zu Ihrer neuen Hauptschleife bewegt werden am Ende.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top