Forum: Mikrocontroller und Digitale Elektronik Was spricht gegen die Black Magic Probe?


von Bauform B. (bauformb)


Lesenswert?

A. B. schrieb:
> Das [Black Magic Probe] ist ganz nett für "ältere" Chips. Ansonsten
> hat man ständig das Problem, den Firmware-Updates hinterher zu laufen.
> Mal schnell die Unterstützung der neuesten Varianten (z. B. 32h7)
> einzubauen, geht auf dem Host doch etwas bequemer.

Das ist ein Problem, aber das habe ich doch bei Segger genau so und 
mit dem ST-Link erst recht?

Das Teil kann laut Werbetext genauso viel wie die anderen, braucht aber 
kein Adapterkabel und braucht vor allem keine Spezial-Software auf dem 
PC. Dank eingebautem gdb-Server mit virtuellem COM-Port braucht man nur 
den gdb und sonst nichts. Weil es so viel simpler ist als kommerzielle 
Lösungen sollte viel problemloser und überall funktionieren.

Schade ist, dass man keine Potentialtrennung spendiert hat, obwohl die 
Steuersignale für Pegelwandler vorhanden sind, die man auch für 
Optokoppler nutzen könnte. Schade ist, dass man die ursprüngliche 
Mini-USB durch eine Micro-USB ersetzt hat. Aber sonst?

Der/die/das BMP kostet genauso viel wie ein J-Link EDU darf aber frei 
verwendet werden. Also, warum liest man in diesem Forum so wenig 
darüber? Was übersehe ich?

von . . (Gast)


Lesenswert?

Beitrag "Re: JTAG-Adapter Black Magic Probe"
Mann, das ist 2.5 Jahre her.

von Thorsten S. (thosch)


Lesenswert?

Bauform B. schrieb:
> Schade ist, dass man die ursprüngliche Mini-USB durch eine Micro-USB
> ersetzt hat

Warum findest du das schade?
Micro USB ist viel robuster und zuverlässiger.

Mini USB ist tatsächlich die schlechteste von allen Steckervarianten.

Von der Black Magic Probe hab ich bislang noch nie gehört.

Ich nutze den Atmel-ICE für 8-Bit AVRs und für 32-Bit SAMs.

Für STM32 Comtroller auf eigenen Boards hab ich 'nen ST-Link V2 und dann 
hab ich noch ein paar Nucleo- und Discovery- Boards mit integriertem 
ST-Link Debugger.

Da das soweit alles prima funktioniert, hatte ich bislang weder Bedarf, 
noch großartig Interesse an anderen Debug-Adaptern.

Das einzige, was mich noch mal reizen würde, wäre eine erschwingliche 
Lösung für HW-Trace in STM32 Controllern.

von A. B. (Gast)


Lesenswert?

Bauform B. schrieb:
> A. B. schrieb:
>> Das [Black Magic Probe] ist ganz nett für "ältere" Chips. Ansonsten
>> hat man ständig das Problem, den Firmware-Updates hinterher zu laufen.
>> Mal schnell die Unterstützung der neuesten Varianten (z. B. 32h7)
>> einzubauen, geht auf dem Host doch etwas bequemer.
>
> Das ist ein Problem, aber das habe ich doch bei Segger genau so und
> mit dem ST-Link erst recht?

Ja, beim Segger auch, weil bei einer älteren Version eventuell der Flash
knapp wird. Beim BMP kann man sich natürlich selber leicht aus der 
Affäre
ziehen: Man kompiliert die FW halt selbst, nachdem man die ggf. nicht 
benötigten Teile (Targets) entfernt hat. Aber wenn sich die 
"Wunschliste" mal ändert, macht man das wieder von vorn. Bem ST-Link 
(V2!) gibt's das Problem nicht so, weil der sich nicht drum kümmert, was 
für ein Target dran hängt. Der kann auch SWD mit Targets, die nicht von 
ST sind. Analog mit einem "dummen" JTAG-Adapter.

> Der/die/das BMP kostet genauso viel wie ein J-Link EDU darf aber frei
> verwendet werden. Also, warum liest man in diesem Forum so wenig
> darüber? Was übersehe ich?

Ausprobieren?! Da wir doch die Freiheit der Wahl haben ... Paradiesisch 
halt.

von Axel S. (a-za-z0-9)


Lesenswert?

Bauform B. schrieb:
> A. B. schrieb:

(Vor 18 Monaten)

> Das Teil kann laut Werbetext ...

[weitere Zitate aus dem "Werbetext" - schnipp]

> Schade ist, dass man keine Potentialtrennung spendiert hat, obwohl die
> Steuersignale für Pegelwandler vorhanden sind, die man auch für
> Optokoppler nutzen könnte.

