Sie sind hier
E-Book

Automotive Embedded Systeme

Effizfientes Framework - Vom Design zur Implementierung

AutorJoachim Wietzke, Manh Tien Tran
VerlagSpringer-Verlag
Erscheinungsjahr2006
Seitenanzahl445 Seiten
ISBN9783540283058
FormatPDF
KopierschutzDRM
GerätePC/MAC/eReader/Tablet
Preis22,99 EUR

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und Sensorik erfordert solides Domänenwissen und umfassendes Know-how im Software-Engineering.

Das vorliegende Buch gibt eine fundierte Darstellung der softwareseitigen Implementierung dieser Komponenten innerhalb eines komplexen Frameworks.

Im ersten Teil des Buches werden wichtige Grundlagen zu Eingebetteten Systemen und den für diese Systeme charakteristischen Methoden des Software-Engineerings vermittelt. Insbesondere werden dabei die Themen Speichermanagement und Systemperformance sowie grundlegende Mechanismen von Betriebssystemen betrachtet.

Im zweiten Teil wird eine konkrete, objektorientierte Implementierung eines Frameworks dargestellt. Diese Implementierung zeigt die Umsetzung besonders effizienter Sychronisations- und Kommunikationsprozesse innerhalb einer kompakten und hochperformanten Systemarchitektur.



Herr Professor Wietzke leitet den Bereich Technische Informatik an der FH Darmstadt mit dem Schwerpunkt Eingebettete Systeme. Zuvor hat er in der Industrie bei Bosch, Blaupunkt und Harman/Becker verantwortlich im Bereich Radio/Navigationssysteme gearbeitet.

Die Infotainment-Systeme, die sich im Maybach, im Audi A8, im Porsche, im BMW 5er und 7er, in der E-Klasse und einigen anderen Luxus-Limousinen befinden, enthalten seine Navigationssysteme.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

4 Betriebssysteme

In frühen Embedded Systemen war kein Betriebssystem notwendig. Das Gerät basierte auf einer einfachen Hauptschleife, die nacheinander Bedienelemente abfragte und entsprechende Gerätefunktionen ansteuerte. Wegen zunehmender Funktionalitäten, sich ändernder Hardware-Plattformen und wegen der hohen Anforderungen an gefühlte Bedienbarkeit kam man bereits früh zur Notwendigkeit von Betriebssystemen, die eine scheinbare Parallelität erlaubten, so dass nun, wenn z.B. in einer Applikation auf eine Tastatureingabe gewartet wird, eine andere inzwischen weiterarbeiten kann. Betriebssysteme organisieren die

•  quasi parallele Abarbeitung verschiedener Prozesse oder Threads;
•  sie verwalten Hardware- und Software-Ressourcen;
•  sie kapseln und abstrahieren Hardware-Funktionen und Schnittstellen;
•  sie stellen zum Teil standardisierte Services zur Verfügung, wie z.B. Speicherverwaltung, Kommunikations-Schnittstellen, Lader, Fehlerroutinen, Synchronisations- und Kommunikationsmethoden. Im Zusammenhang mit der Framework-Diskussion im automotiven Umfeld sind gleichzeitig einige Betriebssysteme in der Diskussion. Diese Verknüpfung ist zunächst einmal unglücksselig, da die Begriffe Framework und Betriebssystem eigentlich verschiedene Schichten betreffen. Durch das Paket WinCE, das Betriebssystem und Framework fast untrennbar verbindet, kommt es zur Vermischung der Begriffe. Auch ein GUI-Builder (Graphical User Interface) wie Photon für QNX vermischt Framework und OS-Schichten.

Trotzdem sollten die weitgehend üblichen Betriebssysteme erwähnt werden.

Es sind: 
       VxWorks, das sehr erprobt und geeignet in der kleinen Multithread- Umgebung ist, für das es aber noch nicht viel Erfahrung in Multiprozess-Systemen gibt. In ähnlicher Weise ist I-Tron einzuordnen, das sehr häufig in japanischen Systemen eingesetzt wird.


Mit mächtigeren Prozessoren wie dem SH4 von Hitachi und dem Power- PC von Motorola und anderen kommen die Möglichkeit und die Forderung nach Multiprozess-OS auf. Hier greift im Moment QNX, dessen Entwicklungsumgebung (Momentics) allerdings speziell bei großen Projekten viele Schwächen haben. Die Stärken von QNX sind die Echtzeitorientierung und die POSIX-Konformität. WinCE kommt immer wieder in die Diskussion mit der Vorstellung eines Standards, genauso oft stellt sich aber auch heraus, dass die Verquickung von Framework und Betriebssystem bei WinCE von den Entwicklern nicht geliebt wird. Auch sind die Einschränkungen im Framework noch so groß, dass am Ende im Wesentlichen nur der OS-Teil genutzt und ein eigenes Framework drumherum implementiert wird. Dafür ist es dann aber zu aufwändig und teuer.

