SWO Atollic True Studio STM32Gute

Gast #6276727
Lesenswert?

Moin Moin,
ich möchte mich mal mit dem SWO von STM32 auseinandersetzen.
Wenn ich es richtig verstanden habe sollte es möglich sein mit SWO eine 
komfortabel Debug Schnittstelle zu nutzen.
SWO ist sehr Ressourcen sparend stimmt das?
Ich habe aber noch nicht zu hundert 100%die Möglichkeiten die SWO bietet 
verstanden.
Printf ausgaben sollten möglich sein und auch Trace ausgaben von 
Variablen ist das so richtig?
Ist es vernünftig SWO mit Atollic zu nutzen?
Wo bekomme ich eine gute Anleitung wie man es richtig macht?
Danke für eure Hilfe


Schönen Sonntag
Gast #6276795
Lesenswert?

>SWO von STM32 ... Wenn ich es richtig verstanden habe sollte es möglich sein
> mit SWO eine komfortabel Debug Schnittstelle zu nutzen

Ja, ich benutze auch SWD als als physischen Zugangskanal  des Debuggers
zu meinen STM32. Als Debug Probe verwende ich J-Link Edu bzw. ein 
STM32-Nucleo Board  kann man auch als low cost SWD Debug Probe 
umkonfigurieren.

>SWO ist sehr Ressourcen sparend stimmt das?
Alles in Hardware.

>Printf ausgaben sollten möglich sein
Möchte man eigenen Trace Output am PC sehen, einfach
angehängte Datei mitkompiliern.
Das normale printf() ruft irgendwann intern _write() zur Ausgabe aus. 
__io_putchar() transportiert das ganze dann über SWD zum PC.

Im TrueSTUDIO kannst du dann das Ergebniss in der SWV Console anschauen.
(Nach dem Debug Start den roten Punk (Start Trace) in dem SWV Console 
View aktivieren).

Willst du nicht den ganzen printf Overhead haben, dann beim Aufsetzten 
des Projekts die Datei tiny_printf.c mitgenerrieren lassen.

Aber meistens reichen die normalen Debug Möglichkeiten aus, alles so wie 
man es vom Debugen eines PC Programms gewohnt ist.
Angehängte Dateien:
Gast #6276822
Lesenswert?

Danke für deine Hilfe!
Ich habe jetzt mit dem Tool "STM32 ST-LINK Utility" geschaft die printf 
Ausgaben aus zu geben.
Mit dem Atollic true Studio will es noch nicht klappen.

Wenn ich auf den roten Punkt klicke passiert nichts und wenn ich mit dem 
grünen Play Button starte wird der rotr Punkt im SWO Consolen Fenster 
ausgegraut und mehr passiert nicht.

Hast noch einen Tipp
Angehängte Dateien:
Gast #6277131
Lesenswert?

Jetzt hat es geklappt.
Sehr Komfortabel so zu debuggen.
 Macht so wirklich viel Spaß! Alles aus dem Atollicstudio raus.
Wird das Swo auch ausgeführt wenn kein Adapter an der Hardware hängt?
Gast #6278115
Lesenswert?

Bildschirmreiniger schrieb:
> Das heißt das das printf im Normal Betrieb keine Belastung für den Stm32
> ist?

Das kommt darauf an, wie die _write() Methode implementiert wurde. Sie 
kann vor der Ausgabe abfragen, ob der SWO Ausgang aktiviert wurde. Und 
dann kann sie entscheiden, ob sie warten oder überspringen will.

Wenn man printf mit Platzhaltern benutzt, muss er diese aber auf jeden 
Fall abarbeiten, auch wenn die Ausgabe danach gar nicht stattfindet.

Mit
1
ITM_SendChar(c);
kannst du einzelne Zeichen effizienter ausgeben. Wenn die Schnittstelle 
deaktiviert ist, überspringt sie das Ausgeben. Innerhalb dieser CMSIS 
Funktion kannst du sehen, wie man den Status des Ports abfragt:
1
if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&   /* ITM enabled */
2
    ((ITM->TER & 1UL               ) != 0UL))     /* ITM Port #0 enabled */
