SW4STM32 System Workbench, ST-Link 2.1 und SWO Ausgaben

Gast #5002057
Lesenswert?

Ich kann über den SWO Pin Debug Meldungen ausgeben. Die Anziege im 
ST-Link Utility klappt.

Allerdings muss ich das ST-Link Utility schließen, um debuggen zu 
können. Daher möchte ich die Ausgabe lieber irgendwo in der Eclipse IDE 
sehen.

Ich habe dazu im Prinzip zwei Anleitungen gefunden, die aber beide nicht 
funktionieren:

1) Die einen sagen, dass ich lediglich ein Kommando an openocd absetzen 
muss:
trace 8000000 traceoutput.bin
Aber dieses Kommando kennt meine openocd Version nicht.

2) Die andere Variante benutzt semihosting, mit dem openocd Kommando:
monitor arm semihosting enable
Auch dieses Kommando kennt meine openocd Version nicht.

Ich soll mein Programm mit den Optionen "-specs=rdimon.specs -lc 
-lrdimon" linken und die Funktion "initialise_monitor_handles()" 
aufrufen, aber die gibt es nicht (auch nicht mit z), sagt zumindest der 
Linker.

Zudem soll semihosting sehr langsam sein, ich habe daher aufgehört, hier 
weiter zu forschen. Eigentlich möchte ich Methode 1 umsetzen, jedoch 
nicht mit einem Logfile sondern mit Ausgabe in einer Ecplise View.

Kann es sein, dass ich eine kommerzielle Version von openocd benötige, 
um SWO Meldungen anzuzeigen?
#5002120
Lesenswert?

Stefan U. schrieb:
> Daher möchte ich die Ausgabe lieber irgendwo in der Eclipse IDE
> sehen.

Kannst Du Deinen ST-Link in einen J-Link umflashen? Es gibt von Segger 
für einige Typen entsprechende Firmware.

Mit einem J-Link kann man Segger RTT einsetzen. Damit kann man entweder 
den Segger RTT Viewer oder das (Telnet) Terminal in Eclipse verbinden.

Ansonsten kennt OpenOCD aucgh sein eigenes Semihosting (DCC), siehe 
libdcc (http://repo.or.cz/openocd.git/tree/HEAD:/contrib/libdcc).
Gast #5002128
Lesenswert?

SWO geht mit openocd-0.10.0 bei mir mittels

tpiu config internal tpiu.log uart off 48000000

in die Datei tpiu.log. Allerdings benutze ich dabei J-Link, nicht 
ST-Link. Eine "kommerzielle" Version von openocd gibt's nicht.
Gast #5003052
Lesenswert?

semihosting funktioniert bei mir super nach dieser Anleitung:

http://alphaloewe.com/2017/01/24/enable-semi-hosting-with-openstm32-system-workbench/

zum Testen in der main.c:
1
/* USER CODE BEGIN PFP */
2
/* Private function prototypes -----------------------------------------------*/
3
extern void initialise_monitor_handles(void);
4
/* USER CODE END PFP */
1
  /* USER CODE BEGIN 2 */
2
  initialise_monitor_handles();
3

4
  char scan_buf [10];
5
  printf("Semi Test:\n");
6
  scanf("%s",&scan_buf);
7
  printf("Eingabe war: %s\n",scan_buf);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren