Eingebettetes System: Entwicklungsumgebung, Programmierung, Werkzeuge.
Die Software zur Programmentwicklung, also Compiler, Assembler und Debugger (wobei beim Debugging regelmäßig auch Hardware eingesetzt werden muss), wird in der Regel von verschiedenen Herstellern angeboten:. . Halbleiterhersteller, die am Absatz ihrer Prozessoren und Controller interessiert sind, und. Softwarefirmen, die sich auf solche Programme spezialisiert haben.. . Die Software für Embedded Systeme, die Firmware, wird in der Regel über einen Crosscompiler erzeugt. Dieser Compiler läuft auf dem Entwicklungssystem (PC-Architektur), also normalerweise einer anderen Architektur als der des Zielsystems.. Viele Crosscompiler sind nicht auf einen bestimmten Prozessor begrenzt, sondern können Maschinencode für eine ganze Prozessorfamilie erzeugen, wie ARM7, PowerPC 8xx.. Manche Hersteller bieten auch System Design Kits an, die eine Prototypenplatine mit dem entsprechenden Prozessor zusammen mit einem Satz Software Development Kit und Dokumentation zu Hard- und Software enthalten.. In zunehmendem Maße erfolgt die Softwareentwicklung für eingebettete Systeme mit Hilfe modellbasierter Entwicklung, bei der graphische Modelle des Verhaltens spezifiziert werden, welche dann mittels Codegenerierung in C-Code überführt werden.. Bevorzugte Programmiersprache ist im Allgemeinen C oder C++, aber auch für Java gibt es Ansätze wie OSGi. Assemblersprache wird dann eingesetzt, wenn zeitkritische oder Gerätetreiber-Funktionen vor allem in Interrupts programmiert werden oder wenn das Betriebssystem selbst an eine neue Umgebung bzw. CPU angepasst werden muss. Oberhalb des Betriebssystems ist Assembler eher eine Randerscheinung, in Systemen ohne Betriebssystem und vor allem bei massiven Speicherrestriktionen kommt Assembler jedoch häufiger zur Anwendung. In sicherheitskritischen Anwendungen wie bei Flugsteuerungsrechnern werden in eingebetteten Systemen auch eher exotische Sprachen wie Ada eingesetzt – man muss hier allerdings differenzieren zwischen den zeitkritischen und den sicherheitskritischen Anwendungsebenen, für die ggf. innerhalb des Systems unterschiedliche Anwendungen und Programmiersprachen verantwortlich sein können. Nicht nur in der Automobilindustrie findet häufig die sogenannte modellbasierte Entwicklung mit MATLAB/Simulink oder ASCET Anwendung. Aus den Modellen wird automatisch C-Code generiert, der wiederum für den entsprechenden Zielprozessor kompiliert wird.. Das Testen von Software für eingebettete Systeme findet oft in frühen Entwicklungsphasen auf dem PC statt. Dafür muss häufig die Umgebung der Anwendung, mit der das eingebettete System kommuniziert, simuliert werden. Diese Simulation heißt dann MiL (Model in the Loop) oder SiL (Software in the Loop). Wenn die Software auf der Zielhardware implementiert ist, spricht man dagegen von HiL (Hardware in the Loop); der Zugriff auf die Testhardware vom PC aus erfolgt dabei in der Regel über einen Hardware-Emulator.