Das ist ein open source Projekt. Du darfst dich da gerne austoben. 
Allerdings ist es im Zweifel wesentlich einfacher, die Potentialtrennung 
auf der USB-Seite vorzunehmen. USB-Isolatoren gibt es fix und fertig. 
Warum sollte man da selber noch dran rumschrauben?

> Schade ist, dass man die ursprüngliche
> Mini-USB durch eine Micro-USB ersetzt hat.

Micro-USB ist der bessere Steckverbinder, da leiert nämlich nicht die 
Buchse aus, sondern nur das (leicht ersetzbare) Kabel.

> Der/die/das BMP kostet genauso viel wie ein J-Link EDU darf aber frei
> verwendet werden. Also, warum liest man in diesem Forum so wenig
> darüber? Was übersehe ich?

Das BMP hat eine kleine Fangemeinde. Auch hier im Forum. Ich selber habe 
auch eins gebaut, das ich hin und wieder verwende. Oft aber auch nicht, 
z.B. wenn ich mit einem Nucleo unterwegs bin und da den ohnehin fertig 
angeflanschten ST-Link benutzen kann.

Das BMP ist ja ursprünglich ein kommerzielles Projekt. Scheint aber 
nicht sonderlich gut eingeschlagen zu sein. Das heißt aber nicht, daß es 
schlecht ist. Eher im Gegenteil. Deswegen muß man da auch nicht groß 
Werbung für machen. Die lauteste Werbung brauchen schlechte Produkte.

von Bauform B. (bauformb)


Lesenswert?

Thorsten S. schrieb:
> Für STM32 Comtroller auf eigenen Boards hab ich 'nen ST-Link V2 und dann
> hab ich noch ein paar Nucleo- und Discovery- Boards mit integriertem
> ST-Link Debugger.

Für eigene Boards benutze ich den eingebauten Bootloader, das 
funktioniert. Vor allem verwendet der garantiert den richtigen 
Flash-Algorithmus. Mehr konnte ich bisher mit meinem L476-Nucleo auch 
nicht anfangen. Deshalb diese Frage hier.

> Das einzige, was mich noch mal reizen würde, wäre eine erschwingliche
> Lösung für HW-Trace in STM32 Controllern.

Genau darum geht's mir auch. Ein guter Mittelweg wäre doch ein Call- 
und/oder Branch-Trace per TRACESWO. Aber ich finde absolut keinen 
Hinweis wie das funktionieren könnte, weder bei ST, noch bei ARM. Ist 
printf wirklich alles, was man aus TRACESWO raus locken kann? Ein halbes 
UART mehr, nett, aber das kann's doch nicht sein?

Axel S. schrieb:
>> Schade ist, dass man keine Potentialtrennung spendiert hat, obwohl die
>> Steuersignale für Pegelwandler vorhanden sind, die man auch für
>> Optokoppler nutzen könnte.
>
> Das ist ein open source Projekt. Du darfst dich da gerne austoben.
> Allerdings ist es im Zweifel wesentlich einfacher, die Potentialtrennung
> auf der USB-Seite vorzunehmen. USB-Isolatoren gibt es fix und fertig.

Eine eigene BMP-Platine ist ja keine Raketenwissenschaft, die muss ja 
nicht so klein sein. Dafür gibt's keine Masseschleifen über PC und Oszi 
mehr. Ein USB-Isolator kann das natürlich auch, aber dann hängt der 
ganze Adapter an der Target-Stromversorgung. Das funktioniert nur bei 
3.3V und bei Low-Power Anwendungen eher garnicht.

Axel S. schrieb:
aufmunternde Worte -- danke dafür.

von A. B. (Gast)


Lesenswert?

Bauform B. schrieb:
> Genau darum geht's mir auch. Ein guter Mittelweg wäre doch ein Call-
> und/oder Branch-Trace per TRACESWO. Aber ich finde absolut keinen
> Hinweis wie das funktionieren könnte, weder bei ST, noch bei ARM. Ist
> printf wirklich alles, was man aus TRACESWO raus locken kann? Ein halbes
> UART mehr, nett, aber das kann's doch nicht sein?

TRACESWO ist nur die Schnittstelle der TPIU nach außen. Und ist halt ein 
halbes UART (in einer der möglichen Konfigurationionen). Was in die TPIU 
hineingeht, ist durchaus konfigurierbar, z. B. Data Watchpoint 
Trigger, dazu muss man ins RM und die Doku von ARM schauen. Im Prinzip 
auch manuell konfigurierbar, nur ein paar Register "beackern". Man sucht 
sich die gewünschten Events heraus und setzt die entprechenden Bits ...

