Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
die den Zielcode nativ nicht ausführen<br />
können. Zum anderen sind die zur Ausführung<br />
der Entwicklungsumgebung notwendigen<br />
Ressourcen nur unzureichend<br />
vorhanden oder fehlen ganz.<br />
Ein anderes Hemmnis: Ein modernes<br />
Tablet könnte eine komplexe Entwicklungsumgebung<br />
zwar technisch problemlos<br />
ausführen, doch die Bedienoberfläche<br />
würde das Entwickeln mit den üblichen<br />
Werkzeugen sehr erschweren. Bei tiefer<br />
eingebetteten Systemen wie der Steuerung<br />
einer Waschmaschine oder eines<br />
Fahrzeugsystems ist das Problem noch<br />
deutlicher ausgeprägt: Hier halten Speicher<br />
und CPU nicht mit, ganz zu schweigen<br />
von der unzureichenden Bedienschnittstelle.<br />
Diese Faktoren machen eine sehr deutliche<br />
Trennung von Entwicklungs- und<br />
Zielsystem notwendig. Die Programmierung<br />
erfolgt auf einem leistungsfähigen<br />
Entwicklungssystem (meist einem PC),<br />
die dabei erzeugte Software wird zur<br />
Ausführung auf das Zielsystem oder ein<br />
dazu kompatibles Entwicklungsboard<br />
übertragen. Letzteres ist in der Regel<br />
etwas leistungsfähiger als das offizielle<br />
Zielsystem und verfügt über zusätzliche<br />
Schnittstellen.<br />
Integrationsfragen<br />
Unterschiedliche Prozessorarchitekturen<br />
(etwa x86 und ARM) erfordern es, statt<br />
des systemeigenen Compilers und Linkers<br />
eine Cross-Toolchain (siehe Kasten<br />
„Cross-Toolchain“) zu verwenden. Sie<br />
erzeugt ausführbare Programme für die<br />
Zielplattform, die der Entwickler auf das<br />
Embedded-Gerät kopiert. Komplexere<br />
Mobilsysteme wie Tablets oder Smartphones<br />
bringen zudem Mechanismen<br />
mit, um Software in das System zu integrieren,<br />
etwa in Form von Apps.<br />
Schlichtere Systeme, zum Beispiel die<br />
Steuergeräte eines Fahrstuhls, laden keine<br />
Software nach. Hier muss der Entwickler<br />
ein wenig mehr Aufwand betreiben, indem<br />
er ein kompiliertes Abbild des Betriebssystems,<br />
das auf dem eingebetteten<br />
System läuft, mit der neu entwickelten<br />
Software zu einem bootfähigen Image<br />
kombiniert. Dieses Image wird dann<br />
wahlweise über ein bootfähiges Medium,<br />
über das Schreiben in den Flashspeicher<br />
oder über das Netzwerk auf dem Zielsystem<br />
ausgeführt.<br />
Im Vergleich zu herkömmlichen Systemen<br />
muss der Debugger hier nicht nur<br />
aufwändigere Entwicklungsmethoden<br />
anwenden, sondern auch mit der Trennung<br />
von Entwicklungs- und Zielsystem<br />
sowie der eingeschränkten Leistungsfähigkeit<br />
des Geräts leben.<br />
Debugging via Printf<br />
Bei der einfachsten Form der Fehlersuche<br />
baut der Programmierer Textausgaben in<br />
das Programm ein, die ihn über den aktuellen<br />
Zustand während der Ausführung<br />
Embedded Debugging 09/2013<br />
Know-how<br />
www.linux-magazin.de<br />
85