Embedded Software Engineering

In gewohnter Umgebung

Echtzeitapplikationen mit Visual Studio 2005 entwickeln

26.09.2006 | Redakteur: Martina Hafner

TenAsys hat seine Entwicklungswerkzeuge für das Echtzeit-Betriebssystem INtime 3.0 in Visual Studio 2005 integriert. Dies erlaubt es, Echtzeitapplikationen auf x86-basierten Standardplattformen mit...

TenAsys hat seine Entwicklungswerkzeuge für das Echtzeit-Betriebssystem INtime 3.0 in Visual Studio 2005 integriert. Dies erlaubt es, Echtzeitapplikationen auf x86-basierten Standardplattformen mit Windows-Anwendungen zu kombinieren und aus einer einheitlichen Entwicklungsumgebung heraus zu editieren, compilieren und debuggen.

Um in einem Embedded-System ein Datenbanksystem oder eine anspruchsvolle Bedienoberfläche und deterministische Anforderungen zu vereinen, werden häufig zwei unterschiedliche Plattformen eingesetzt: ein Hardware-Subsystem unter Windows für die grafische Benutzeroberfläche und für Enterprise-Funktionen sowie eine zweite auf Basis eines Echtzeit-Betriebssystems zur Steuerung zeitkritischer Elemente. Solche Architekturen weisen jedoch diverse Nachteile auf. Ein zweiter Steuerungscomputer erhöht Hardwarekosten, Komplexität und Entwicklungsaufwand sowie den Bedarf an zusätzlichen Programmier-Tools. Deshalb gewinnen Echtzeit-Windows-Lösungen, bei denen zwei Laufumgebungen eine einzelne CPU-Plattform gemeinsam nutzen, an Beliebtheit. Aus den genannten Gründen ist auch eine einheitliche Entwicklungsumgebung wünschenswert, mit der sich Code sowohl im deterministischen Echtzeitbereich der Anwendung als im Windows-Bereich erstellen und debuggen lässt.

Für windowsbasierte Anwendungen ist Microsoft Visual Studio ein beliebtes Entwicklungs-Tool. Visual Studio 2005 bietet Hooks für Third-Party-Plug-ins. Über diesen Weg können zusätzliche Entwicklungswerkzeuge die IDE um Funktionen erweitern, die über die Programmierung von Standard-Windows-Anwendungen hinausgehen, so wie die Erstellung von Embedded-Windows-Anwendungen mit Echtzeitverhalten.

Die Stärke der Visual-Studio-IDE ist ihre Verbreitung und Erweiterbarkeit. Es gibt über 2,5 Mio. Visual-Studio-Entwickler und 225 OEMs (Original Equipment Manufacturer), die über 650 Zusatzwerkzeuge für die Visual Studio herstellen.

Schutzmechanismen für Echtzeitprozesse

Wie gut eine Echtzeit-Softwarekomponente an Windows angepasst ist, bestimmt in hohem Maße, wie gut sie in Visual Studio integriert werden kann. Prozessoren mit Intel-Architektur (80386 bis moderne Pentiums) enthalten Hardwarefunktionen, die Systeme mit mehreren Betriebssystemen erlauben. Eine Echtzeitkomponente, die alle Vorteile aus diesen Funktionen zieht, kann eine sichere Umgebung schaffen, in der Echtzeit- und Windows-Prozesse voneinander isoliert auf derselben Maschine laufen. Das bedeutet, dass jedes Betriebssystem in seiner eigenen virtuellen Maschine läuft. Durch die Nutzung der Virtual-Adressing-Hardware in Intel-CPUs und die Ausführung von Echtzeitprozessen als User-Mode-Applikationen lassen sich in einer Echtzeit-Windows-Umgebung die folgenden Schutz- und Debug-Mechanismen für Echtzeitprozesse realisieren:?Code, Daten, Stack und Heap befinden sich in getrennten, nicht zusammenhängenden Speicherseiten,

- Code wird zum zusätzlichen Schutz in schreibgeschützten Seiten abgelegt,

- für die Adressisolierung und Schutz vor Zeigerüberlauf wird Paging verwendet.

Jedem Echtzeit-Thread können separate Speicherseiten für dessen Code-, Daten-, Stack- und Heap-Speicherregionen zugewiesen werden. Diese Seiten werden dann durch nicht zugewiesene Speicherseiten getrennt, sodass Zeigerüberläufe einfach und schnell erkannt werden können. Code-Seiten werden zusätzlich gesichert, indem sie als schreibgeschützt markiert werden.

Echtzeitanwendungen im User Mode

Echtzeit-Tasks, die diese Merkmale nutzen, sind in der Lage, deterministische, harte Echtzeitsteuerung mit dem Standard-Windows-Betriebssystem zu verschmelzen, und eine Integration mit der Visual-Studio-IDE zu bieten. Die Lösung wird als zwei isolierte virtuelle Maschinen auf einer einzelnen CPU realisiert (Bild 1 - siehe Heftseite). Dies schützt vor Windows Blue Screens und bietet Antwortzeiten im µs-Bereich.

Auf einer Plattform die die beiden Betriebssysteme Windows und INTime (EchtzeitBetriebssystem) beherbergt, kann ein Echtzeit-Debugger-Plug-in für Visual Studio Fehler in Echtzeitprozessen einfangen und identifizieren, die aus Divide-by-Zero-Fehlern, falschen Zeigerzugriffen, Seiten- und Stack-Fehlern sowie anderen CPU-Exceptions resultieren. Hierfür muss die Echtzeit-Windows-Anwendung im User Mode (Ring 3), nicht im Kernel Mode (Ring 0), der für den Kernel reserviert ist, laufen.