Der Haken dabei ist die Geschwindigkeit. Allein die Zeitstempel umfassen 
6 Bytes ... Das ergibt ruckzuck einen Überlauf. Deshalb alternativ 
synchrone Trace-Ausgänge, und zwar bis zu (theoretisch) 32 Bit breit. 
Real habe ich nur bis zu 4 Bit gesehen. Und irgendjemand muss die Daten 
eben auch in der Geschwindigkeit verdauen ...

von pegel (Gast)


Lesenswert?

Der SWV in der CubeIDE zeigt vieles das ich zugegeben nicht verstehe.
Auch ohne printf.

In den SWV Fenstern werden je nach Einstellungen massenhaft Ereignisse 
und Daten angezeigt.

von Axel S. (a-za-z0-9)


Lesenswert?

Bauform B. schrieb:
> Axel S. schrieb:
>>> Schade ist, dass man keine Potentialtrennung spendiert hat, obwohl die
>>> Steuersignale für Pegelwandler vorhanden sind, die man auch für
>>> Optokoppler nutzen könnte.
>>
>> Das ist ein open source Projekt. Du darfst dich da gerne austoben.
>> Allerdings ist es im Zweifel wesentlich einfacher, die Potentialtrennung
>> auf der USB-Seite vorzunehmen. USB-Isolatoren gibt es fix und fertig.
>
> Ein USB-Isolator kann das natürlich auch, aber dann hängt der
> ganze Adapter an der Target-Stromversorgung

Ja, und?

> Das funktioniert nur bei 3.3V und bei Low-Power Anwendungen
> eher garnicht.

Bahnhof. Das BMP hat doch Levelshifter (TXS0108) und kann damit 1.65V 
bis 5.5V auf der Targetseite. Das Target muß auch nur den Levelshifter 
versorgen, das BMP selber läuft aus der (isolierten) V_bus.

Außerdem brauchen geschätzt 95% der Anwender sowieso nie eine Isolation. 
Es ist schlicht nicht sinnvoll, das standardmäßig auf den Debug-Adapter 
zu packen.

von Johannes S. (Gast)


Angehängte Dateien:

Lesenswert?

die BMP mag ich auch am gernsten, vor allem weil man nichts 
konfigurieren muss. In VSCode reichen diese paar Zeilen, es muss 
praktisch nur der COM Port und das .elf file angegeben werden. Über die 
Environmentvariablen geht das auch allgemein, damit kann das einfach in 
andere Projekte kopiert werden. Mit STM32F1/F4 und nRF51 funtioniert das 
bei mir sehr gut, auch 200 kB Code ist in ein paar Sekunden geladen.
Als Hardware benutze ich diese:
https://de.aliexpress.com/item/32322884886.html
Die haben noch zwei Pins die für einen UART genutzt werden.
Hier im Forum ist U. Bonnes aktiv wenn es um BMP geht, er hat da auch 
einiges weiterentwickelt.
Das Original BMP ist jetzt wohl an Adafruit verkauft worden, die Quellen 
und das Repo gibt es aber noch.

aus der launch.json:
1
        {
2
            "cwd": "${workspaceRoot}",
3
            "name": "debug COM12",
4
            "BMPGDBSerialPort": "//./COM12",
5
            "interface": "swd",
6
            "type": "cortex-debug",
7
            "request": "launch",
8
            "servertype": "bmp",
9
            "device": "STM32F407VE",
10
            "executable": "../../BUILD/${workspaceFolderBasename}/DEBUG/${workspaceFolderBasename}.elf"
11
        },

hier ist noch ein älterer Artikel aus dem Forum dazu:
https://embdev.net/articles/STM_Discovery_and_Nucleo_as_Black_Magic_Probe

Aber auch die SuFu liefert einiges.

Edit:
Bild und svg für Aufkleber angefügt

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Bauform B. schrieb:
> Ist printf wirklich alles, was man aus TRACESWO raus locken kann?

Das geht schon einiges mehr. Der entsprechende Dialog in der Cube IDE 
zeigt es. Rot eingekreist ist das Flag für Log Meldungen, alles andere 
sind weitere Funktionen die darüber hinaus gehen.

von Johannes S. (Gast)


Angehängte Dateien:

Lesenswert?

gerade frisch von Mouser geliefert worden, der neue STLink V3. Soll mit 
BMP allerdings nur mit STM funktionieren wenn ich das richtig in 
Erinnerung habe,
aber für 9,13 € netto konnte ich nicht widerstehen. Da ist kein kleiner 
F103 mehr drauf sondern ein fetter F723.

von Bauform B. (bauformb)


Lesenswert?