Die richtige Design-Entscheidung scheint deshalb hier zu sein, sich vom OS zu abstrahieren und mehrere Betriebssysteme zu unterstützen. Die vorgestellten Implementierungen werden deshalb in der Regel auf VxWorks, QNX und Windows lauffähig sein, dies zwingt auch wieder dazu, sich nicht zu sehr auf Spezialitäten nur eines Betriebssystems einzulassen. In späteren Kapiteln wird gezeigt, wie Programme wahlweise unter QNX, Windows und Linux laufen können, solange man sich bei der Auswahl der Betriebssystem-Mittel beschränkt. Deshalb werden wir hier auf Betriebssysteme nicht weiter eingehen, nur drei notwendige Begriffe kurz erläutern und später in den Implementierungsbeispielen von Betriebssystem-Funktionalität
Inhaltsverzeichnis
Vorwort6
Inhaltsverzeichnis8
Die Listings16
Abbildungsverzeichnis22
1 Einleitung25
Teil I Bausteine eines Embedded Frameworks29
2 Ein Infotainment-System31
2.1 Die Headunit32
2.1 Die Headunit32
2.2 Geräte/Devices im System33
2.3 Begriffsklärung: Was ist ein Framework34
2.4 Fokus unserer Framework-Betrachtungen35
3 Anforderungen an ein Embedded Automotive Framework37
3.1 Verteilte Entwicklung37
3.2 MVC, Organisationen37
3.3 Speicheranforderungen39
3.4 Startzeiten39
3.5 Menüwechselzeiten40
3.6 Konfiguration versus Dynamik40
3.7 Datenfluss/Kontrollfluss/Zustandssteuerung40
4 Betriebssysteme41
4.1 Prozesse, Tasks, Threads42
4.2 Der Scheduler43
4.2.1 Präemptive Prioritätssteuerung43
4.2.2 Round-Robin43
4.2.3 Prioritäts-Inversion, Prioritäts-Vererbung43
4.2.4 Task-Switch, Kontextwechsel44
4.3 Zusammenspiel mit der MMU44
5 Design-Rules und Konventionen45
5.1 Namenskonventionen46
5.2 Shared-Verzeichnisse, Libraries46
5.3 Eigene Definitionen im Shared46
5.3.1 Standard-Typen46
5.3.2 Alignment47
5.3.3 Little-Endian, Big-Endian48
5.3.4 Zahlengrenzen49
5.3.5 Const Definitionen49
5.3.6 Eigene Assertions50
5.3.7 Exceptions und Signale51
5.3.8 Eigene Ausgaben51
6 Speicherverwaltung53
6.1 Statische Speicherverwaltung55
6.2 Dynamische Speicherverwaltung55
6.3 Start-Up-Strategien57
6.4 Speicherbedarf und kleine Pittfalls57
6.4.1 Welche Variable wo?57
6.4.2 Alternative Strategie 1: Späte Konstruktion60
6.4.3 Alternative Strategie 2: Späte Initialisierung62
6.4.4 Alternative Strategie 3: Lokale statische Variablen63
6.4.5 Speicherort von Konstanten64
6.4.6 Speicherbedarf eines einfachen Objekts67
6.4.7 Speicherbedarf eines einfachen Objekts mit virtueller Methode68
6.4.8 Speicherbedarf eines Objekts einer abgeleiteten einfachen Klasse70
6.4.9 Speicherbedarf eines Objekts einer abgeleiteten Klasse mit virtueller Methode72
6.4.10 Speicherbedarf eines Objekts einer abgeleiteten Klasse mit virtueller Basis-Methode74
6.4.11 Mehrfachvererbung und Pittfall76
6.4.12 Speicherbedarf dynamischer Variablen79
6.4.13 Schlechte Parameterübergabe80
6.4.14 Probleme mit dem Kopierkonstruktor81
6.4.15 Probleme mit dem Zuweisungsoperator81
6.4.16 Schlechte Rückgaben81
6.4.17 Padding-Probleme83
6.4.18 Alignment-Probleme, Endian-Probleme84
6.4.19 Speicherfragmentierung84
6.4.20 Vektoren, STL85
7 Embedded Speicherkonzepte, spezielle Muster87
7.1 Statische Variablen87
7.1.1 Reihenfolge der Konstruktoren87
7.2 Quasi-statische Allokation aus festem Pufferspeicher90
7.2.1 Anlegen eines statischen Puffers91
7.2.2 Placement-new91
7.2.3 Makros zur Allokation92
7.3 Allokator94
7.3.1 Statische Allokation97
7.3.2 Dynamische Allokation mit temporärem Heap99
7.3.3 Object-Pool-Allokation102
7.4 Datencontainer106
7.5 Gemeinsam benutzte Objekte (Shared-Objects)106
7.6 Referenzzähler (reference counting)107
7.7 Garbage-Collection109
7.8 Die Captain-Oates Strategie109
7.9 Speicherlimit110
7.10 Partieller Fehler (Partial Failure)111
7.11 Fazit111
8 Prozesse und POSIX-Threads113
8.1 Prozesse114
8.1.1 Der Lebenszyklus eines Prozesses114
8.1.2 Prozesszustände115
8.1.3 Zombies116
8.1.4 Bestandteile116
8.1.5 Prozess mit fork erzeugen117
8.1.6 Prozess mit exec erzeugen118
8.1.7 Prozess mit spawn erzeugen120
8.1.8 Prozessvererbung121
8.1.9 Prozessattribute121
8.1.10 Über Prozessgrenzen hinweg122
8.2 Threads123
8.2.1 Erzeugung von POSIX-Threads123
8.2.2 Allgemeine Gestaltung eines Threads in eingebetteten Anwendungen124
8.2.3 Thread-Attribute125
8.2.4 Über Threadgrenzen hinweg128
8.2.5 Thread-spezifische Daten130
8.2.6 Thread-Träger und Thread-Objekte132
8.3 Designentscheidung142
9 Inter-Prozess-Kommunikationskanäle, IPC145
9.1 Pipe145
9.2 FIFO, Named-Pipe149
9.3 Socket, local149
9.4 Socket-Verbindung zwischen Prozessoren151
9.5 Message-Queues158
9.5.1 System V Message-Queues158
9.5.2 POSIX Message-Queues158
9.6 QNX-Message161
9.7 Shared-Memory161
9.8 Shared-Memory gegen Überschreiben sch utzen168
9.9 Zeitverhalten173
9.10 Designentscheidung und prinzipielle Implementierung174
10 Gemeinsame Nutzung von Code175
10.1 DLLs175
10.2 Shared-Code175
10.3 Designentscheidung und prinzipielle Implementierung176
11 Synchronisierungsmechanismen für Prozesse und Threads177
11.1 Semaphore177
11.2 Unbenannter Semaphor181
11.3 Benannter Semaphor184
11.4 Mutex, rekursiver Mutex185
11.5 Mutex-Guard191
11.6 Signale192
11.7 Bedingungsvariablen (Condition Variables)192
11.8 Zeitverhalten201
11.9 Deadlock, Livelock und Prioritätsinversion201
11.10 Zusammenfassung206
12 Kommunikation per Events207
12.1 Wichtige Event-Typen208
12.1.1 Signal-Events208
12.1.2 Events mit Cookies209
12.1.3 Call-Events209
12.1.4 Timer-Events209
12.1.5 Change-Events (Notifikation - Das Hollywood-Prinzip)210
12.2 Realisierungen von Events210
12.2.1 Einfache Events210
12.2.2 C-Strukturen211
12.2.3 Funktionszeiger213
12.2.4 Event-Klassen und Objekte214
12.2.5 Zeiger auf Event-Objekte verschicken216
12.2.6 Events am Beispiel von MOST219
12.3 Designentscheidung und prinzipielle Implementierung220
13 Event-Verarbeitung221
13.1 Queues221
13.1.1 Externe Queue223
13.1.2 Interne Queue228
13.1.3 System-Queue229
13.1.4 Queue mit verbesserter Inversions-Eigenschaft229
13.2 Dispatcher235
13.2.1 Der System-Dispatcher235
13.2.2 Der lokale Dispatcher236
13.2.3 Signalisation im Dispatcher237
13.2.4 Registrierung im Dispatcher237
13.3 Synchrone Events238
14 Zustandsautomaten239
14.1 Motivation239
14.2 Kommunikation240
14.3 Automaten241
14.4 Statechart-Elemente241
14.5 Probleme mit Statecharts und Ersatzl osungen245
14.6 Implementierung dynamischen Verhaltens247
14.6.1 Definition der Events248
14.6.2 Implementierung der Aktionen249
14.7 Implementierung der Statecharts250
14.7.1 Implementierung durch Aufzählung für Zustände und Unterzustände250
14.7.2 Zustandsmuster (State-Pattern)255
14.7.3 Verbesserte Aufzählungsmethode264
14.8 Implementierung nach Samek270
15 Externer Kommunikationskanal: MOST-Bus277
15.1 Der synchrone Kanal278
15.2 Der asynchrone Kanal279
15.3 Der Kontrollkanal279
15.4 Geräte/Devices im Framework279
15.4.1 Logische Geräte, Modelle281
15.4.2 Methoden282
15.4.3 Properties282
15.4.4 MOST-Adressierung283
15.4.5 Adressierungsbeispiele289
15.4.6 MOST-Events, prinzipielle Dekodierung des Headers290
15.4.7 MOST-Events, prinzipielle Dekodierung der Daten292
15.4.8 MOST-Konstanten293
15.4.9 MOST-Probleme295
Teil II Das Framework298
16 Das Framework299
17 OS-Grundmechanismen301
18 Komponentenarchitektur303
18.1 Event-Handler und Event-Formate305
18.2 Implementierung von Schnittstellen, Proxy und Handler309
18.3 Komponentenarchitektur311
18.3.1 Komponentenkontext und Daten im Shared-Memory312
18.3.2 Erzeugung der Kontexte319
18.3.3 Main-/Admin-Task324
18.3.4 Signale, Mechanismen über den Kontext326
18.3.5 Komponenten-Dispatcher332
18.3.6 Softtimer und Timer-Manager334
18.3.7 Registrierung342
18.3.8 Die Basisklasse AComponentBase und das Zusammenspiel mit der Umgebung343
18.4 Zusammenfassung351
19 Main-Dispatcher-Komponente355
19.1 Dispatcher-Receiver355
19.2 Dispatcher-Main-Thread360
20 Modell-Komponenten, logische Geräte365
20.1 Aufgaben des logischen Geräts366
20.2 Was erwartet die HMI von einem logischen Gerät?367
20.3 Zustände des Geräts369
20.4 Gültigkeit der Daten370
20.5 Kommunikationsanforderung371
20.6 Struktur eines logischen Geräts371
20.7 Datencontainer versus Event-Prinzip371
20.8 Architektur eines Datencontainers373
20.8.1 Struktur des Datencontainers374
20.8.2 Lesezugriffe der HMI380
20.8.3 Versenden eines HMI-Befehls381
20.8.4 Menge der erlaubten High-Level-Aktionen382
20.8.5 Abstrakte Klasse ADataContainerAccessor383
20.9 MOST-Codec387
20.9.1 Vorbereitung387
20.9.2 Einfache Implementierung eines MOST-Decoders391
20.9.3 Objektorientierter Ansatz394
20.9.4 Objekte zur Kompilierzeit396
20.9.5 Konstante Objekte zur Dekodierung der MOST-Nachrichten398
20.10 Zusammenfassung411
21 HMI-Komponente413
22 Persistenz-Controller und On/Off-Konzepte415
23 Codegenerierung419
23.1 Erstellen der XML-Eingabe-Dateien419
23.2 Erzeugen des Quellcodes421
23.3 Übersicht der erzeugten Dateien422
23.4 Übersetzen des Quellcodes428
24 Sonstige Aspekte429
24.1 Internes non-MOST-Device, Beispiel Mediaplayer429
24.2 Internes MOST-Device, Beispiel Tastatur429
24.3 Treiber im Framework430
24.4 Einfaches Debugging-Konzept430
24.5 Überlastverhalten des Systems432
24.6 Anmerkungen zur Komplexität und zum Testing433
25 Anhang435
25.1 Timer und Zeitmessung436
25.1.2 Timeout438
25.2 Socket438
25.2.1 InetAddr438
25.2.2 CSockAcceptor439
25.2.3 CSockConnector442
25.2.4 CSockStream444
25.3 Keyboard446
25.4 Shared-Memory448
25.5 CBinarySemaphore456
25.6 Extern const463
Literatur465
Index467

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

