Forum: Mikrocontroller und Digitale Elektronik J-Link(CN), SW4STM32 Debug instabil


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

ich wollte mal den J-Link für ein kleines STM32F103 Board probieren.

Mit der JLink Debugger Software von Segger funktioniert das auch, aber 
wenn ich aus SW4STM32 debugge, ist das ein Glücksspiel wie lange es 
dauert bis zum:

No source available for "0x0"

Ich nenne das mal Todessprung. Habe verschiedene Geschwindigkeiten wie 
auch "Auto" probiert, aber ich lande immer wieder dort.
Manchmal kann ich Einzelschritt ausführen, so schnell ich klicken kann 
und es läuft eine Weile, manchmal ist schon nach ein paar Schritten 
Schluß.

Welche Einstellung kann das sein?
Soviel ich weiss, ist der Treiber für JLink-Debugger und das eclipse 
Segger Plugin der Gleiche.

Das Ganze läuft unter Linux.

Danke schon mal

von Til S. (Firma: SEGGER) (til_s)


Bewertung
0 lesenswert
nicht lesenswert
Hast du mal hier geschaut?
https://www.segger.com/products/debug-probes/j-link/technology/ides/system-workbench-for-stm32/

pegel schrieb:
> Soviel ich weiss, ist der Treiber für JLink-Debugger und das eclipse
> Segger Plugin der Gleiche.
Meinst du den J-Link GDB Server?


Ansonsten muss es denn System Workbench sein? Einfacher geht es mit 
Embedded Studio, das gibt es auch für Linux:
https://www.segger.com/products/development-tools/embedded-studio/

: Bearbeitet durch User
von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort.

Nach der Anleitung habe ich es eingerichtet.

Hast Recht, ich meine den GDB Server.

Ich habe mich an System Workbench gewöhnt und möchte auch dabei bleiben.
Mit ST-Link und SWD funktioniert auch alles Einwand frei.

Das war ein Versuch es mit einem JTAG zu probieren, schon weil ich 
inzwischen ein paar Boards mit der JTAG Buchenleiste habe.

Irgend wie hatte ich gehofft, dass es wie beim ST-Link einfach läuft.

Mittlerweile habe ich alle Vorschläge die ich im Netz finden konnte 
probiert.

Die 2,4MB grosse LOG Datei habe ich jetzt untersucht und es scheint 
alles im Einzelschritt gut zu laufen bis das Erste:

JLINK_IsHalted()  returns FALSE

auftaucht. Danach werden alle Register nur mit Null gelesen

JLINK_ReadReg(Rxx)  returns 0x00000000

von Til S. (Firma: SEGGER) (til_s)


Bewertung
0 lesenswert
nicht lesenswert
Am besten das gleiche nochmal bei uns im Forum posten bzw. eine Support 
Email schreiben. Die J-Link Kollegen helfen dann gerne weiter.
https://forum.segger.com/

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Na ja,
ist aber ein China Teil.
Deshalb wollte ich das eigentlich vermeiden. ;)

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich werde mich mit der Erkenntnis:

JLINK_IsHalted()  returns FALSE

erneut auf die Suche begeben.

von Til S. (Firma: SEGGER) (til_s)


Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> Na ja,
> ist aber ein China Teil.
> Deshalb wollte ich das eigentlich vermeiden. ;)

Ok, das erklärt einiges ;-). Dafür können wir natürlich keinen Support 
geben.

Vielleicht dann doch mal die paar Euro für einen J-Link EDU Mini 
investieren?
https://www.segger.com/products/debug-probes/j-link/models/j-link-edu-mini/

von Gerd E. (robberknight)


Bewertung
0 lesenswert
nicht lesenswert
Hast Du irgendwo ein Discovery- oder Nucleo-Board von ST rumfliegen? Die 
dürftest Du ganz offiziell auf Jlink umflashen. An den SWD-Pins von 
denen kannst Du auch andere Targets anschließen. Damit bekämst Du dann 
vermutlich eher Support von Segger als mit Deiner dreisten Raubkopie.

Könnte es vielleicht ein elektrisches Problem sein? Wie sieht es mit der 
Masseverbindung zwischen Target und Jlink aus? Läuft das SWD über 
längere Einzeldrähte oder gar ein Breadboard?

SWD ist halt ein recht fixes serielles Protokoll. Wenn da die Leitungen 
nicht für geeignet sind kann es schnell mal zu Problemen kommen.

Daß die Probleme mit dem ST-Link nicht auftreten muss an der Stelle 
nicht unbedingt etwas heißen: das JLink ist deutlich mehr auf 
Geschwindigkeit optimiert und holt da mehr raus als das ST-Link.

von Christopher J. (christopher_j23)


