Schwerpunkte

Praxistest Debug&Trace

Auf Spurensuche

28. September 2018, 11:02 Uhr   |  Dr. Constantin Tomaras, Ressortredakteur für Systemdesign, DESIGN&ELEKTRONIK


Fortsetzung des Artikels von Teil 2 .

Debug- & Tracefunktionen

Nach erfolgreicher Installation auf dem Laborrechner muss mit dem Zielsystem verbunden und gegebenenfalls der Sourcecode importiert werden. Alle außer PowerView zeigen beim Start eine Ordnerstruktur zur Wahl des Zielsystems. Bei PowerView muss dazu im mittleren CPU-Menü die Parametrierkarte Systemsettings aufgerufen werden. Die Fettschrift im Menü kennzeichnet wichtige Parametrierdialoge.

In der uVision geht bereits die Codeerstellung und Kompilierung voran; hier wird mit jedem neuen Arbeitsplatz ein Zielsystem angegeben.

Die Konfiguration des Trace-Kanals liegt innerhalb der Werkzeuge an unterschiedlicher Stelle: uVision zeigt diese Parametrierkarte vor dem Debugging unter der Flash-Konfiguration, die UDE im Konfigurationsmenü Target-Konfiguration, Ozone im Config-Menü und PowerView hat sie auf unterschiedliche Karten im Trace-Menü verteilt. Eine arm-gerechte Event-Konfigurationskarte zeigt nur uVision (Bild 3) und die UDE, beim Cortex-M-Produkt J-Trace ist sie vermutlich gar nicht nötig. Wer in der uVision im Debugging die Trace-Konfiguration verändern möchte, muss zurück zur Programmierumgebung.

Bild 3: Parametrierung der Trace-Aufzeichnung für den Cortex-M7 in arm uVision.
© DESIGN&ELEKTRONIK

Bild 3: Parametrierung der Trace-Aufzeichnung für den Cortex-M7 in arm uVision.

Für den Testcontroller STM32F779NI haben allerdings nur uVision und Ozone eine funktionstüchtige Trace-Konfiguration integriert, in PowerView und UDE müssen die korrekten Parameter noch händisch nachgetragen werden. PowerView hat dazu eine Parametrierkarte, die UDE ein Textfeld. Mit der starken Skriptzentrierung im PowerView könnte auch direkt ein Konfigurationsskript ausgeführt werden, lauterbach.com stellt dafür ein Skriptarchiv (STM32F779NI fehlt, STM32F7526 geht).

Source-Import und -Anzeige tragen bei uVision und Ozone das View-Menü, UDE das File-Menü. Bei PowerView werden Source/Degbuginfos aus der Kommandozeile geladen, danach sind die Source-Dateien über den Eintrag im View-Menü darstellbar.

Ausführung und Haltepunkte

Alle Hersteller bieten dieselben Basisfunktionen, Ausführung bis zum nächsten Haltepunkt, Einzelschrittausführung, Ausführung zu Beginn eines Unterprogramms, Ausführung nach dem Verlassen eines Unterprogramms.

Steuerung der Ausführung und HaltepunkteLetztendlich sind das die Elementarschritte zur Navigation durch ein Baumdiagramm. Alle sortieren diese Steuerung in das Debug-Menü, das bei PowerView Run heißt. Insbesondere PowerView [6] und Ozone [7] zeigen im jeweiligen Handbuch, wie mit der Befehlszeile über diese Elementarschritte hinaus navigiert werden kann.

Auch das Setzen von Haltepunkten geschieht in den Tools ähnlich, direkt mit dem Mauszeiger an die Adressleiste/Codezeile/ein Symbol oder verallgemeinert mit einer Parameterierkarte aus dem Menü. Bei uVision und Ozone diesmal aus dem View-Menü, UDE sortiert es unter Debug und PowerView in sein Variablenkonfigurationsmenü Var ein.

Haltepunkte können in allen Werkzeugen an Codezeilen, Adressen, Instruktionen oder Bedingungen gesetzt werden. Am Haltepunkt kann eine erneute Ausführung erfolgen oder der Systemzustand evaluiert werden. Unterschieden wird zwischen Hard- und Softwarehaltepunkten, also solchen mit direkter CPU-Schnittstelle oder jenen die der Debugger durch Programmmodifikation setzt.

