Frage

Ich nehme einen Einführungskurs (3 Monate) über Echtzeit-System-Design, aber jede Implementierung.

würde Ich mag, etwas bauen, die mich besser lassen verstehen, was ich in der Theorie lernen würde, aber da ich nie ein Echtzeit-System verwendet wurde, kann ich nicht abschätzen, wie lange jedes Projekt stattfinden wird. Es wäre ein Konzept Beweis Projekt, oder so ähnlich sein, meine verfügbare Zeit und Wissen.

Bitte, könnten Sie mir eine Idee geben? Vielen Dank im Voraus.

I programm in TSQL, Delphi und C #, aber ich werde keine Probleme haben, in eine andere Sprache zu lernen.

War es hilfreich?

Lösung

Versuchen von Echtzeitaufgaben zu denken, die zeitkritisch sind, zum Beispiel Videospielen, die, wenn sie nicht Aufgaben nicht fertig sind (zum Beispiel der nächsten Frame Berechnung) in der Zeit.

Sie können auch von einigen industriellen Lösungen denken, aber sie sind wahrscheinlich schwieriger in Ihrer lokalen Umgebung zu studieren.

Andere Tipps

vorschlagen Sie betrachten die Erkundung der Real-Time Specification for Java (RTSJ) . Während es für die Konstruktion von Echtzeit-Software keine traditionelle Umgebung ist, ist es eine up-and-coming-Technologie mit vielen Interesse. Noch besser ist, können Sie einen Teil der laufenden Debatte über Zeuge, worauf es ankommt und was nicht in Echtzeitsystemen.

Sun JavaRTS ist frei zum Download zur Verfügung und hat einige interessante Demonstrationen zur Verfügung deterministisches Verhalten zu zeigen und ihre RT Garbage Collector zeigen.

In Bezug auf ein bestimmtes Projekt, ich schlage vor, Sie starten einfach: 1) Erstellen Sie eine Arbeit-Generator, der Sie tune eine bestimmte Menge an CPU-Zeit verbrauchen kann; 2) Setze diese in einen Rahmen, der eine Verteilung der Arbeitsaufgaben-Generators (als Gewinde oder als Chunks der ausgeführten Arbeiten in einem Thread) und einen Mechanismus zum Protokollieren der erzeugten Arbeit erzeugen kann; 3) Erstellen Sie Diagramme der Ausführungszeit, Verweilzeit, Frist, slack / überrannt dieser Aufgaben im Vergleich zu ihrer Priorität; 4) zeigt, dass das Ausführen von Aufgaben im Zusammenhang mit den Echtzeit-Threads (umge Time-Sharing) verhalten sich anders.

Bonuspunkte, wenn Sie den Aufwand in den Scheduler, indem bestimmt wird, was geliefert Last (Gesamt-CPU-Zeit produziert durch Ihre Arbeit Generator Aufgaben geteilt durch Wandtaktzeit) Ihre Aufgaben beginnen fehlende Fristen messen kann.

Sie sollten auf jeden Fall den Aufbau Ihres Systems prüfen, mit einer Hardware-Entwicklungs-Board mit einem kleinen Prozessor (ARM, PIC, AVR, wird jemand zu tun). Das hat mir sehr geholfen meine Angst vor dem Low-Level zu entfernen, wenn ich die Entwicklung gestartet. Sie werden in C oder C ++ haben allerdings verwenden.

Sie werden dann zwei Alternativen haben. Entweder gehen Bare-Metal, oder verwenden Sie ein Echtzeit-O

Going Bare-Metal, können Sie lernen:

  • Wie Sie Ihren Prozessor von Grund auf neu zu initialisieren und was am wichtigsten ist, wie Interrupts zu verwenden, was der schnellste Weg, sind Sie auf ein externel Ereignis reagieren
  • Wie leichte Fäden mit schnellen Kontextwechseln zu implementieren, was jedes Echtzeitbetriebssystem implementiert
  • Um diese ein wenig zu erleichtern, suchen Sie nach einem Entwickler-Kit, das mit vielen Dokumentation und Quellcode kommt. Ich benutzte Künstler ARM Boards Embedded und sie geben Ihnen eine Menge Material.

Möchten Sie die RT OS:

  • Sie werden schnell verfolgen Ihr Projekt, und in der Lage zu lernen, wie die Feinabstimmung eines RT O
  • Sie können Ihre Hand bei einem Open-Source-Betriebssystem wie Linux oder den BSDs versuchen und eine Menge aus dem Quellcode lernen

Jede Wahl ist gut, werden Sie ein wirklich cooles Mitmach-Projekt erhalten zu zeigen und hoffentlich besser zu verstehen, Ihr Kursmaterial. Viel Glück!

Wie die meisten Echtzeit-Systeme sind in C oder C ++ noch implementiert kann es gut sein, Ihr Wissen über diese Programmiersprachen auffrischen. Viele Echtzeit-Systeme sind auch Systeme eingebettet, so dass Sie mit einem billig Open Source ein wie Beagleboard spielen, um vielleicht wollen ( http: // Beagle .org / ). Dies wird auch Ihnen eine Chance geben, über Cross-Compilierung zu lernen, etc.

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