Embedded Software ist gebunden an eine spezifische Hardwareumgebung. Der benutzte Microcontroller, die angeschlossene Elektronik und die Projektanforderungen bestimmen den Umfang und die Komplexität der embedded Software.
Die grosse Hardwareabhängigkeit der embedded Software ist eine Herausforderung für jeden Projektleiter und Mitarbeiter, da die Hardwareentwicklung und die Softwareentwicklung sich gegenseitig beeinflussen.
Um diese Abhängigkeiten zu entkoppeln, bietet sich die Möglichkeit, mittels einer simulierten Hardware die embedded Software zu entwickeln. Damit spart man Zeit, Kosten und Nerven.
Eine PC-Simulierte Embedded Software Umgebung mit Visual Studio besteht grundsätzlich aus drei Teilen:
Damit ist der Software Code gemeint, der schlussendlich auf einem Microcontroller läuft, welcher in einer speziellen Hardwareumgebung eingebettet ist.
Als Programmiersprache dient C/C++.
Damit dieser Code für eine Simulation geeignet ist, braucht das Software Design zwingend eine strikte Trennung zwischen hardware-spezifischem Code und nicht-hardware-spezifischem Code.
z.B. muss der Zugriff auf Microcontroller Registern zwingend in separaten Kompiliereinheiten programmiert sein. Man spricht hier von HAL (Hardware Abstraction Layer).
Diese HALs werden für die Simulation nicht verwendet. Stattdessen braucht es als Ersatz sogenannte Mocks, welche die "echten" HALs ersetzen.
Damit der "echte" embedded Code mit der Simulation kommunizieren kann, muss dieser mittels einer separaten Software an die Simulation angebunden werden.
Dies geschieht durch native C/C++ Funktionen und den HAL Mocks, welche die Schnittstelle zur Simulation abbilden.
Diese ganze Anbindung mit dem dazugehörigen Embedded Code werden als Windows DLL kompiliert und gelinkt.
Die eigentliche Simulation läuft in einer managed C# .NET Umgebung.
Dies ermöglicht alle Vorzüge einer GUI Programmierung zu nutzen. Zudem kann mittels der riesigen .NET Bibliothek auf den kompletten PC zugegriffen werden.
Beispiele
Für eine seriöse Software Entwicklung werden Unit Tests immer wichtiger. Jedoch sind Unit Tests von Embedded Software aufwendig und kostspielig.
Durch die Einbindung der embedded Software in die Visual Studio Simulation erhällt man eine Unit Testumgebung quasi kostenlos dazu.
Der eingebundene embedded Code lässt sich direkt als Unit testen und protokollieren.