A. B. schrieb:
> TRACESWO ist nur die Schnittstelle der TPIU nach außen. Und ist halt ein
> halbes UART (in einer der möglichen Konfigurationionen). Was in die TPIU
> hineingeht, ist durchaus konfigurierbar, z. B. Data Watchpoint Trigger

stimmt, die können sehr nützlich sein. Dann gibt es noch diverse 
Zyklenzähler. Für mehr als Benchmarks scheinen die nicht zu taugen. Das 
einzige, was in Richtung trace geht, sind die exception trace Päckchen. 
Für spezielle Fälle mag man die, aber einfach nur zuschauen, was das 
Programm macht, ist nicht drin.

Der entscheidende Unterschied ist doch, ob ich etwas ins Programm 
einbauen muss. Natürlich kann ich dann ganz gezielt genau die richtigen 
Daten raus holen. Aber ich hatte mir vom TRACESWO mehr versprochen. 
Insofern bieten die kleinen Cortex-M kaum mehr als printf über normale 
UARTs. Der Hardware-Aufwand für (halbwegs) echtes trace ist gleich 
soviel größer, dass das für mich nicht in Frage kommt.

> Der Haken dabei ist die Geschwindigkeit.

Das kommt noch dazu.

> Allein die Zeitstempel umfassen 6 Bytes

Es gibt auch kleinere, eigentlich in jeder Größe. Das ist dann das 
Delta-t zwischen zwei Päckchen.

> Und irgendjemand muss die Daten eben auch in
> der Geschwindigkeit verdauen ...

Da ist dann gleich USB der Flaschenhals. Aber kein Problem, Segger hat 
Adapter mit Ethernet ;)

von Stefan F. (Gast)


Lesenswert?

Bauform B. schrieb:
> Aber kein Problem, Segger hat Adapter mit Ethernet

Immer diese Schleichwerbung... ich find's Ok, wenn es wie hier zur Frage 
passt.

von pegel (Gast)


Lesenswert?

Johannes S. schrieb:
> der neue STLink V3

RS hat seine vermutlich gerade falsch einsortiert und findet sie nicht. 
:)

https://de.rs-online.com/web/p/debugger-programmiergerate-und-in-circuit-emulatoren/1961915/

Ist auch ein Adapter von 1,27mm auf "Normal" dabei?

von Bauform B. (bauformb)


Lesenswert?

Axel S. schrieb:
>> Das funktioniert nur bei 3.3V und bei Low-Power Anwendungen
>> eher garnicht.
>
> Bahnhof. Das BMP hat doch Levelshifter (TXS0108) und kann damit 1.65V
> bis 5.5V auf der Targetseite. Das Target muß auch nur den Levelshifter
> versorgen, das BMP selber läuft aus der (isolierten) V_bus.

Ja. OK. So geht's natürlich gut. Gibt es solche Isolatoren auch 
fertig? Der muss doch mehr als ein paar mA liefern?


Stefan ⛄ F. schrieb:
> Bauform B. schrieb:
>> Ist printf wirklich alles, was man aus TRACESWO raus locken kann?
>
> Das geht schon einiges mehr. Der entsprechende Dialog in der Cube IDE
> zeigt es. Rot eingekreist ist das Flag für Log Meldungen, alles andere
> sind weitere Funktionen die darüber hinaus gehen.

Vielen Dank für das Bild! Trace-Funktionen sind da ja auch nicht dabei. 
Wenn die Original-Software auch nicht mehr kann, brauche ich wohl nicht 
weiter zu suchen -- oder gerade? weil es Cube ist ;)

Johannes S. schrieb:
> ...der neue STLink V3...

Der wird auch nicht mehr können, die kleinen Chips sind der Engpass... 
Und er braucht wohl auch die Software von ST auf dem PC.

von Johannes S. (Gast)


Lesenswert?

pegel schrieb:
> Ist auch ein Adapter von 1,27mm auf "Normal" dabei?

nein, nur ein Flachbandkabel mit 1,27 mm 14 pol. Buchse auf beiden 
Seiten.

von pegel (Gast)


Lesenswert?

Johannes S. schrieb:
> nein, nur ein Flachbandkabel mit 1,27 mm 14 pol

Danke.
Dann werde ich doch lieber mal ein Nucleo mit V3 zum spielen nehmen.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Auch den

Johannes S. schrieb:
> Soll mit
> BMP allerdings nur mit STM funktionieren wenn ich das richtig in
> Erinnerung habe,

Mit der ST  Programmern funktioniert er sowieso nur mit ST Bausteinen. 
BMP als PC Programm fuer native STLinks funtioniert prinzipiell fuer 
alle Familien, die BMP unterstuetzt. Allerdings verweigert die STLink3 
Vararianten aktiv das Zusammenspiel mit anderen Familien.