Bewertung
1 lesenswert
nicht lesenswert
Gerd E. schrieb:
> Hast Du irgendwo ein Discovery- oder Nucleo-Board von ST rumfliegen? Die
> dürftest Du ganz offiziell auf Jlink umflashen. An den SWD-Pins von
> denen kannst Du auch andere Targets anschließen. Damit bekämst Du dann
> vermutlich eher Support von Segger als mit Deiner dreisten Raubkopie.

Vermutlich bekommt er noch eher Support aber offiziell ist das auch 
nicht erlaubt. Aus den "Terms of use" 
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/
> The firmware is for use with evaluation boards only.
> It is not for use with custom hardware.

Ich verstehe das jedenfalls so, dass man mit dem umgewandelten J-Link 
nur noch das Target auf dem Dev-Board beglücken darf und allenfalls noch 
ein anderes Dev-Board anschließen darf aber definitiv keine "custom 
hardware" wo ich das Bluepill dazuzählen würde.

: Bearbeitet durch User
von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@robberknight
Das SWD funktioniert ohne Probleme mit dem ST-Link.
Das J-Link habe ich mit "mal so mit bestellt" zum probieren.
Ich wollte sehen, welche anderen Möglichkeiten das bietet.
Sollte eben JTAG und nicht SWD sein.

Die Verbindung ist direkt das 20pol Flachkabel zwischen J-Link und 
Board.
Weiter nichts dazwischen. Verschiedene Geschwindigkeiten habe ich 
eingestellt, runter bis zum Fußgänger Betrieb ;)

Mit der Segger Debugger Software läuft es auch, deshalb bin ich der 
Meinung das es nur eine Einstellung ist.

@christopher_j23
Das sehe ich auch so. Für ein EFM32 habe ich so ein J-Link Ableger an 
Board, dort ist das auch so.

Leider hat auch das offizielle Edu Mini keinen Support, wäre also das 
gleiche Glücksspiel, nur teurer.


Im Hinterkopf habe ich da immer noch so etwas wie das zu entfernende:
srst_only aus der Konfiguration beim ST-Link SWD.

Es wäre eben nur Schade und gegen die "Bastler Ehre" wenn es nicht 
läuft.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Als Beispiel nutze ich jetzt ein einfaches LED Blinky mit HAL-Delay.
Ohne WDT, Power Modes oder sonst etwas.

von Til S. (Firma: SEGGER) (til_s)


Bewertung
0 lesenswert
nicht lesenswert
Christopher J. schrieb:
> Ich verstehe das jedenfalls so, dass man mit dem umgewandelten J-Link
> nur noch das Target auf dem Dev-Board beglücken darf und allenfalls noch
> ein anderes Dev-Board anschließen darf aber definitiv keine "custom
> hardware" wo ich das Bluepill dazuzählen würde.

Korrekt, ein anderes ST Evalboard anschließen wäre noch ok aber Custom 
Hardware oder so geht leider nicht.

pegel schrieb:
> Leider hat auch das offizielle Edu Mini keinen Support, wäre also das
> gleiche Glücksspiel, nur teurer.

Du würdest definitiv mehr Support bekommen als mit deinem J-Link Clone. 
Einfach bei uns im Forum melden, die J-Link Entwickler helfen da weiter.

von Oldie (Gast)


Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> Irgend wie hatte ich gehofft, dass es wie beim ST-Link einfach läuft.

Das ist genau der Grund, weshalb ich immer wieder beim ST-Link lande. 
Nach diversen Versuchen mit J-Links bin ich des Experimentierens leid. 
Ich kann absolut nicht nachvollziehen was die Leute immer am J-Link so 
toll finden.

von Til S. (Firma: SEGGER) (til_s)


Bewertung
0 lesenswert
nicht lesenswert
Oldie schrieb:
> pegel schrieb:
>> Irgend wie hatte ich gehofft, dass es wie beim ST-Link einfach läuft.
>
> Das ist genau der Grund, weshalb ich immer wieder beim ST-Link lande.
> Nach diversen Versuchen mit J-Links bin ich des Experimentierens leid.
> Ich kann absolut nicht nachvollziehen was die Leute immer am J-Link so
> toll finden.

Er benutzt ja keinen J-Link sondern einen J-Link Clone. Die Probleme 
haben damit also nichts mit dem J-Link zu tun. Es ist wie immer, es gibt 
nicht das perfekte Werkzeug, sondern nur das perfekte Werkzeug für eine 
bestimmte Aufgabe. Wenn dir also eine ST-Link ausreicht, ist das doch 
super.
Die Leute finden am J-Link z.B. toll, dass er einfach funktioniert und 
von allen IDEs unterstützt wird.
Welche Probleme hattest du denn mit dem J-Link?

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Til S. schrieb:
> Er benutzt ja keinen J-Link sondern einen J-Link Clone. Die Probleme
> haben damit also nichts mit dem J-Link zu tun.

