Praxistest Debug&Trace Auf Spurensuche

Die Testhardware arm ULink plus, Lauterbach μTrace for Cortex-M
und Segger J-Trace Pro ist eher als Sonde zu verstehen.
Die Testhardware arm ULink plus, Lauterbach μTrace for Cortex-M und Segger J-Trace Pro ist eher als Sonde zu verstehen.

Vier Werkzeuge für Debug&Trace und ihre Fähigkeiten auf dem generischen Cortex-M7-Ziel STM32F779NI werden evaluiert. Schon die Unterschiede in der Menueführung sind bemerkenswert.

Softwareentwicklung auf ressourcenbeschränkten Mikrorechnern verläuft meist eindimensional: es wird modularer C-Code für eine Zielplattform mit dem zugehörigen Compiler in eine ausführbare Datei übersetzt, auf das Ziel geschrieben und dort in der Ausführung validiert. Die Validierung erfolgt in der Sprache des Programmiermodells, der Zielzustand und seine Evolution ist letztendlich ein Blockdatensatz. Der Befehlszeiger deutet auf den Auslöser des aktuellen Evolutionsschritts*) in diesem Blocksatz. Damit kann das Programmiermodell ein lineares genannt werden; zur Validierung müssen geeignete Darstellungen für diesen Blocksatz gefunden werden, sowohl zeitlokal als auch dynamisch. Insbesondere müssen Korrelationen zwischen diesen Unterblöcken einfach darstellbar sein. Zur Falsifizierung und Verifikation muss der Blocksatz manipulierbar und seine Ausführung (Dynamik) steuerbar sein. Diese Arbeit mit Blocksatzdaten kann mit elementaren Algorithmen auch in einer Textkonsole oder einem leistungsfähigen Editor wie Emacs stattfinden.

Lokale Aktionen heißen Debug, solche welche die Chronologie des Befehlszeigers einschließen Trace (Spur). Debug & Trace im Programmiermodell ist eine alte und elementare Geschichte: Es reicht Darstellungen für den (dynamischen) Blocksatz und Implementierung einer Steuerung der Unterblöcke, für die grundlegenden Elemente des Programmiermodells in Assoziation zu dem zugrundeliegenden C-Programm zu finden. In dieser Struktur kann die Implementierung und Performanz an der Zielplattform diskutiert werden. Wer dafür ein Werkzeug vom Markt bezieht erwartet etwa: eine plattformunabhängige, barrierefreie und performante Implementierung auf dem Arbeitsrechner, nahtlose Integration in den umgebenden Arbeitsfluss, barrierefreie Verbindung mit der Zielplattform, ein sach- und zielgerechtes User-Interface, die Implementierung nichtelementarer Features im Sinne einer Testautomatisierung, im MCU-Umfeld eine gewisse Portabilität.

Besonders die Verbindung mit der Zielplattform hat es im gegenwärtigen  Testbericht in sich: Obwohl der STM32F779NI mit Cortex-M7-Kern eines der generischsten Ziele darstellt, ist der Weg darauf mit den meisten Testobjekten (arm ULink plus, Lauterbach μTrace, Segger J-Trace Pro und dem PLS Universal Access Device 2 next) nicht ohne Hürde. Bei ULink plus fehlt der richtige Stecker für den STM32F779NI-Trace-Kanal, bei den letzteren die Konfiguration der richtigen ETM/ITM-Parameter. Nur J-Trace Pro schafft die ETM-Verbindung aus dem Stand, allerdings verrät das GUI nicht mehr welche Trace-Technologie nun verwendet wird**).

Tracesonden und Lieferumfang

Das Titelbild und Bild 1 zeigen die Testhardware. ULink plus und J-Trace Pro integrieren die Stromversorgung über die USB-Leitung, bei beiden Geräten muss die Software (uVision Studio/Ozone) von der Firmenwebsite bezogen werden.