Baumarkt

Baumarkt

Baumarkt enthält eine ausführliche jährliche Konjunkturanalyse des deutschen Baumarktes und stellt die wichtigsten Ergebnisse des abgelaufenen Baujahres in vielen Zahlen und Fakten zusammen. Auf ...

Berufsstart Bewerbung

Berufsstart Bewerbung

»Berufsstart Bewerbung« erscheint jährlich zum Wintersemester im November mit einer Auflage von 50.000 Exemplaren und ermöglicht Unternehmen sich bei Studenten und Absolventen mit einer ...

bank und markt

bank und markt

Zeitschrift für Banking - die führende Fachzeitschrift für den Markt und Wettbewerb der Finanzdienstleister, erscheint seit 1972 monatlich. Leitthemen Absatz und Akquise im Multichannel ...

CE-Markt

CE-Markt

CE-Markt ist Pflichtlektüre in der Unterhaltungselektronik-Branche. Die Vermarktung von Home und Mobile Electronics mit den besten Verkaufsargumenten und Verkaufsstrategien gehören ebenso zum ...

dima

dima

Bau und Einsatz von Werkzeugmaschinen für spangebende und spanlose sowie abtragende und umformende Fertigungsverfahren. dima - die maschine - bietet als Fachzeitschrift die Kommunikationsplattform ...

building & automation

building & automation

Das Fachmagazin building & automation bietet dem Elektrohandwerker und Elektroplaner eine umfassende Übersicht über alle Produktneuheiten aus der Gebäudeautomation, der Installationstechnik, dem ...