Zusammenspiel von Eclipse, BenchX und Lauterbach TRACE32

ARM-Debugging mit Hardware-Probe und passendem Eclipse-Plug-in

7. Juli 2010, 10:58 Uhr | John A. Carbone
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Debuggen einer Embedded-Applikation

BenchX Project Explorer
Das Project Explorer-Fenster.
© Express Logic

Nach dieser Beschreibung der Eclipse-Ursprünge und der nachgerüsteten Embedded-spezifischen Ergänzungen soll nun an einem Beispiel beschrieben werden, wie ein Entwickler diese Embedded-spezifisch aufgerüstete IDE nutzen kann, um ein einfaches Applikationsprogramm zu erstellen und mit dem Lauterbach-TRACE32 zu debuggen.

Hierzu ruft der Anwender zunächst den Workspace-Launcher-Dialog auf. Ein Eclipse-Workspace ist im Prinzip ein Unterverzeichnis, in dem die Dateien für eine Reihe von Projekten abgelegt werden. Der Inhalt der ausgewählten Datei hello_world.c wird im hello_world.c-Quellcodefenster dargestellt, in dem die gesamte Editierung des Quellcodes erfolgt. In diesem Stadium ist der Workspace Simple_Hello_World geöffnet und für das Erstellen eines Programms bereit. In der BenchX-Perspektive erfolgt dies durch Anklicken des Buttons ‚Build Project‘ (siehe Bild 5).

Das Anklicken dieses Buttons bewirkt, dass die zum Projekt hello_world_demo gehörenden Assembler- und C-Files erstellt werden, wobei die Voreinstellungen von Compiler und Linker verwendet werden, sofern der Entwickler nicht vor dem Build eigene Einstellungen gewählt hat. Dieses mit einem Klick erfolgende Erstellen eines Projekts ist bei der Embedded-Entwicklung üblich und wiederholt sich nach jeder Iteration, in der das Programm geändert wurde. Aus diesem Grund ist es wichtig, diesen Arbeitsgang möglichst einfach zu halten und auf einen Klick zu reduzieren. An dieser Stelle wird die standardmäßige Hello-World-Demonstration erstellt. Das Resultat ist eine ausführbare Datei, die für die Verarbeitung und das Debugging bereit ist.

Verarbeiten und Debuggen ausführbarer Images

Zum Verarbeiten eines Programms muss BenchX an ein Zielsystem angeschlossen werden. Die Target-Verbindung gibt an, wohin das ausführbare Image heruntergeladen werden muss und wo es ausgeführt und dem Debugging unterzogen wird. Es gibt im Wesentlichen zwei Arten von Target-Verbindungen: Simulator und Hardware-Probe. Eine Simulator-Verbindung dient zum Verarbeiten und Debuggen eines Image auf einem Software-Simulator, der auf dem Entwicklungsrechner läuft. Eine Hardware-Probe-Verbindung dagegen erleichtert das Verarbeiten und Debuggen einer ausführbaren Image-Datei auf einem Board, das mithilfe der spezifizierten Probe angeschlossen ist – in diesem Fall mit dem Lauterbach-TRACE32.

passend zum Thema

TRACE32 Auswahlfenster
Auswahl von TRACE32 als Verbindung zum Zielsystem.
© Express Logic

Bild 6 zeigt das Selektieren der »Lauterbach TRACE32 Probe« mitsamt den zugehörigen Optionen. Alternativ könnte der Anwender den »QUEMU Emulator« (einen zur GNU-Plattform gehörenden Plattform-Simulator) mit dessen Optionen auswählen. Für die meisten Verbindungen gibt es einen Standardsatz an »Debug Options« im unteren Teil des Dialogs unter anderem mit folgenden Elementen:

  • Platform Initialization Script
  • Connect Only
  • Load Program Symbols Only
  • Verify Downloaded Image
  • Stop in »main«

Breakpoints: Sichten von Programmelementen

