Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Know-how<br />
www.linux-magazin.de Embedded Debugging 09/2013<br />
84<br />
Fehlersuche auf Embedded-Systemen<br />
Auf der Jagd<br />
Auf der Pirsch nach Fehlern verlangen eingebettete Systeme dem Entwickler etwas mehr Einsatz ab als gewöhnliche<br />
PCs. Gut also, wenn der Bug-Jäger die verschiedenen Techniken kennt. Anselm Busse, Jan Richling<br />
ausführung zu gewährleisten, erhöhen<br />
allerdings aufgrund eines erweiterten<br />
Hardware-Aufbaus den Aufwand.<br />
Eine dritte Variante von Debugging-Ansätzen<br />
basiert auf Emulation. Diese bietet<br />
einem Entwickler zwar große Flexibilität<br />
bei der Arbeit, jedoch zu dem Preis,<br />
dass die Emulation häufig nicht zu 100<br />
Prozent mit der real existierenden Hardware<br />
übereinstimmt. Potenziell kann es<br />
daher zu nicht vorhersehbaren Fehlern<br />
kommen.<br />
© Barbara Reddoch, 123RF.com<br />
Smartphones, Waschmaschinen, LCD-<br />
TVs, Router, Industriesteuerungen, Digitaluhren<br />
und Raspberry Pi haben gemeinsam,<br />
dass sie statt eines x86-Prozessors<br />
ein System-on-Chip mit einem oder mehreren<br />
ARM-Kernen in sich tragen. Ihre<br />
Bedien- und Kommunikations-Schnittstellen<br />
sind deutlich eingeschränkt, was<br />
sich nicht nur auf die Handhabung auswirkt,<br />
sondern auch auf die Software-Entwicklung<br />
und die damit einhergehende<br />
Fehlersuche, die dieser Artikel besonders<br />
beleuchtet. Zwar stehen ARM-Systeme<br />
im Fokus, doch ist das Vorgehen prozessorunabhängig<br />
und gilt für die meisten<br />
eingebetteten Geräte.<br />
Generell fallen Software und Hardware,<br />
die der Embedded-Entwickler üblicherweise<br />
ins Visier nimmt, höchst unterschiedlich<br />
aus: Während Tablets in ihrer<br />
Ausstattung herkömmlichen PCs ähneln,<br />
besitzt die Steuerungshardware einer<br />
Waschmaschine weder die für das gewohnte<br />
Debugging notwendigen Schnittstellen<br />
noch eine ausreichende Rechenleistung<br />
oder Software-Unterstützung.<br />
Kein Wunder also, dass sich die Ansätze<br />
beim Debuggen unterscheiden und von<br />
der Beschaffenheit der eingebetteten Geräte<br />
abhängen.<br />
Debug im Dreierpack<br />
Grundsätzlich fallen die Debugging-<br />
Ansätze im eingebetteten Bereich unter<br />
drei Kategorien, die alle ihre Vor- und<br />
Nachteile besitzen. In die erste Kategorie<br />
gehören jene Methoden, die bestehende<br />
Debugging-Techniken einfach auf<br />
die eingebetteten Systeme ausdehnen.<br />
Diese können auch Entwickler mit wenig<br />
Erfahrung im eingebetteten Bereich<br />
nutzen. Der Nachteil: Sie sind sehr restriktiv<br />
hinsichtlich der Software auf dem<br />
Zielsystem.<br />
Die zweite Kategorie von Techniken setzt<br />
zusätzliche Hardwareschnittstellen voraus,<br />
die vornehmlich dem Debugging dienen.<br />
Sie besitzen den Vorteil, die größtmögliche<br />
Kontrolle bei der Programm-<br />
Native Entwicklung<br />
Die Fehlersuche lehnt sich in der Regel<br />
eng an die eigentliche Entwicklung von<br />
Software an. Diese unterscheidet sich<br />
bei eingebetteten Systemen erheblich<br />
von dem, was bei Desktop- oder Serversystemen<br />
sonst üblich ist. Wer Software<br />
für solche klassischen Systeme entwickelt,<br />
greift heute in den meisten Fällen<br />
auf einen Entwicklungsrechner zurück,<br />
der häufig besser ausgestattet ist als die<br />
Systeme, auf denen die Software später<br />
laufen soll.<br />
Theoretisch ließe sich die Entwicklung<br />
auch auf dem Produktionssystem selbst<br />
vornehmen, weil die Hardware in der<br />
Lage ist, die Entwicklungsumgebung mitsamt<br />
Benutzeroberfläche auszuführen. In<br />
beiden Fällen ist das Testen der Software<br />
sehr einfach, weil der Entwickler die Fehlersuche<br />
auf demselben System erledigt.<br />
Cross-Entwicklung<br />
Bei eingebetteten Systemen funktioniert<br />
dieser Ansatz nur selten. Zum einen verfügen<br />
die Zielsysteme oft über andere<br />
Prozessoren, zum Beispiel ARM, während<br />
als Entwicklungsmaschinen üblicherweise<br />
PCs mit x86-Prozessor dienen,