Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Know-how<br />
www.linux-magazin.de Embedded Debugging 09/2013<br />
88<br />
Abbildung 3: Der JTAG-Debug-Server baut eine Brücke zwischen der JTAG-Schnittstelle und dem Debugger<br />
auf dem Entwicklungssystem. Anschließend folgt der Entwickler dem bekannten Remote-Debugging-Schema.<br />
JTAG kann der Entwickler die Software<br />
ab der ersten ausgeführten Instruktion<br />
beobachten, benötigt aber keine zusätzliche<br />
Hardware (Abbildung 4).<br />
Genauer gesagt benötigt er theoretisch<br />
nicht einmal Zugriff auf ein physisches<br />
Exemplar des Zielsystems. Da die Emulation<br />
jedoch nicht hundertprozentig so<br />
funktioniert wie die echte Hardware, lässt<br />
sich eine spätere Ausführung auf einem<br />
realen Gerät meist nicht umgehen. Dies<br />
ist insbesondere dann der Fall, wenn man<br />
das Zeitverhalten des Zielsystems untersuchen<br />
möchte.<br />
Eines für alle<br />
Die meisten ARM-basierten SoC-Systeme<br />
unterscheiden sich signifikant im Aufbau,<br />
da ARM keine festen Vorgaben in Sachen<br />
I/O-Geräte oder Speicherlayout macht.<br />
Die Geräte des System-on-Chip lassen<br />
sich etwa über verschiedene Speicheradressen<br />
ansprechen, RAM, ROM und<br />
Flashspeicher befinden sich an unterschiedlichen<br />
Adressen. Bei der Portierung<br />
liegen zwar meist Treiber für die Geräte<br />
vor, da sie häufig bereits von anderen<br />
SoCs bekannt sind, dennoch muss der<br />
Entwickler die Systemsoftware an die andere<br />
Speicherstruktur anpassen.<br />
Für ARM-Systeme weist Qemu beim Entwickeln<br />
von Systemsoftware noch weitere<br />
Vorteile auf, die das Portieren von <strong>Linux</strong><br />
auf neue ARM-Plattformen erleichtern.<br />
So lassen sich in Qemu mit geringem<br />
Programmieraufwand beliebige Speicherlayouts<br />
emulieren, sodass sich der<br />
Programmierer von einer bestehenden<br />
lauffähigen Plattform Schritt für Schritt<br />
zur neuen Plattform bewegen kann. Die<br />
Remote-Debugging-Technik hilft ihm<br />
dabei, die Veränderungen komfortabel<br />
zu verfolgen, was Portierungen massiv<br />
beschleunigt.<br />
Die Außenwelt<br />
Abseits der Suche nach logischen Fehlern<br />
im Programmablauf verstecken sich<br />
im Embedded-Bereich auch Fehler in der<br />
Ansteuerung externer Geräte, die häufig<br />
an Standardschnittstellen wie RS232, I 2 C<br />
oder SPI hängen. Um diese Signale zu<br />
untersuchen, lassen sich so genannte Logic<br />
Analyzer nutzen, welche die Signale<br />
aufzeichnen und die übertragenen Daten<br />
am Entwicklungsrechner anzeigen. Der<br />
Funktionsumfang und die Genauigkeit<br />
der Analyzer ist sehr unterschiedlich und<br />
hängt vom Preis ab. Günstige Geräte wie<br />
etwa den Bus Pirate [3] gibt es bereits für<br />
rund 25 Euro.<br />
Debuggen wie die Profis<br />
tungen erweitern, die das Überwachen<br />
und Beobachten vereinfachen.<br />
Fazit<br />
Obwohl es also auf den ersten Blick komplex<br />
erscheint, bietet das Debugging von<br />
eingebetteten Systemen insgesamt eine<br />
Vielzahl von Lösungsansätzen, zwischen<br />
denen der Entwickler, abhängig von Bedarf<br />
und Zielplattform, auswählt.<br />
Der im Gegensatz zu Standardsystemen<br />
erhöhte Aufwand, den die Trennung von<br />
Entwicklungs- und Zielsystem sowie die<br />
stark eingeschränkten Ressourcen eingebetteter<br />
Systeme verursachen, verbergen<br />
die hier vorgestellten Ansätze meist vor<br />
dem Entwickler. Der Arbeitsablauf unterscheidet<br />
sich bei einer entsprechend<br />
eingerichteten Entwicklungsumgebung<br />
kaum vom Üblichen. (kki) n<br />
Infos<br />
[1] GDB: [http://www.gnu.org/software/gdb/]<br />
[2] Security für ARM: [http://infocenter.arm.<br />
com/help/index.jsp?topic=/com.arm.doc.<br />
prd29-genc-009492c/index.html]<br />
[3] Wikipedia über den Bus-Piraten:<br />
[http://en.wikipedia.org/wiki/Bus_Pirate]<br />
Die Autoren<br />
Anselm Busse ist wissenschaftlicher Mitarbeiter<br />
und Doktorand am Fachgebiet Kommunikationsund<br />
Betriebssysteme an der Technischen Universität<br />
Berlin. Jan Richling ist dort Gastprofessor<br />
für Betriebssysteme und eingebettete Systeme.<br />
Ihr Forschungsschwerpunkt liegt unter anderem<br />
in der Steigerung der Energieeffizienz von Many-<br />
Core-Systemen.<br />
Qemu<br />
Ausführung<br />
Im Profibereich, besonders beim Systemon-Chip-Design,<br />
stehen dem Entwickler<br />
noch weitere Werkzeuge zur Seite. So<br />
zeichnen digitale Speicher-Oszilloskope<br />
den<br />
Zugriff auf externen<br />
Speicher sowie andere<br />
Signale mit einer sehr<br />
hohen Genauigkeit<br />
auf. Da die Entwickler<br />
zudem Zugriff auf exakte<br />
Beschreibungen<br />
ARMder<br />
Chips haben, lässt<br />
Binary<br />
*.c<br />
sich das Ausführen<br />
von Programmen vollständig<br />
im Rechner<br />
Cross-GDB<br />
simulieren. Daneben<br />
kann ein Entwickler<br />
den Chip im Prototyp-<br />
Stadium um Steuerlei-<br />
GDB-<br />
Interface<br />
ARM-<br />
Binary<br />
*.c<br />
Abbildung 4: Mit Qemu, das komplette Systeme emuliert, lassen sich auch<br />
ARM-Systeme ähnlich wie mit JTAG debuggen.