Ozone / J-Trace Pro und PowerView / μTrace können Haltepunkte neben RAM auch in den Flashspeicher schreiben.

Die größte Konfigurationsmöglichkeit finden wir im PowerView, in den anderen Tools jeweils ein Eingabefenster für die Bedingung in Hoch- oder Assemblersprache. Zum Setzen eines komplexeren Haltepunkts muss womöglich auf die unterliegende Consolenebene zurückgegriffen werden. Tabelle 6 listet die Haltepunktimplementierung der jeweiligen Tools.

 HardwareSoftwareBedingungsabhängigAuslösen einer FunktionULink plusjan.B.jajaJ-Trace ProjaFlash/RamjajaµTracejaFlash/RamjajaUDE/UADjaFlashjaja

Tabelle 6: Implementierte Haltepunkte

Darstellung des Targetzustands

Architekturanzeige

Einen Gesamtüberblick über die Mikrocontrollerinfrastruktur haben wir im Ozone nicht ausmachen können. Die UDE zeigt hierfür den Target-Manager, der den Cortex grob in Rechen-, Speicher- und Traceinfrastruktur aufschlüsselt. Besonders beim Starten und Parametrieren der Tracefunktionalität hilft dieser enorm.

uVision und PowerView haben einen vollständigen Architekturüberblick integriert, der sämtliche Komponenten und Interfaces mit Adressraum und Konfiguration zeigt. Bei uVisionist dieser redundant in zwei Menüs View / Peripherals integriert, PowerView widmet ihm unter erfolgreicher Verbindung ein eigenes Menü (Bild 2b, Menü). STM32F779NI bringt hier so viel Peripherie mit, dass das Menü umbrochen wird.

Sourcelisting

uVision kennt dazu Project Window und Source Browser, beides aus dem View-Menü.

Project Browser (Bild 2a, Fenster links oben) listet die C-Hierarchie und ordnet sie in ihrer Funktion an (z. B. Board Support, Compiler, Device). Im Source Browser kann man diesen Codesatz gefiltert nach Kategorieen (Macros, Daten, Funktionen, Sfr(Bits), Parametern und Typen) durchsuchen. Zu einem angegebenen Symbol wird eine Liste mit Dateiort und Zeile gezeigt. Der Symbolbrowser listet die C-Symbole mit dem Speicherort und Typ. In der Regel wird eine Variable im Source Browser gesucht und ihr Speicherort mit dem Symbolbrowser evaluiert. An dieser Stelle wäre etwas mehr Automatisierung vorteilhaft: ein gesuchtes Symbol sollte nach Doppelklick in allen geöffneten Browsern erscheinen. Auch sollten sämtliche Sourcecode-Symbole einfach als Autovervollständigung bereit stehen.

Ozone zeigt alphabetische Listen für Funktionen (Name, Adresse, Size, Insts, Source) und Source Code (File, Status, Size, Omsts, Path). Doppelklick auf die Adresse markiert selbigen Ort im Disassembly View.

Die UDE sortiert die importierte Source-Hierarchie in drei Listen (Programme, Funktionen, Speicherbereiche) im Targetmanager auf einen eigenen Reiter unter der Architektur. Diese Art der Darstellung ist unter den GUIs ein Alleinstellungsmerkmal und steigert das Nutzererlebnis enorm.

PowerView bietet mit dem Source-browser wohl die tiefste Darstellungsmöglichkeit für den importierten Source-Code; es gibt eigene Suchdialoge für Module, Funktionen, Variablen und Typen. Symbole können zusätzlich in einer Baumstruktur dargestellt werden. In der Standarddarstellung wird einer Funktion immer der zugehörige Adressraum vorangestellt (Bild 2b, Fenster links oben).

Source-Anzeige

Die Source-Anzeige ist allen Werkzeugen einheitlich. Der C-Code kann alleine oder im Mixed-Mode mit den zugehörigen Assemblerzeilen angezeigt werden.

Disassembly View (uVision, UDE, Ozone im View Menü), List.Asm (PowerView) zeigt den nackten Assemblercode, gelistet nach seinen Adressmarken. Auch hier sind Darstellungen mit zugehörigen C-Zeilen möglich. Der Befehlszeiger wird üblicherweise am Rand als Pfeil dargestellt. Punkte am Coderand symbolisieren Haltepunkte, kleinere Kreise markieren ausführbare Zeilen.