von Andreas M. (amesser)


Lesenswert?

A. B. schrieb:
> Der Haken dabei ist die Geschwindigkeit. Allein die Zeitstempel umfassen
> 6 Bytes ... Das ergibt ruckzuck einen Überlauf. Deshalb alternativ
> synchrone Trace-Ausgänge, und zwar bis zu (theoretisch) 32 Bit breit.
> Real habe ich nur bis zu 4 Bit gesehen. Und irgendjemand muss die Daten
> eben auch in der Geschwindigkeit verdauen ...

Ich habe schon mit 16 Bit ETM@100Mhz (Der Vorläufer von Serial Wire 
Trace, Arm 966) und 4 Bit Serial Wire@50Mhz an Cortex M4 gearbeitet. Ist 
schon eine geniale Sache, aber man braucht auch einen anständigen 
Debugger damit man damit was anfangen kann. So sehr ich selbst 
Opensource mag, da muss man Geld in die Hand nehmen.

Die Debugger die wir verwenden haben 512MB onboard RAM, weder USB2.0 
noch 1GB/s Ethernet wäre schnell genug die Daten wegzuschaffen. Ich 
glaube die neuen Modelle haben USB3.0/3.1 damit sollte es dann gehen.

Die Software kommt altbacken daher ist aber sehr mächtig und nach 
einiger Zeit wünscht man sich so eine Umgebung auch für den GDB. (Wobei, 
deren Software kann auch mit GDB Debug Servern sprechen). Man kann im 
Trace-Modus auch rückwärts steppen. Ich kenne bsiher kein OSS die das 
auch kann.

von Stefan F. (Gast)


Lesenswert?

Andreas M. schrieb:
> Die Debugger die wir verwenden haben 512MB onboard RAM

Wofür brauchen/benutzen Debugger viel RAM?

von Bauform B. (bauformb)


Lesenswert?

Stefan ⛄ F. schrieb:
> Andreas M. schrieb:
>> Die Debugger die wir verwenden haben 512MB onboard RAM
>
> Wofür brauchen/benutzen Debugger viel RAM?

Mindestens für die Adressen. 32 Bit mal 100MHz sind 400MB pro Sekunde, 
oder nicht? Früher konnte ich noch 16 andere Signale mit aufzeichnen. 
Aber früher war ja alles viel besser.

von Stefan F. (Gast)


Lesenswert?

> Wofür brauchen/benutzen Debugger viel RAM?

Bauform B. schrieb:
> Mindestens für die Adressen. 32 Bit mal 100MHz sind 400MB pro Sekunde,
> oder nicht? Früher konnte ich noch 16 andere Signale mit aufzeichnen.
> Aber früher war ja alles viel besser.

Ich kann Dir leider nicht folgen, vermutlich weil ich keine Ahnung habe.

Nach meinem Verständnis kann ich mit einem Debugger in die CPU und den 
Speicher des laufenden Target hinein gucken. Und ich kann ein paar 
Konfigurationen vornehmen, wie SWO aktivieren und Haltepunkte setzen.

Dafür braucht der Debugger quasi keinen Speicher, denke ich. Was meinst 
du denn mit "Mindestens für die Adressen"? Was stellt ein solcher 
Debugger damit an?

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Hier im Thread sollte etwas mehr zwischen Debugger und Tracer 
unterschieden werden ;)

In den Cortex-M gibts ja nicht nur das Debuginterface, sondern Trace 
Makrozellen.
Diese lassen sich durch SWO anzapfen (langsam) oder mit dem 4Bit Sync 
Trace Interface mit vielen MHz.

Mit dem SWO lässt sich aber auch schon recht nett tracen, siehe Segger 
Systemview.

Den J-Trace musste ich auf Arbeit schonmal auspacken um einen Fehler in 
einem WLAN Stack zu finden.
Eine Logausgabe per UART war selbst auf 4MBaud zu langsam.
Debuggen veränderte auch das Zeitverhalten zu sehr.
Erst tracen per J-Trace und Ozone brachte das Übel zu tage.

von Johannes S. (Gast)


Lesenswert?

Ablaufverfolgung, Tracing, würde ich sagen.

von Thorsten S. (thosch)


Lesenswert?

Stefan ⛄ F. schrieb:
> Dafür braucht der Debugger quasi keinen Speicher, denke ich. Was meinst
> du denn mit "Mindestens für die Adressen"? Was stellt ein solcher
> Debugger damit an?