3
{
4
   ...
5
}

Wenn du teure Operationen zum generieren/formatieren des Strings hast, 
kannst du das vorher abfragen, bevor du Zeit vergeudest - falls das für 
deine Anwendung hilfreich ist.
#6278588
Lesenswert?

Lutz schrieb:
> Das belastet den Mikrocontroller zur Laufzeit noch einmal um Längen
> weniger als SWO. Und man braucht auch keinen Hardwarepin extra
> verkabeln.

Wie kommst du darauf, dass das den Controller weniger belastet?
Die ITM ist sozusagen ein zweiter Kern neben dem eigentlichen Kern und 
nimmt diesem damit die Arbeit ab. Wie soll das effizienter gehen, in dem 
man es mit irgendeiner Library dann doch durch den eigentlichen 
Prozessor laufen lässt?

Der große Vorteil von RTT ist wohl eher, dass das auch mit anderen 
Architekturen als Cortex-M funktioniert.
Gast #6278813
Lesenswert?

Ben S. schrieb:
> Warum eigentlich noch das Atollic True Studio?

#OT
Weil in der STM32IDE z.B. (zumindest bei mir) die SFR 
(SpecialFunctionRegister) View nicht gegangen ist (Windows, neueste 
STM32IDE).

Ich hab stundenlang (mit Hilfe vonn Google versucht das zum laufen zu 
bringen und bin dann wieder zu Atollic zurück.

rgds
#/OT
Gast #6278822
Lesenswert?

Mal so eine Frage am Rande, warum braucht man heute eigentlich noch 
einen Debugger um quasi in den uC zu schauen?
Ich als Laie denke, das meiste sollte doch schon als Simulation lösbar 
sein. Gut, vllt bei sehr engen Timings deren Spezifikation problematisch 
ist, ok. Aber für analoge Geschichten gibt es Spice etc. warum nicht für 
digitales?

Habt einen gesunden Tag!
Gast #6278855
Lesenswert?

6a66 schrieb:
> Weil in der STM32IDE z.B. (zumindest bei mir) die SFR
> (SpecialFunctionRegister) View nicht gegangen ist

Du meinst die System Workbench for STM32, nehme ich an. Das funktioniert 
bei mir allerdings. Du musst nur diese View allerdings öffnen, bevor du 
den Debugger startest, sonst zeigt sie nur die Default Werte an, aber 
nicht die aktuellen.

Doch auch diese IDE ist in die Jahre gekommen. Aktuell ist die STM32 
Cube IDE. Auch dort funktioniert diese View bei mir.
Gast #6278861
Lesenswert?

Blöder Mann ;-) schrieb:
> Ich als Laie denke, das meiste sollte doch schon als Simulation lösbar
> sein.

Zum einen haben die µC zunehmend viele komplexe Funktionen, die zu 
simulieren immer komplexer wird. Diese Mühe macht sich kaum noch ein 
Entwickler.

Zum Anderen kann so ein Simulator nicht jede beliebig Hardware 
simulieren, die an den µC angeschlossen ist. Doch von der hängt das 
Verhalten des Programmes ab, dass man simulieren will. Wie willst du 
z.B. eine BLDC Motor-Steuerung simulieren, ohne den Motor und die ganze 
Mechanik drumherum ebenfalls zu simulieren? Das geht nicht!
Gast #6278865
Lesenswert?

Stefan ⛄ F. schrieb:
> Du musst nur diese View allerdings öffnen, bevor du
> den Debugger startest, sonst zeigt sie nur die Default Werte an, aber
> nicht die aktuellen.

#OT
Nee, die hat nur einen Error angezeigt dass das nicht geladen werden 
kann (wenn ich mich recht erinnere irgend einen Eclipe oder Java Error, 
das war auch bei anderen Views der Fall). Nachdem ich gerade beim 
Projektwechsel war hatte ich ein paar Stunden darein investiert und bin 
dann wieder zurück anstatt tagelang an dem Punkt rumzueiern. Aber was 
soll's, TrueStudio läuft prima.
#/OT