Zum Setzen und Löschen von Breakpoints reicht ein Doppelklick auf den linken Rand des Source-Fensters. Während das Management der Breakpoints durch den TRACE32 erfolgt, werden sie einfach über die Eclipse GUI gesetzt. Trifft das Programm auf einen Breakpoint, so wird es vom TRACE32 angehalten. Alle zugehörigen Register- und Daten-Views werden daraufhin an den Host hochgeladen und im Debugger-Fenster angezeigt.

Am Breakpoint können Variablen, Register, Speicher und RTOS-Kernel-Objekte eingesehen werden. Zum Sichten von Variablen muss lediglich der Tab »Variables« im View-Fenster angeklickt werden, das sich oben rechts in der BenchX-Perspektive befindet. Anschließend werden standardmäßig die lokalen Variablen mitsamt ihren Werten angezeigt. Variablen, deren Werte sich geändert haben, erscheinen in roter Farbe (Bild 7). Auch die Register des Zielprozessors können gesichtet werden. Änderungen der Registerinhalte während der Programmausführung sind ebenfalls rot markiert.

Breakpoint Variablen BenchX
Anzeige von Variablen am Breakpoint (Änderungen sind rot hervorgehoben).
© Express Logic

ThreadX Kernel-Orientierung

Während in Eclipse keine Unterstützung für ein RTOS enthalten ist, arbeiten Embedded-Entwickler in aller Regel mit einem RTOS und wünschen, dass der Debugger den jeweiligen Kernel unterstützt. Dies gibt Anwendern die Möglichkeit zum unkomplizierten Sichten von RTOS-Kernel-Objekten innerhalb ihrer Embedded-Applikationen im Debugger-Fenster. Außerdem lassen sich detaillierte Informationen über alle Kernel-Ressourcen einholen, die in der Ziel-Applikation verwendet werden. Die Anwender erhalten Zugang zu einem reichhaltigen Angebot an RTOS-Kernel-Objekten – darunter Threads, Semaphoren, Mutexe, Queues, Timer, Block  und Byte-Memory-Pools sowie Event-Flag-Gruppen. Abgesehen davon kann die IDE auch zur Entwicklung von Systemen völlig ohne RTOS genutzt werden.

Alle Informationen zur Ausführung einer Applikation unter Verwendung von ThreadX sind umgehend verfügbar. Die Auswahl von ThreadX-Objekten erfolgt über Tabs oder über den Fast-View-Button.

Das »Threads«-View bietet eine Übersicht über sämtliche Threads der ThreadX-Applikation. Für jeden Thread werden die Felder Scheduled Count, Priority, Preemption-Threshold, Time-Slice und Current State angezeigt.

John Carbone Express Logic
John A. Carbone, Vice President of Marketing von Express Logic, hatte bis zu seinem Wechsel zu Express Logic die Position des Vice President of Marketing bei Green Hills Software inne.
© Express Logic

Zusammenfassung

BenchX unterstützt die Entwicklung von Applikationen auf Basis der ARM-Architektur unter Verwendung des Debug-Probes Lauterbach TRACE32 und anderer modularer Komponenten. BenchX enthält die komplette GNU-C/C++-Cross-Compilation-Toolchain samt Simulator und Bibliotheken, die für den nativen Betrieb unter Windows gehostet sind. Der BenchX-Quellcode-Debugger ist mit der Lauterbach-TRACE32 Debug Probe für ARM integriert.

Eclipse bildet eine hervorragende Grundlage für eine IDE mit bester Eignung für Embedded-Entwickler. Mit dem Lauterbach-TRACE32 integriert, ergibt Eclipse eine leistungsstarke, erweiterbare Entwicklungs-Plattform für Embedded-Systeme.


  1. ARM-Debugging mit Hardware-Probe und passendem Eclipse-Plug-in
  2. Die Embedded-Perspektive
  3. Debuggen einer Embedded-Applikation

Lesen Sie mehr zum Thema


Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Lauterbach GmbH

Weitere Artikel zu Entwicklungswerkzeuge