Hier geht es um Hardware Trace. Damit gehen dann so schöne Dinge wie 
Code Coverage Analysen oder Post-Mortem Debugging.
Damit sowas geht, muß natürlich der Debugger den Programmverlauf in 
Echtzeit mitloggen (also mindestens die Adressen der ausgeführten 
Befehle).

Beitrag #6131088 wurde von einem Moderator gelöscht.
von Stefan F. (Gast)


Lesenswert?

Thorsten S. schrieb:
> den Programmverlauf in
> Echtzeit mitloggen (also mindestens die Adressen der ausgeführten
> Befehle).

Danke, darunter kann ich mir etwas vorstellen.

von Karlos Santander (Gast)


Lesenswert?

Got a black magic Probe
Got a black magic Probe.

I got a black magic Probe
Got me so blind I can't see
That she's a black magic Probe
She's tryin' to make a devil out of me.

Don't turn your back on me baby
Don't turn your back on me baby.


Yes, don't turn your back on me baby
Stop messin' 'round with your tricks
Don't turn your back on me baby
You just might pick up my magic sticks.

Got your spell on me baby
Got your spell on me baby.

Yes you got your spell on me baby
Turning my heart into stone
I need you so bad - magic Probe
I can't leave you alone.

von Andreas M. (amesser)


Lesenswert?

Stefan ⛄ F. schrieb:
>> Wofür brauchen/benutzen Debugger viel RAM?
>
> Bauform B. schrieb:
>> Mindestens für die Adressen. 32 Bit mal 100MHz sind 400MB pro Sekunde,
>> oder nicht? Früher konnte ich noch 16 andere Signale mit aufzeichnen.
>> Aber früher war ja alles viel besser.
>
> Ich kann Dir leider nicht folgen, vermutlich weil ich keine Ahnung habe.
>
> Nach meinem Verständnis kann ich mit einem Debugger in die CPU und den
> Speicher des laufenden Target hinein gucken. Und ich kann ein paar
> Konfigurationen vornehmen, wie SWO aktivieren und Haltepunkte setzen.

Das würde ich als Grundfunktionalität bezeichnen. Es gibt aber auch 
Debugger die mehr können. Z.b. das oben erwähnte Tracing. In unserem 
Fall hier, zeichnet der Debugger wirklich jeden einzelnen Takt der CPU 
auf und zwar inklusive Speicherzugriffe, Programcounter, Exceptions.

Die Debuggersoftware hat dann eine Menge Intelligenz und kann im Prinzip 
den Systemzustand zu jedem zurückliegenden Zeitpunkt (fast) komplett 
bestimmen und anzeigen, indem sie den aktuellen Zustand nimmt und den 
Trace rückwärts rechnet. (Periphieregister mal ausgenommen) D.h. wenn 
ich z.B. einen Data Abort oder Undefined Instruction im Ram habe, dann 
kann ich selbst in einem Multitask-OS mit vielen Kontextwechseln relativ 
einfach den Verursacher bestimmen, da man sehr einfach zu verschiedenen 
Zeiten im Programmablauf springen kann ohne das System nochmal laufen zu 
lassen und ohne einen zeitlichen Einfluss durch das Debugging haben.

Mit den 512MB kommt man bei einer Cortex M4 mit 100 Mhz auf etwa 2,5 
Sekunden Laufzeit, hängt davon ab wieviel man davon im "WFE" verbringt.

von Cyblord -. (cyblord)


Lesenswert?

Stefan ⛄ F. schrieb:
> Nach meinem Verständnis kann ich mit einem Debugger in die CPU und den
> Speicher des laufenden Target hinein gucken. Und ich kann ein paar
> Konfigurationen vornehmen, wie SWO aktivieren und Haltepunkte setzen.

Womit du Eindrucksvoll zeigst, dass du weder vom Debuggen noch vom 
Tracen Ahnung hast. Aber trotzdem ne stramme Meinung zu deren 
Notwendigkeit. Das passt ja gut!

von Stefan F. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich kann Dir leider nicht folgen, vermutlich weil ich keine Ahnung habe.

Cyblord -. schrieb:
> Womit du Eindrucksvoll zeigst, dass ... vom Tracen Ahnung hast.

Sag ich doch!

> Aber trotzdem ne stramme Meinung zu deren Notwendigkeit.

Zum Tracen habe ich mich nicht geäußert. Möglicherweise beziehst du dich 
darauf, dass ich in diesem Forum ab und zu schreibe, dass ich Debugger 
ich Logmeldungen häufiger benutze.

Das bedeutet aber keinesfalls, dass ich Debugger für Unsinn halte. Meine 
Präferenz für Logmeldungen ist halt einfach meinen Anwendungsfällen und 
Gewohnheiten geschuldet. Für andere mag der Debugger hilfreicher sein. 
Auch das habe ich bereits hervor gehoben.

