Systemdesign / Debug & Trace

Universalwerkbank für Mikrocontroller

6. September 2018, 11:37 Uhr | Dr. Constantin Tomaras, Ressortredakteur für Systemdesign, DESIGN&ELEKTRONIK
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

GUI-Layout und -Dynamik

Das GUI (Bild 4) spiegelt die Form einer generischen Programmierumgebung. Die Arbeitsbereiche sind in ein Drop-down-Menü am oberen Bildschirmrand sortiert.

passend zum Thema

Bild 4: Die kanonische Anordnung des UDE-Gui: Der TargetConfigurator (links mitte) zeigt die verbundene Zielhardware und optional das auf diesem hinterlegte Programm in drei Darstellungen. In der Mitte wird der Code in der gewünschten Darstellung gez
Bild 4: Die kanonische Anordnung des UDE-GUI: Der TargetConfigurator (links mitte) zeigt die verbundene Zielhardware und optional das auf diesem hinterlegte Programm in drei Darstellungen. In der Mitte wird der Code in der gewünschten Darstellung gezeigt. Rechts wird man die Registerinhalte platzieren. Bei bekanntem Ziel können die für den Anwender relevanten Peripherieregister aus einer Ordnerhierarchie gewählt werden. Im oberen Bereich sind alle möglichen Aktionen als Icon direkt anwählbar.
© DESIGN&ELEKTRONIK

Unter dieser Drop-down-leiste liegt in der Voreinstellung jeder Arbeitsbereich im Icon-Format vor: Diese Symbole fallen allerdings auch auf einem 22-Zoll-Monitor noch relativ klein aus und ihre Farb- und Symbolsprache ist wenig intuitiv – ein paar Tage benötigt ein Anwender schon um sie zu memorieren. Deshalb neigt der Anwender zu Beginn zur beschrifteten Auswahl im Drop-down-Menü, die einen Klick mehr bedeutet. Innerhalb der Symbolleiste wurden Icons zur Zielverbindung und -konfiguration in einen eigenen Bereich am rechten unteren Rand ausgegliedert. Das ist nutzerfreundlich und schnell gemerkt.

Nach erfolgreicher Verbindung werden dem Anwender am linken Rand im Target-Manager die zugänglichen Kerne, ihre Speicherbereiche und Kommunikationskanäle aufgelistet; Konfigurationen und Anweisungen werden über einen Rechtsklick auf die jeweilige Komponente erreicht. Das Beispiel Bild 4 zeigt den Cortex-Kern, seine Speicherbereiche und die beiden Trace-Kanäle Coresight-ETM und ITM-SWO.

Wurde eine vorhandene Binärdatei mit dazugehörigem C-Code eingelesen, trägt ein Symbol-Reiter im Target-Manager drei Code-Darstellungen: die C-Hierarchie, die Funktionsliste und die zusammenhängenden Speicherbereiche auf dem Ziel. Darunter befindet sich eine weitere Auflistung sämtlicher gesetzter Haltepunkte zur Aktivierung oder Deaktivierung. Eine gelistete Programmdarstellung (zum Beispiel C-Code) wird mit Doppelklick geöffnet und standardmäßig in einem neuen Fenster in der GUI-Mitte angezeigt.

Um diesen zentralen Bereich herum können beliebige Fenster, wie Registerinhalte oder eine Traceliste angedockt werden. Im Beispiel werden die MCU-Register und einige Peripherieregistergezeigt. Letztere werden aus einer Ordner-Hierarchie der I/O-Bezeichnungen gewählt. Registerinhalte werden am Haltepunkt per Doppelklick darauf modifiziert, eine Assemblerzeile per Rechtsklick mit dem integrierten Assembler. Diese Zugriffe sind sehr direkt, der Assemblercode sollte allerdings nicht ohne tiefgreifendes Wissen der Maschinenebene verändert werden.

Bild 9: Das Memory-Window stellt die Inhalte ganzer Speicherbereiche auf dem Zielsystem dar.
Bild 5: Das Memory-Window stellt die Inhalte ganzer Speicherbereiche auf dem Zielsystem dar.
© PLS Programmierbare Logik & Systeme

