Vorwort | 6 |
Inhaltsverzeichnis | 10 |
1 Einleitung | 14 |
1.1 Motivation | 14 |
1.2 Klassifikation, Charakteristika | 16 |
1.3 Anwendungen, Beispiele und Branchen | 19 |
1.4 Begriffsdefinitionen | 21 |
1.5 Logischer Aufbau eingebetteter Systeme | 23 |
1.5.1 Kontrolleinheit | 25 |
1.5.2 Regelstrecke | 28 |
1.5.2.1 Peripherie | 29 |
1.5.2.2 Digital/Analog-Wandler | 30 |
1.5.2.3 Analog/-Digital-Wandler | 31 |
1.5.2.4 Sensoren | 32 |
1.5.2.5 Aktuatoren | 34 |
1.5.3 Benutzerschnittstelle | 34 |
1.6 Softwareentwicklung eingebetteter Systeme | 35 |
1.6.1 Motivation | 35 |
1.6.2 Begriffsklärung | 36 |
1.6.3 Entwurf | 36 |
1.7 Besondere Herausforderungen | 37 |
1.8 Zusammenfassung | 38 |
2 Nebenläufige Systeme | 40 |
2.1 Einführung | 41 |
2.1.1 Multitasking | 42 |
2.1.2 Multithreading | 42 |
2.1.3 Prozesssynchronisation und -kommunikation | 44 |
2.2 Grundlegende Modelle für die Nebenläufigkeit | 45 |
2.3 Verteilte Systeme | 47 |
3 Echtzeit, Echtzeitsysteme, Echtzeitbetriebssysteme | 52 |
3.1 Echtzeitsysteme | 52 |
3.2 Ereignissteuerung versus Zeitsteuerung | 54 |
3.3 Echtzeitbetriebssysteme | 55 |
3.3.1 Aufbau und Aufgaben von Betriebssystemen | 56 |
3.3.2 Betriebssystemarchitekturen | 57 |
3.3.3 Echtzeitfähige Betriebssysteme | 58 |
3.3.4 Zeitgeber und Zugriffsebenen auf Zeit | 63 |
3.3.5 Prozesse | 66 |
3.3.6 Multitasking und Scheduling | 67 |
3.3.7 Scheduling in Echtzeitbetriebssystemen | 70 |
3.3.8 Speicherverwaltung | 72 |
3.4 VxWorks als Beispiel eines Echtzeitbetriebssystems | 74 |
3.4.1 Das Laufzeitsystem | 76 |
3.4.2 Exkurs: Der POSIX Standard | 76 |
3.4.3 Das I/O-Subsystem von VxWorks | 77 |
3.4.4 Unterstützung verteilter Systeme in VxWorks | 77 |
3.4.5 VxWorks Entwicklungswerkzeuge | 77 |
3.5 Weitere Beispiele eingebetteter Betriebssysteme | 79 |
3.5.1 Symbian OS | 80 |
3.5.2 Palm OS | 81 |
3.5.3 Windows CE | 82 |
3.5.4 QNX | 83 |
3.5.5 Embedded Linux | 85 |
3.6 Zusammenfassung | 86 |
4 Programmierung eingebetteter Systeme | 88 |
4.1 Der Einsatz von C/C++ für eingebettete Systeme | 90 |
4.2 Embedded C++ | 91 |
4.2.1 Einschränkung: Das Schlüsselwort „mutable“ | 93 |
4.2.2 Einschränkung: Ausnahmebehandlung | 93 |
4.2.3 Typidentifikation zur Laufzeit | 94 |
4.2.4 Namenskonflikte | 94 |
4.2.5 Templates | 94 |
4.2.6 Mehrfachvererbung und virtuelle Vererbung | 94 |
4.2.7 Bibliotheken | 95 |
4.2.8 EC++ Styleguide | 95 |
4.3 Der Einsatz von Java für eingebettete Systeme | 96 |
4.3.1 Java 1 | 98 |
4.3.1.1 Personal Java | 98 |
4.3.1.2 Embedded Java | 99 |
4.3.2 Java 2 (J2ME) | 100 |
4.3.2.1 Connected Device Configuration (CDC) | 101 |
4.3.2.2 Connected Limited Device Configuration (CLDC) | 102 |
4.3.3 JavaCard | 103 |
4.3.4 Echtzeiterweiterungen für Java | 106 |
4.3.4.1 Real- Time Core Erweiterung | 108 |
4.3.4.2 Real Time Specification for Java (RTSJ) | 108 |
4.4 Synchrone Sprachen | 111 |
4.5 Ereignisbasierter Ansatz am Beispiel von Esterel | 112 |
4.5.1 Historie | 113 |
4.5.2 Hypothese der perfekten Synchronie | 113 |
4.5.3 Determinismus | 117 |
4.5.4 Allgemeines | 118 |
4.5.5 Parallelität | 119 |
4.5.6 Deklarationen | 119 |
4.5.7 Instruktionen | 122 |
4.5.8 Beispiel: Die sogenannte ABRO-Spezifikation | 124 |
4.5.9 Semantik | 124 |
4.5.10 Kausalitätsprobleme | 125 |
4.5.10.1 Logische Korrektheit | 126 |
4.5.10.2 Konstruktive Semantik | 128 |
4.5.11 Codegenerierung und Werkzeuge | 129 |
4.6 Synchrone Datenflusssprachen am Beispiel von Lustre | 131 |
4.6.1 Datenfluss und Clocks | 132 |
4.6.2 Variablen, Konstanten und Gleichungen | 133 |
4.6.3 Operatoren und Programmstruktur | 133 |
4.6.4 Assertions (Zusicherungen) | 135 |
4.6.5 Compilation | 135 |
4.6.6 Verifikation und automatisches Testen | 137 |
4.6.7 Lustre im Vergleich zu Signal | 138 |
4.7 Zeitgesteuerter Ansatz am Beispiel von Giotto | 138 |
4.8 Zusammenfassung | 149 |
5 Softwareentwurf eingebetteter Systeme | 152 |
5.1 Modellierung eingebetteter Systeme | 153 |
5.2 Formale Methoden | 154 |
5.3 Statecharts | 155 |
5.4 Die Unified Modeling Language (UML) | 158 |
5.5 Der Ansatz ROOM | 164 |
5.5.1 Softwarewerkzeuge und Umgebung | 164 |
5.5.2 Einführung | 165 |
5.5.3 Echtzeitfähigkeit | 167 |
5.6 Hardware/Software-Codesign | 168 |
5.7 Die MARMOT-Methode | 174 |
5.8 Hybride Systeme und hybride Automaten | 177 |
5.8.1 Einleitung | 177 |
5.8.2 Spezifikation hybrider Systeme | 180 |
5.9 Zusammenfassung | 184 |
6 Softwarequalität eingebetteter Systeme | 186 |
6.1 Motivation | 186 |
6.2 Begriffe | 187 |
6.3 Zuverlässigkeit eingebetteter Systeme | 191 |
6.3.1 Konstruktive Maßnahmen | 195 |
6.3.1.1 Einsatz redundanter Hardware | 195 |
6.3.1.2 Einsatz redundanter Software | 196 |
6.3.2 Analytische Verfahren | 197 |
6.3.3 Stochastische Abhängigkeit | 199 |
6.3.4 Gefahrenanalyse | 199 |
6.4 Sicherheit eingebetteter Systeme | 201 |
6.4.1 Testen | 203 |
6.4.1.1 Überblick | 203 |
6.4.1.2 Ausgewählte Testverfahren | 204 |
6.4.2 Manuelle Prüftechniken | 208 |
6.4.3 Formale Verifikation | 209 |
6.5 Zusammenfassung | 212 |
7 Vorgehensmodelle und Standards der Entwicklung | 214 |
7.1 Das Wasserfall-Modell | 214 |
7.2 Das V-Modell | 215 |
7.3 Das V-Modell XT | 218 |
7.3.1 Grundlagen | 219 |
7.3.2 Anwendung des V-Modell XT | 220 |
7.3.3 Zielsetzung und Aufbau des V-Modell XT | 221 |
7.3.3.1 V- Modell XT als Weiterentwicklung des V-Modells 97 | 222 |
7.3.3.2 Zielsetzung des V-Modells XT | 223 |
7.3.3.3 Grenzen des V-Modells XT | 223 |
7.3.4 V-Modell XT Produktvorlagen | 224 |
7.3.5 V-Modell XT Werkzeuge | 224 |
7.3.5.1 Der V- Modell XT Projektassistent | 225 |
7.3.5.2 V- Modell XT Editors | 225 |
7.4 Die ROPES-Methode | 225 |
7.5 Der OSEK-Standard | 226 |
7.6 AUTOSAR | 228 |
7.7 Zusammenfassung | 230 |
8 Schlussbemerkungen | 232 |
Literaturverzeichnis | 236 |
Sachverzeichnis | 242 |