Was also soll dieses Nachtreten? Fühlst du dich jetzt erleichtert, oder 
hast du noch mehr Unrat loszuwerden?

Jetzt verrate du mal, wovon du keine Ahnung hast, dann kann ich zurück 
treten. Das wäre doch nur gerecht, oder?

von Bauform B. (bauformb)


Lesenswert?

Wenn ich kurz unterbrechen darf... Ich hab' endlich etwas gefunden was 
wohl nicht funktionieren wird. Die STM32L4 starten mit dem 4MHz-RC, BMP 
toggelt SWCLK "as fast as possible; adding frequency control would slow 
that down" (sinngemäß; natürlich finde ich die Quelle dafür nicht mehr). 
Irgendwo hab' ich auch 4.5MHz SW Bitrate gelesen. Das geht also nicht so 
einfach, unmöglich ist es aber auch nicht. Weiß man genaueres bzw. was 
ist denn aus der Frage geworden?
https://community.st.com/s/question/0D50X00009XkaQdSAJ/swd-clock-restrictions

Und noch was. Mal angenommen, ich will mein Programm nur ins RAM laden, 
nicht ins Flash. Dann sollte es doch ausreichen, nur den neuen IDCODE zu 
ergänzen?

von Cyblord -. (cyblord)


Lesenswert?

Stefan ⛄ F. schrieb:
>
> Das bedeutet aber keinesfalls, dass ich Debugger für Unsinn halte. Meine
> Präferenz für Logmeldungen ist halt einfach meinen Anwendungsfällen und
> Gewohnheiten geschuldet. Für andere mag der Debugger hilfreicher sein.
> Auch das habe ich bereits hervor gehoben.

Doch du hast dich da ganz klar gegen Debugger positioniert und mit 20 
Jahren Erfahrung geprotzt. Wenn man das mit Null Ahnung von der Materie 
tut, dann muss man Kritik schon aushalten.

> Jetzt verrate du mal, wovon du keine Ahnung hast, dann kann ich zurück
> treten. Das wäre doch nur gerecht, oder?

Sobald ich dazu eine Meinung lautstark vertrete, gerne. Ist aber bis 
jetzt noch nicht passiert.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Cyblord -. schrieb:
> Doch du hast dich da ganz klar gegen Debugger positioniert

Worauf konkret beziehst du dich?

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Bauform B. schrieb:
> Wenn ich kurz unterbrechen darf... Ich hab' endlich etwas gefunden was
> wohl nicht funktionieren wird. Die STM32L4 starten mit dem 4MHz-RC, BMP
> toggelt SWCLK "as fast as possible; adding frequency control would slow
> that down" (sinngemäß; natürlich finde ich die Quelle dafür nicht mehr).
> Irgendwo hab' ich auch 4.5MHz SW Bitrate gelesen. Das geht also nicht so
> einfach, unmöglich ist es aber auch nicht. Weiß man genaueres bzw. was
> ist denn aus der Frage geworden?

> https://community.st.com/s/question/0D50X00009XkaQdSAJ/swd-clock-restrictions

Warum fabulierst Du und testet nicht? Zumindestens beim Cortex-M habe 
ich noch nirgends Grenzen der SWD Frequenz bezueglich der Core Frequenz 
beobachtet. Natuerlich hat die JTAG/SWD Schnittstelle selbst Grenzen. ST 
hat aber nur fuer den H7 Spezifikationen veroeffentlicht, z.B. DS12923, 
Rev.1 Seite 227 "JTAG/SWD interface characteristics".

Und gerade habe ich getestet:
- Native BMP mit relativ aktueller Firmware
- ~ 20 cm 0.635 mm Kabel
- Adapter 10-pin, 1.27 mm auf 7-pin 2.54 mm einreihig
- ~ 20 cm 4-pin 1.27 mm auf Targetboard mit STM32L412KB

Probe und Attach auf programmiertes Board funktioniert. Also Mass Erase 
und Reset gemacht. Und fuer die Unglaeubigen auch noch einen Power 
Cycle. Jetzt laeuft das Teil nur mit dem internen Oszilator.

Probing laueft immernoch:
> blackmagic_hosted -s /dev/ttyACM0 -t

Black Magic Probe (v1.6.1-404-gc3a3f77-dirty)
Copyright (C) 2019  Black Sphere Technologies Ltd.
License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>;