rgds
Gast #6278872
Lesenswert?

Ich kombiniere SWO gerne mit mehreren Funktionen:

a) Einer Poer-On LED. Das Programm schaltet die LED nach Initialisierung 
der Taktversorgung ein. So erkenne ich, dass der µC "lebt".

b) Im Fall von erkannten Störungen, gibt die LED durch Blinkmuster einen 
Fehlercode aus (habe ich von meinem Motorrad abgeguckt).

c) Mit dem Debugger kann ich SWO aktivieren und dann detaillierte 
Meldungen auslesen.

Bei der Dreifachen Nutzung dieses Pins kann man nicht über "belegt einen 
Pin zusätzlich" meckern.

Mit fällt noch eine vierte Nutzungsmöglichkeit ein:

d) Wenn man eine weiße oder blaue LED verwendet, kann man parallel dazu 
einen Jumper platzieren, der von der Firmware abgefragt wird und irgend 
eine Sonderfunktion auslöst - zum Beispiel Reset der 
Konfigurationsdaten.
Gast #6278882
Lesenswert?

Stefan ⛄ F. schrieb:
>> Ich als Laie denke, das meiste sollte doch schon als Simulation lösbar
>> sein.

Das Thema 100MHz, wer sagt denn, daß eine Simulation in Echtzeit laufen 
muss?

>
> Zum einen haben die µC zunehmend viele komplexe Funktionen, die zu
> simulieren immer komplexer wird. Diese Mühe macht sich kaum noch ein
> Entwickler.

Naja, bei Spice gibt es eine Umgebung und dort werden die Parameter 
(Bauteildefinitionen) hinterlegt. Dazu gibt es Eingangssignale, die zu 
definieren sind. Folglich sollte man die Ausgangssignal simulieren 
können.

Natürlich ist das Mühe für den Chipentwickler, aber das war es bei Spice 
auch....

>
> Zum Anderen kann so ein Simulator nicht jede beliebig Hardware
> simulieren, die an den µC angeschlossen ist. Doch von der hängt das
> Verhalten des Programmes ab, dass man simulieren will. Wie willst du
> z.B. eine BLDC Motor-Steuerung simulieren, ohne den Motor und die ganze
> Mechanik drumherum ebenfalls zu simulieren? Das geht nicht!

Ich denke, das sollte zumindest bis zur Schnittstelle zur 
Leistungsabteilung doch möglich sein. Da kommt dann digitales heraus...
Gast #6278911
Lesenswert?

Blöder Mann ;-) schrieb:
> Aber sorry! Ich will den Thread hier nicht sprengen!

#OT
Wir hatten früher (vor >20J) bei der Entwicklung einer HW-Platform mit 
einem ASIC im Nebenraum eine Simulatomaschine für das ASIC (CPU) stehen. 
Das war ein Schrank mit der Zielhardware und viel Zusatz-HW für das 
ASIC. Schweinsteuer >>100kDM und hat eine extra Klimaanlage benötigt. 
War von der Komplexität eher ein STM32F103 ohne Peripherie der simuliert 
werden sollte. Also NO WAY für Realtime heute.
#/OT

Der Weg mit den Debuggern ist doch nicht schlecht, warum da was Neues 
erfinden?

rgds
Gast #6278921
Lesenswert?

6a66 schrieb:
> Und den Pin habe ich ohnehin noch freigelassen.

Mache da einfach immer eine bedrahtete weiße LED (mit Vorwiderstand) 
dran. Dann hast du alle anderen Optionen für die Zukunft offen.

Zum Reset könnte man in die Bedienungsanleitung schreiben: Verbinden sie 
die beiden Drähte der Power-LED und schalten dann das Gerät ein.*

Den SWO Viewer kann man mit einer Haken-Klemme an das Bein hängen.