Wir haben es verstanden! ;)

Abschliessend:

bei der Suche nach der Fehlermeldung habe ich festgestellt, dass der 
Fehler auch bei anderen ARMs und anderen IDEs auftritt.

ich habe extra ein neues Windows installiert, die aktuellen Win 
Programme geladen, alles funktioniert mit dem CLONE
Firmware Update sagt es ist die neueste Version.
Bleibt also nur das (Linux?) eclipse Plugin bzw. dessen Einstellungen.
eclipse unter Win habe ich keine Lust mehr zu installieren.

Konsequenz:
ich habe ein teures (7,80€) 20 pol Flachkabel, an das ich den 10 pol 
Stecker zum ST-Link anflanschen werde. Na gut, zusammen mit dem Gehäuse 
und USB Kabel rechnet es sich sogar. ;)
Alles was Segger ist, wird deinstalliert.
Damit ist dann auch den Lizenzen genüge getan und mein Ausflug in die 
Welt von J-Link beendet.

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> ich wollte mal den J-Link für ein kleines STM32F103 Board probieren.

Nachdem du mir bei meinem BMP/eclipse Problem Tipps gegeben hattest 
könntest du das ja auch ausprobieren :)
Ich habe SW4STM32 auch gerade nochmal installiert, es ist ja das gleiche 
eclipse das ich verwende, nur mit anderen/weiteren Plugins die zB die 
Debugconfig mit dem STLink vereinfacht integriert hat.
Die 'GDB Hardware Debugging' Launch Config ist da auch vorhanden, die 
gehört wohl zum Standard CDT PlugIn. Da sind genau die Einstellungen die 
ich in meinem Thread Beitrag "Eclipse mit Black Magic Probe" 
beschrieben habe.
Wenn dein 'kleines STM32F103 Board' das BluePill ist kann man das als 
Debug Hardware nehmen, dafür gibt es auch fertige Binaries. Dann ist 
natürlich noch ein zweites Board als Target nötig. Ansonsten lassen sich 
auch die China Clones umprogrammieren. Ein originales STLink würde ich 
aber nur umprogrammieren wenn du das im Griff hast, die haben einen 
verschlüsselten Bootloader und wenn der kaputt ist muss man etwas suchen 
um den wiederherzustellen.
Auch wenn ich da noch ein bisschen mit der Konfig kämpfe, ich finde die 
BMP ist eine gute Lösung. Die ist einfacher zu konfigurieren weil OOCD 
wegfällt und damit ist einfacher zu automatisieren. Vielleicht kann man 
ILG noch dazu überreden ein PlugIn dafür zu schreiben :) Aber die 
Einstellungen die ich gepostet habe funktionieren schon, ich schreibe da 
später noch was dazu.

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> Abschliessend:
>
> bei der Suche nach der Fehlermeldung habe ich festgestellt, dass der
> Fehler auch bei anderen ARMs und anderen IDEs auftritt.

kann das nicht auch ein Fehler im Code sein? Die Meldung kenne ich als 
Nullpointer Zugriff bei Fehler in meinen Quellen. Einmal weil ich C++11 
Features benutzt habe aber der Compiler auf C++98 stand, einmal weil 
eine HAL Struktur für den FSMC nicht komplett gefüllt war und je nach 
Stackinhalt böse Nebeneffekte auftraten.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@jojos
Vielen Dank für den Hinweis.

Ein BMP aus einem BluePill Board habe ich mir auch schon mal erfolgreich 
gebaut. Aber nie wirklich benutzt.

Da ich aber mehrere verschiedene STM32 Boards habe die schon selbst 
einen ST-Link mit bringen, hat sich bei mir zum Schluss alles auf die 
problemlose Funktion und den passenden Stecker reduziert.

So wie bei "Oldie" vermutlich auch.

Wenn es einen funktionierenden China PingPong Adapter mit passendem 
Stecker gegeben hätte, hätte ich auch den genommen.
Wie gesagt, reiner Bastler ohne finanzielle Vorteile.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Johannes S. schrieb:
> kann das nicht auch ein Fehler im Code sein?

eher nicht.
Mein letzter Versuch war so einfach, dass es praktisch nicht sein kann.
1
  while (1)
2
  {
3
  /* USER CODE END WHILE */
4
5
  /* USER CODE BEGIN 3 */
6
    HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
7
    HAL_Delay(500);
8
    a++;
9
10
  }

Manchmal kann ich den Einzelschritt so schnell ich klicken kann 
ausführen und es funktioniert bis zum Zeitpunkt X, manchmal komme ich 
gar nicht erst bis zu der Stelle.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.