Im Allgemeinen wird ein Anwender allerdings eine Abstraktionsebene höher arbeiten: zur Analyse des Targetzustands werden Speicheranzeige (Bild 5) und eine Liste der Variablen herangezogen. Mit dem Debugger wird die Initialisierung und Implementierung dieser Variablen in der Umgebung eines kritischen Programmschritts verfolgt. Dort wird ein Haltepunkt zur Analyse gesetzt, die Ausführung kann von diesem aus schrittweise gesteuert und überwacht werden, das sogenannte Single-Step-Debugging. Die Speichereinträge und Variablen sind dabei ebenso direkt editierbar wie die Registerwerte. Durch unmittelbare Änderung können Fehler aufgedeckt und auch die Fehleranfälligkeit an einem bestimmten Programmpunkt getestet werden. Solche Szenarien sind in erster Linie durch ein falsches Ansprechen der Hardware mit dem C-Code begründet.

Weiter mit dem GUI: Am unteren Fensterrand liegt zur Linken der Nachrichtendialog. Die darin enthaltenen UDE/UAD-Botschaften wie Fehler-, Warnmeldungen und Information an den Anwender sind mit Rechtsklick in unterschiedlicher Tiefe darstellbar. Es handelt sich aber lediglich um Status-/Fehlernachrichten und nicht um tiefgreifende Handlungsempfehlungen. Einen unterstützten Arbeitsfluss, wie in einschlägigen Systemdesigntools4, gibt es nicht.

Bild 8: Die wichtigsten UDE-Fenster im Überblick; Der Standardrahmen integriert wie Bild 4 Target-Manager, Code-Anzeige, Nachrichten- und Taskdialog, sowie die Registeranzeigen. Die äußere Schicht von links unten nach rechts oben bilden Aufrufstapel,
Bild 6: Die wichtigsten UDE-Fenster im Überblick; Der Standardrahmen integriert wie Bild 4 Target-Manager, Code-Anzeige, Nachrichten- und Taskdialog, sowie die Registeranzeigen. Die äußere Schicht von links unten nach rechts oben bilden Aufrufstapel, Speicheranzeige, xy-Darstellung einer Variablen, Codeüberdeckung, Codeprofiling und die Tracedaten selbst.
© DESIGN&ELEKTRONIK

Gegenüber zur Rechten wurde der Taskdialog angedockt. Er listet die Aufgaben und ihren Arbeitsfortschritt, gegebenenfalls mit Statistik bei Erfolg. Im Beispiel wurde gerade mit der Traceaufzeichnung begonnen. Eine weitere fortgeschrittene Visualisierung aus dem View-Menü (zum Beispiel xy- oder Säulendiagramm) wird zunächst zentral platziert. »Rechtsklick«>»Floating Frame« auf die Titelleiste eines Reiters löst selbigen aus dem Standardrahmen. Per Drag-und-Drop ist diese wieder in das Zentralfenster integrierbar, die potenzielle Position zeigt ein eingeblendeter Rahmen an.

Unsere Anwenderpräferenz: Die Kontexthilfe (nicht gezeigt) links des wie oben konfigurierten Standardrahmens halten und sämtliche fortgeschrittene Visualisierungen rechts davon ineigenständigen Fenstern platzieren (Bild 6).

Bild 5: Die Funktionseinträge der UDE im Überblick.
Bild 7: Die Funktionseinträge der UDE im Überblick.
© DESIGN&ELEKTRONIK

Das Nutzererlebnis mit dem GUI lässt sich so beschreiben: Die Schriftsprache und Sortierung der Menüs (Bild 7) ist kanonisch und unmittelbar verständlich. Allerdings fällt es in der Fülle der Möglichkeiten schwer, diese Sortierung in kurzer Zeit einzuprägen. Der Nachrichtendialog könnte mit einfachen Botschaften einen unterstützten Arbeitsflusshtml" href="https://www.elektroniknet.de/design-elektronik/embedded/universalwerkbank-fuer-mikrocontroller-157464-Seite-6.html">4 zum Troubleshooting und somit einen deutlichen Produktivitätszuwachs bei Einsteigern bewirken. Deshalb wird man für den Einstieg die hervorragende Dokumentation im Print-Handbuch nicht beiseite legen.

Tiefer greifende Funktionen, wie die Konfiguration eines zielspezifischen Tracekanals, wird man aus der Kontexthilfe aufgreifen müssen. Die FAQ auf pls-mc.com ist ebenso hilfreich.


  1. Universalwerkbank für Mikrocontroller
  2. Lieferumfang UDE/UAD2next
  3. GUI-Layout und -Dynamik
  4. Funktionsumfang am Arbeitsbeispiel STM32F779NI
  5. Einfache Anzeigemöglichkeiten
  6. Fazit

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu pls Programmierbare Logik & Systeme GmbH

Weitere Artikel zu Entwicklungswerkzeuge