In der Regel dürfen nur der Betriebssystem-Kernel und Low-Level-Gerätetreiber im Kernel Mode vorhanden sein. Standard-Windows-Anwendungen laufen stets im User Mode. Dadurch wird verhindert, dass sie Code und Datenstrukturen anderer Anwendungen oder des Kernels ändern können. Aus dem gleichen Grund müssen Echtzeit-Windows-Anwendungen im User Mode laufen, was ihnen außerdem gestattet, alle Möglichkeiten, die der Visual-Studio-Debugger bietet, vollständig zu nutzen.

Werden Echtzeitanwendungen im zuverlässigeren und geschützten User Modes ausgeführt, entstehen keine Performance-Nachteile. Die Software läuft mit exakt der gleichen Geschwindigkeit wie im Kernel Mode. Die einzigen Unterschiede liegen in der Ausführung bestimmter privilegierter Befehle, bei Fehlerbehandlung (Trap) und Speicherschutz. Bei richtigem Entwurf können Echtzeit-Windows-Anwendungen mit der Visual-Studio-IDE editiert, kompiliert, debugged und gepflegt werden. Das Echtzeit-Windows-Toolkit sollte über die IDE mindestens die folgenden Elemente unterstützen:

- Assistenten zur Erstellung von Standard-Codevorlagen,

- APIs, die konform zu den Windows-Aufrufen und -Namenskonventionen sind,

- Echtzeitprogramme, die mittels VS.NET Compiler und Linker generiert werden,

- die Echtzeit-Laufzeitumgebung sollte Run, Halt und Traps durch den Visual-Studio-Debugger unterstützen,

- die Visual-Studio-Lösung muss gleichzeitig Windows und Echtzeitprojekte unterstützen.

Echtzeit- und Windows-Code parallel entwickeln

Bild 2 (siehe Heftseite) zeigt die grundlegenden Schritte beim Software-Entwicklungsprozess mittels Visual Studio. Die Schnittstellenkomponenten und -Bibliotheken repräsentierten die Bereiche, um die Entwicklungs- und Laufzeitsystem erweitert werden müssen, um Echtzeit-Windows-Anwendungen innerhalb der IDE zu unterstützen. Das Ablaufdiagramm zeigt zwei parallele Entwicklungszweige, vom Schreiben des Codes bis zum Debuggen, beide in Visual Studio einzeln eingekapselt. Durch eine saubere Integration sind die beiden Bereiche beinah nicht voneinander zu unterscheiden.

Ziel ist es, die Mechanismen im Entwicklungsprozess identisch zu gestalten, um die Kenntnisse und Fähigkeiten der Entwickler bei einem Entwicklungswerkzeug optimal zu nutzen.Projekt-Wizards, die in die Visual-Studio-Entwicklungsumgebung integriert werden können, erlauben es, Echtzeitanwendungen in kurzer Zeit zu erstellen. Sie führen den Entwickler durch die zahlreichen Entwurfsentscheidungen und erzeugen anschließend automatisch Code, auf dem die Echtzeitbereiche der Anwendung aufgebaut werden können.

Plug-in für Echt-zeit-Debugger

Die APIs, die eine Kommunikation und den Datentransfer zwischen dem Windows- und Echtzeitbereich des Systems erlauben, werden durch Header-Dateien und Bibliotheken für die Windows-Anwendungen unterstützt. Sie müssen mit den verschiedenen Sprachen von Visual Studio für Windows konsistent sein und bestehen hauptsächlich aus DLLs, Include- und Bibliotheksdateien, die vom Compiler und Linker beim Erzeugen des Objekt-Codes referenziert werden. Die Echtzeitumgebung muss in der Lage sein, Echtzeit-Objekt-Code zu laden und auszuführen, der durch den Visual-Studio-Compiler erzeugt wurde.Eine vollständige Debugging-Lösung bietet die Möglichkeit, Echtzeit-Objekt-Code mit voller Geschwindigkeit in der Echtzeit-Windows-Umgebung auszuführen.

Da ein Simulator nicht die tatsächliche Laufzeitumgebung darstellt und selten mit voller Geschwindigkeit läuft, werden zeitspezifische Probleme leicht übersehen, die nur beim Lauf im tatsächlichen Echtzeit-Kernel gefunden werden können. Ein Plug-in eines Visual-Studio-Echtzeit-Debuggers kann verwendet werden, um vollen Zugriff auf Breakpoints, Einzelschrittausführung im Quellcode und Variablenüberwachung für Echtzeit-Windows-Anwendungen zu erlangen. Das Plug-in behindert nicht die Fähigkeit zum Debuggen von normalen Windows-Anwendungen.

Paul Fischer ist Senior Technical Marketing Engineer bei TenAsys in Oregon, USA.

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Kommentar abschicken

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 173488 / Software-Implementierung)

Embedded Software Engineering Report abonnieren

4 mal jährlich: Die kostenlose Pflichtlektüre für Embedded­-Software- und Systems-Entwickler, von Analyse bis Wartung und Betrieb

* Ich bin mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung und AGB einverstanden.
Spamschutz:
Bitte geben Sie das Ergebnis der Rechenaufgabe (Addition) ein.