Mit ETM habe ich noch keine Erfahrungen gesammelt aber dafür mit ITM.
Beide kommunizieren über die TPIU mit der Außenwelt . SWO ist nur eine
der möglichen Hardwareschnittstellen (neben JTAG) und wird von OpenOCD
unterstützt.
Prinzipiell hat man zwei Möglichkeiten:
1. Man leitet den Trace direkt in eine Datei um. Dafür muss der SWO-Pin
des Debuggers mit dem SWO-Pin des Targets verbunden sein. Die 8000000 am
Ende der Zeile muss dem Takt am TRACECLKIN-Port entsprechen, was
normalerweise gleich dem CPU-Takt entspricht. Für dein Disco-Board musst
du das entsprechend anpassen.
1 | monitor tpiu config internal itm.fifo uart off 8000000
|
2. Man gibt den Trace am SWO-Port als UART-kompatibles NRZ-Signal aus.
Dadurch kann man es mit einem einfachen USB-UART-Converter abfangen. Die
2000000 am Ende der Zeile steht für die Baud-Rate (2MBaud in diesem
Fall) und kann/muss natürlich angepasst werden.
1 | monitor tpiu config external uart off 8000000 2000000
|
Für ITM_SendChar() reicht dann noch die folgende Zeile
Mit ETM habe ich bisher wie gesagt noch nichts gemacht. Musst du mal
suchen wie du das konfiguriert bekommst.
Sehr interessant finde ich die Möglichkeit mit Sigrok per Logic-Analyzer
den Trace aufzuzeichnen und auszuwerten. Dann gehen auch deutlich mehr
als 2MBaud. Ein paar weiterführende Links zu ETM finden sich ebenfalls
in diesem Blog-Artikel:
http://essentialscrap.com/tips/arm_trace/theory.html