26.02.2014 Aufrufe

Linux-Magazin Clean Linux (Vorschau)

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!