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.

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,

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!