*) Etwas ähnliches habe ich schon einmal bei einem Modul gemacht, dass 
als Kleinserie (einige hundert Stück) produziert wurde. Da musste man 
zwei Pins von nebeneinander liegenden Widerständen brücken, um das 
Passwort zu löschen. Das hat bisher jeder Anwender verstanden. Ich hatte 
dazu bewusst eine Stelle ausgewählt, wo nichts schlimmes passiert, wenn 
man abrutscht. Darunter siehst du den Connector für den Debugger.
Angehängte Dateien:
Gast #6278940
Lesenswert?

Ben S. schrieb:
> Wer einen Debugger braucht, kann eh nicht programmieren. Das richtige
> Tool ist die UART mit endloser Textausgabe, dass wissen wir doch
> inzwischen alle ????

By the way: Man kann die SWO Leitung so konfigurieren, dass ihre Ausgabe 
im UART Format stattfindet. Denn Sinn der Sache habe ich aber noch nicht 
verstanden, denn man braucht ohnehin einen Debugger, um den Ausgang zu 
aktivieren.

Was mir da auch noch unklar ist: Der Trace-SWO Ausgang hat ein paar 
Bytes Puffer (z.B. 10) aber zwischen den Buchstaben überträgt er 
Null-Bytes. Sind die auch im Puffer, so dass sie dort wertvollen Platz 
verschwenden?
Gast #6279067
Lesenswert?

Stefan ⛄ F. schrieb:
> Mache da einfach immer eine bedrahtete weiße LED (mit Vorwiderstand)
> dran. Dann hast du alle anderen Optionen für die Zukunft offen.
>
> Zum Reset könnte man in die Bedienungsanleitung schreiben: Verbinden sie
> die beiden Drähte der Power-LED und schalten dann das Gerät ein.*

Yep, so ähnlich hatte ich das vor - nur nicht bedrahtet und nur für die 
Entwicklungsphase :)
Das mit dem Rest Jumper stecken für den Benutzer ist dann nicht so 
einfach. Das Gerät wird wasserdicht verschlossen und versiegelt. Da 
kommst Du dann nicht mehr ran. Das geht bei mir inwischen über einen 
Tastendruck bei PowerUp, da startet das System ohne die EERPOM Daten zu 
laden.

Ben S. schrieb:
> dass wissen wir doch
> inzwischen alle ????

JOU :) Deswegen auch die Diskussionen wie: "Mein Programm geht nicht. 
Habe 10 Seiten Code gepostet. Wer hilft mir ???"

rgds
Gast #6279802
Lesenswert?

Christopher J. schrieb:
> Lutz schrieb:
>> Das belastet den Mikrocontroller zur Laufzeit noch einmal um Längen
>> weniger als SWO. Und man braucht auch keinen Hardwarepin extra
>> verkabeln.
>
> Wie kommst du darauf, dass das den Controller weniger belastet?
> Die ITM ist sozusagen ein zweiter Kern neben dem eigentlichen Kern und
> nimmt diesem damit die Arbeit ab. Wie soll das effizienter gehen, in dem
> man es mit irgendeiner Library dann doch durch den eigentlichen
> Prozessor laufen lässt?
>
> Der große Vorteil von RTT ist wohl eher, dass das auch mit anderen
> Architekturen als Cortex-M funktioniert.

Hast Recht. SWO hat gar keinen Einfluß auf den Controller.

RTT war/ist wesentlich schneller.
Und deutlich einfacher zu nutzen bzw. zu konfigurieren.
Und kann Daten in beide Richtungen transportieren!
Und hat auch ohne angeschlossenen Debugger den gleichen Einfluß bzw. der 
selbe Code läuft auch ohne angeschlossenen Debugger.
Gast #6437523
Lesenswert?

KM schrieb:
> Ja, ich benutze auch SWD als als physischen Zugangskanal  des Debuggers
> zu meinen STM32. Als Debug Probe verwende ich J-Link Edu bzw. ein
> STM32-Nucleo Board  kann man auch als low cost SWD Debug Probe
> umkonfigurieren.


Hallo wollte die im Beitrag 
Beitrag "Re: SWO Atollic True Studio STM32Gute" angehängte Datei 
PrintF_SWO_Bridge.h in meinem Projekt einbinden.

Ist dafür eine .h geeignet?

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