Remote is Black Magic Probe v1.6.1-374-gd9d323f-dirty
Running in Test Mode
RESET_SEQ succeeded
AP   0: IDR=24770011 CFG=00000000 BASE=e00ff003 CSW=23000040
ROM: Table BASE=0xe00ff000 SYSMEM=0x1
0 0xe000e000: Generic IP component - Cortex-M4 SCS (System Control 
Space) (PIDR = 0x4000bb00c)-> cortexm_probe
1 0xe0001000: 0x00000000 <- does not match preamble (0xB105000D)
2 0xe0002000: Generic IP component - Cortex-M3 FBP (Flash Patch and 
Breakpoint) (PIDR = 0x4002bb003)
3 0xe0000000: 0xb1b1b1b1 <- does not match preamble (0xB105000D)
4 0xe0040000: 0x00000000 <- does not match preamble (0xB105000D)
5 0xe0041000: Debug component - Cortex-M4 ETM (Embedded Trace) (PIDR = 
0x4000bb925)

Programmieren geht:
> blackmagic_hosted -s /dev/ttyACM0 e_16arrayj_be.bin
...
Erase    37516 bytes at 0x08000000
Flashing 37516 bytes at 0x08000000
Success!

Und Verify auch:
> blackmagic_hosted -s /dev/ttyACM0 -V e_16arrayj_be.bin
...
ROM: Table END
Read/Verifed succeeded for 37516 bytes

Statt der Kommandozeilenbefehle haette ich natuerlich auch in Arm GDB 
/dev/ttyACM0 oeffnen koennen.


> Und noch was. Mal angenommen, ich will mein Programm nur ins RAM laden,
> nicht ins Flash. Dann sollte es doch ausreichen, nur den neuen IDCODE zu
> ergänzen?

Wenn das ein weiteres Mitglied einer Familie ist, langt das (fast). GDB 
bracuht auch noch eine Memorymap, um zu wissen, wo GDB wie schreiben 
kann.
Welches Device fehlt Dir denn?

: Bearbeitet durch User
von Bauform B. (bauformb)


Lesenswert?

Uwe B. schrieb:
> Warum fabulierst Du und testet nicht?

Weil ich noch keine BMP habe.

> Read/Verifed succeeded for 37516 bytes

OK, überzeugt!

> Welches Device fehlt Dir denn?

Ob eins fehlt weiß ich doch auch noch nicht, siehe oben. Aktuell liegen 
hier der STM32L451 und der L412. Der nächste wird wohl ein L496.

Vielen Dank!

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Fuer die STM32L4 Familie enthaelt BMP:
        ID_STM32L41  = 0x464u, /* RM0394, Rev.4 */
        ID_STM32L43  = 0x435u, /* RM0394, Rev.4 */
        ID_STM32L45  = 0x462u, /* RM0394, Rev.4 */
        ID_STM32L47  = 0x415u, /* RM0351, Rev.5 */
        ID_STM32L49  = 0x461u, /* RM0351, Rev.5 */
        ID_STM32L4R  = 0x470u, /* RM0432, Rev.5 */
        ID_STM32G03  = 0x466u, /* RM0444/454, Rev.2 */
        ID_STM32G07  = 0x460u, /* RM0444/454, Rev.2 */
        ID_STM32G43  = 0x468u, /* RM0440, Rev.1 */
        ID_STM32G47  = 0x469u, /* RM0440, Rev.1 */

BMP kannst Du PC-Hosted auch auf aktuellen STLinks oder FT2232H laufen 
lassen.

von Bauform B. (bauformb)


Lesenswert?

Uwe B. schrieb:
> Fuer die STM32L4 Familie enthaelt BMP:
ALLE STM32L4 bis auf die allerneuesten L4P und L4Q (die bei digikey 
noch nicht einmal gelistet sind).

Fantastisch, ich bin begeistert!

> BMP kannst Du PC-Hosted auch auf aktuellen STLinks oder FT2232H laufen
> lassen.

Sicher äußerst praktisch für die BMP-Entwicklung selbst. Aber da ist ja 
garnichts mehr zu tun ;) Ich mag erstmal ein rund-um-sorglos-Paket mit 
der originalen Hardware. Und dann träume ich von einer Hardware mit 
Potentialtrennung...

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Bauform B. schrieb:
> Ich mag erstmal ein rund-um-sorglos-Paket mit
> der originalen Hardware. Und dann träume ich von einer Hardware mit
> Potentialtrennung...

Dann verfolge http://www.sidprice.com/ Allerdings hat ein STM32F4 zu 
wenig USB Endpoints um ACM-GDB, ACM-UART und TraceSWO richtig zu 
implementieren. Da wird Sid noch gute Ideen brauchen.

Du kannst auch ein Eagle Design mit dem FT2232 und Potentialtrennung 
bekommen. Die verwendeten Silab Bausteine kommen allerdings nur bis 2.5 
Volt herunter.

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
Noch kein Account? Hier anmelden.