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?
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).
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.
Danke A.B., das hat geklappt. Das Logfile enthält allerdings nach jedem Buchstaben ein Steuerzeichen. Aber immerhin, so ist es besser, als nichts.
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); |
Stefan U. schrieb: > 2) Die andere Variante benutzt semihosting, mit dem openocd Kommando: > monitor arm semihosting enable > Auch dieses Kommando kennt meine openocd Version nicht. Welche Version ist das denn? Die bei AC6 dabei ist funktioniert.
Gerade noch mal mit der Kombi ohne Modifikationen getestet: http://ht-deko.com/arduino/pic/stm32_11.jpg
> Welche Version ist das denn? > Die bei AC6 dabei ist funktioniert. Hmm, ich verwende AC6. Aber egal, Semihosting will ich ohnehin nicht verwenden.
Hi Leute, RTT (Real Time Transfer) kann mit diesem experimentellen Patch http://openocd.zylin.com/#/c/4055/ auch mit OpenOCD und jedem Debug Adapter verwendet werden. Im Gegensatz zu SWO (aktuell nur mit J-Link und STLink) können auch Daten vom Host zum µC übertragen werden. Beste Grüße, Alex
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.