Da beide nur ein kleines vollverschlossenes Plastikgehäuse umgibt sind sie sehr portabel. LEDs zur Statusanzeige sind auf beiden Geräten deutlich sichtbar an der Front platziert. J-Trace hat zielseitig separate Jtag- und Trace-Stecker, der ULink plus nur einen 10-Pin-Trace-Stecker, dafür aber zusätzliche GPIOs zur Testautomatisierung und ein Dreibein zur Leistungsmessung. Dafür sind Shunts für die Stromschwellen 5, 10, 25, 50, 100 und 250 mA im Paket.

Etwas unhandlicher geben sich μTrace und UDE: μTrace ist etwa gleich groß wie J-Trace, allerdings wurde ein Lüfter mit Kühlkörper verbaut, der die Portabilität etwas einschränkt. Die Trace-Verbindung nutzt ein einziges Flachbandkabel, zur Ansteuerung der Jtag-Schnittstellen und anderer Trace-Steckerformate ist ein Adapter mit den jeweiligen Flachbandkabeln im Paket. Der Laborrechner wird mit USB2.x/USB3.x-Kabel verbunden, es gibt kein Ethernetinterface, die Stromversorgung erfolgt extern.

Die höchste Standfestigkeit besitzt wohl das UAD2next (Bild 1), im vollverschlossenen Aluminiumgehäuse in etwa der Größe eines Tetrapacks: Die Verbindung zum Zielrechner erfolgt über USB2.x/USB 3.x oder Ethernet, die Stirnseite zeigt vier Zielschnittstellen Jtag, Trace, Can und ASC. Insgesamt sind drei Adapter zur Verbindung mit der Coresight-Trace auf dem STM32F779NI notwendig. Die Status-LEDs befinden sich gut sichtbar an der Rückseite.

Tabelle 2 zeigt die Datenraten und den verfügbaren Speicher. Neben FIFO und Stack besitzt μTrace einen Streammodus. Tabelle 3 zeigt den Zielumfang mit dem jeweiligen Produkt.

 ULink plusµTraceJ-Trace ProUAD2next
LaborrechnerUSB2.0USB2.0/3.0Ethernet/USB2.0/USB3.0Ethernet/USB2.0/USB3.0
DebugJTAG/SWDJTAG-AdapterJTAG/SWDJTAG/SWD
TRACESWOSWOSWOSWO
InterfaceITMETM/ITMETMETM/ITM/STM/PTM

 

Tabelle 1: Hard- und Softwareinterfaces der Debug&Trace-Produkte.

 Max. DatenrateTracespeichermax. Debugrate
UAD2next1,25 Gb/s512 MB160 MHz
ULink plus50 Mb/snur Stream10 MHz
µTrace100 Mb/s256 MB100 MHz
J-Trace Pro1,2 Gb/snur Stream +)150 MHz

 

Tabelle 2: Datenspeicher und -transferfähigkeiten.

Testvoraussetzungen

Bei jedem Hersteller zählt die zugehörige Debug-&-Trace-Software eine oder mehrere Dekaden Historie. Über eine spezifische Konfiguration bzw. internes/externes Skripten kann vermutlich jedes Tool, ein Ziel mit Hardwarezugang in beliebiger Art und Weise manipulieren und darstellen. Das bemisst sich schon alleine an der Länge der jeweiligen Dokumentationen [1, 2, 3, 4].

In diesen Testbericht gehen nur solche Funktionen mit ein, die einen unmittelbaren GUI-Zugang haben. Bei wesentlichen Unterschieden werden die Werkzeuge mit steigender Konfigurations- und Darstellungstiefe****) innerhalb einer Funktion besprochen. Die Implementierung der wichtigsten Standardfeatures in jedem Tool wird diskutiert. Im Anschluss zeigen wir einige toolspezifische Alleinstellungsmerkmale.

arm ULink plusCortex-A, Cortex-M
Lauterbach µTrace for Cortex-MCortex-M
PLS UDE/UAD2nextAURIX-, TriCore-, Power-Architecture-, Cortex-, ARM-, SH-2A-, XE166-, XC2000- und C166/ST10
Segger J-Trace ProCortex-M, Cortex

 

Tabelle 3: Zielumfang der Testobjekte