Nur PowerView macht hier eine Ausnahme: Die vom Befehlszeiger adressierte Zeile wird farblich hervorgehoben, Zeilen mit Haltepunkt erhalten einen markierten Rand.

In der Einzelschrittausführung zeigt, ein in Leuchtkraft zunehmendes Highlighting, die Chronologie der Schritte durch den Code.

Bei uVision können Unterfunktionen ausgeblendet werden. Ozone lädt den C-Code immer aus dem File-Menü. Es gibt dabei nur den Mixed-Mode, die zugehörige Assemblerzeile muss aber mit [+] ausgefahren werden (Bild 2d, Fenster oben Mitte).

Registeranzeige

Darin liegt wenig Differenzierungspotenzial. Alle Werkzeuge können Rechen- und Peripherieregister darstellen und mit Doppelklick editieren.

uVision listet Core, Banked, System, Internal und FPU-Register. Ein Live-View scheint es nicht zu sein, die angezeigten Registerwerte ändern sich nur am Haltepunkt. Ozone zeigt CPU und FPU Register nach Name, Wert und Beschreibung. UDE zeigt CPU und Peripherieregister auch im LiveView. PowerView erneuert die meisten Anzeigen mit vorkonfigurierter Rate, einsehbar sind CPU-, FPU-, MMU-, Cache- und Peripherieregister.

Einheitlich ist den Tools eine Farbmarkierung, die Modifikation des Registereintrages im letzten Schritt durch Programm oder Anwender anzeigt.

Variablenanzeige

Alle Werkzeuge besitzen ein Watchfenster um ausgewählte Variablen, ihren Adressraum und Werte, zur Laufzeit zu verfolgen. In uVision und Ozone muss das Symbol aus der Liste aller globalen Variablen nachgeschlagen werden, Ozone kennt hierzu auch Drag & Drop mit anderen Fensterinhalten, uVision einen Rechtsklick im Source-Code. In UDE und PowerView ist die Wahl mit Autovervollständigung bzw. integrierter Liste etwas direkter.

Speicheranzeige

Auch in der Speicheranzeige liegt wenig Differenzierungspotenzial. Ozone schafft es ein wenig, mit einer direkten Parametrierung der Wiederholrate. In allen Werkzeugen ist der Speicherwert per Doppelklick veränderbar. Änderungen durch das laufende Programm werden nach der vorkonfigurierten Wiederholrate angezeigt.

Bei uVision müssen Adressen händisch eingegeben werden, Ozone kennt dazu Drag & Drop aus der globalen Variablenliste, UDE und PowerVision kennen Autovervollständigung, bzw. die Wahl aus einer Symbolbrowserinstanz.

Bei PowerView heißt die Speicheranzeige übrigens Dump, von der es auch eine offline-Version zur Anzeige von Binärdateien gibt.

Suchfunktion

In der UDE konnten wir keine zentrale Suchfunktion ausmachen. Ozone bietet dafür ein Findfenster, das mit Rechtsklick aus dem Kontext oder aus dem Viewfenster geöffnet wird. uVision und PowerView integrieren fensternahe Sucheingaben und sogar Bookmarking-Funktionalität.

Seite 3 von 7

1. Auf Spurensuche
2. Nutzerschnittstelle
3. Debug- & Tracefunktionen
4. Manipulation des Zielzustandes
5. Darstellung der Zieldynamik
6. Alleinstellungsmerkmale
7. Fazit

Auf Facebook teilenAuf Twitter teilenAuf Linkedin teilenVia Mail teilen

Das könnte Sie auch interessieren

ARM kauft Treasure Data
Automatisch Testen mit ARMs DS-5
Bluetooth 5 und Bluetooth-Mesh
arm unveiled Cortex-A roadmap by 2020
Universalwerkbank für Mikrocontroller
ARM Approved Design Partner

Verwandte Artikel

ARM Germany GmbH, Lauterbach GmbH, pls Programmierbare Logik & Systeme GmbH, SEGGER Microcontroller GmbH & Co. KG