Forum: Mikrocontroller und Digitale Elektronik STM32: JTAG mit ST-LINK: Error in Initializing ST-Link device


von Verzweifelnder (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Folgende Meldungen sind Inhalt der Log-Datei nachdem in der Konsole des 
ST-LINK GDB-Servers "Error in Initializing ST-Link device" erscheint:

[2.625]  STM32_SysReset():  Failed to reset ST-Link device
[2.625]  STM32_InitDevice():  Failed to Perform System reset of ST-Link 
device
[2.625]  init_server_context():  Error in Initializing ST-Link device

Die JTAG-Verbindungen waren zuerst so wie in AN2586 (im Anhang) 
beschrieben. Da ich ein Board besitze, mit dem der ST-LINK halbwegs 
funktioniert, habe ich meine Schaltung entsprechend angepasst und bin 
immernoch beim selben Ergebnis.

Die Anleitung auf 
http://www.atollic.com/index.php/kb/3-debugging/11-kb_stlink habe ich 
auch schon einmal erfolglos durchgeführt.

Pinbelegung des 20-poligen JTAG-Steckers aktuell:

1                3V3    2  3V3
3  3V3 - 10KR - JNTRST  4  GND
5  3V3 - 10KR - JTDI    6  GND
7  3V3 - 10KR - JTMS    8  GND
9  3V3 - 10KR - JTCK    10 GND
11 JTCK                 12 GND
13 3V3 - 10KR - JTDO    14 GND
15 RST (norm. Besch.)   16 GND
17 GND - 10KR           18 GND
19 GND - 10KR           20 GND

Also alle Signalleitungen mit Pull-Up und Pin 9 und 11 verbunden.

Am Oszilloskop kann man sehen, dass sich auf allen Leitungen irgendwann 
der Pegel ändert. Der STM32 bekommt also durchaus irgendwelche Signale, 
wenn er auf TDO sendet.

Falls irgendwer einen Vorschlag oder noch besser die Lösung für dieses 
Problem hat, wäre ich sehr dankbar.

von Matthias (Gast)


Lesenswert?

Schaltplan?

Lade testweise mal die Keil-Eva runter. ST-LINK wird dort auch 
unterstützt und probier es damit aus.

Eigentlich braucht man nach der Atollic TrueStudio Installation (STM32 
Lite Version) nichts einzustellen, da es nur mit dem ST-LINK 
funktioniert.

von Verzweifelnder (Gast)


Angehängte Dateien:

Lesenswert?

So sieht das Signal am Oszi aus...

Am funktionierendem Board habe ich den Fehler nicht produzieren können - 
immer nur "Error in opening ST_LINK Device".

Nachdem ich Pin 9 und 11 wieder getrennt habe erscheint auch bei meinem 
Board nur noch diese Meldung im logfile.

Dem Signal an TDO nach scheint die Verbindung doch zu stimmen - hat 
irgendwer Rat?

Kennt jemand das JTAG-Protokoll so gut, dass er weis, was nicht passt?

Oder soll ich noch etwas anderes Messen?

von Lukas S. (lsimma)


Lesenswert?

Hallo Gast,

schön wäre Dich mit Namen ansprechen zu können, ist persönlicher...

Ich verwenden auch den ST-LINK mit dem Demoboard STM3210C-EVAL (via 
JTAGH) sowie mit einem eigenen Board von SenSol für die Kundenhardware 
(via SWD... weniger Leitungen).

Wichtig: Den ST-LINK must Du zuerst mit der neuen ST-LINK Firmware auf 
der st homepate updaten damit er SWD kann und damit er die neuen Devices 
kennt. "ST-Link firmware upgrade"
http://www.st.com//stonline/products/support/micro/files/stlinkupgrade.zip

Hier zuerst die gültige Beschreibung des ST-LINK inc. der korrekten 
Steckerbelegung.
http://www.st.com/stonline/products/literature/an/15285.htm
Siehe dazu Seite 8 (Kapitel 2.2) "Connection with STM32 applications"

Wir verwenden folgenden Pins am Kundenboard
ST-LINK          Hardware (STM32F103)
3     GROUND     GND
7     SW IO      PA13
9     SW CLK     PA14
Optional:
15     RESET     NRST (mit Wdst`s.)

----

Was bei mir mit ST-LINK klappt.

Mit der 32k Eval. Version von IAR klappt das Flashen und Debuggen via 
ST-LINK in beiden Modis hervorragend.

Mit der kostenfreien Truestudio Version klappt das Flashen via JTAG auf 
das Demoboard STM3210C-EVAL auch problemlos. Lt. Info ist bei der 
kostenfreien Version bei Truestudio das SWD nicht verfügbar daher nicht 
getestet.

Wenn ich den ST-Link gdbserver aus Truestudio manuell aufrufe dann kann 
(JTAG)via dem gdb von codesourcery g++ lite (arm-none-eabi-gdb.exe) über 
die commandline auch das elf flashen und debuggen....

----

Nur zum Testen und klären an was es liegt:
Installiere bitte die 32K Demo von IAR Workbench und prüfe ob es damit 
klappt, je nach Ergebnis läßt sich dann leichter weitersuchen.

Beste Grüße,
Lukas

von Lukas S. (lsimma)


Lesenswert?

Hallo,

hab das mit dem SenSol Board geprüft bei dem steht nur SWD zur 
Verfügung.

a) Den ST-LINK gdbserver so gestartet wie er ist, er will dabei via JTAG 
verbinden (es ist jedoch nur SWD vorhanden).

Fehler:
 Atollic TrueSTUDIO gdbserver for ST-Link.    Version 1.1.0 Pro
 Developed by Atollic AB for STMicroelectronics
 Copyright 2010, Atollic AB and STMicroelectronics
 Starting server with the following options:
        Persistant Mode            : Enabled
        LogFile Name               : debug_log.txt
        Logging Level              : 31
        Listen Port Number         : 61234
        Status Refresh Delay       : 15s
        Verbose Mode               : Enabled
 Error in Initializing ST-Link device
 GDB server exited


b) Wenn ich den gdbserver nun mit der Option -d starte dann wird eine 
SWD Verbindung aufgebaut. Dies klappt dann auch problemlos. Und mit dem 
codesourcery gdb kann ich dann ein elf file flashen und den code 
debuggen.
 ST-LINK_gdbserver.exe -d -c config.txt

--> Versuche es doch mal nur mit den SWD Leitungen das sollte dann schon 
mal klappen.


Grüße,
Lukas

von Verzweifelnder (Gast)


Lesenswert?

Hallo,

ich hätte nicht gedacht, dass noch jemand antwortet :D

Den ST-LINK habe ich geupdatet und er hat auch funktioniert, sowohl im 
SWD- als auch im JTAG-Modus. Nur eben auf der einen Platine nicht (weder 
SWD noch JTAG).

Keil hatte ich auch heruntergeladen und probiert - "Internal command 
error" lautete die äußerst informative Fehlermeldung.

Ich habe den Fehler mittlerweile gefunden - er war wie erwartet sehr 
"dumm":
In der Platine war ein "kleiner Schönhetsfehler": Die 
Spannungsversorgung war nicht mit der üblichen Beschaltung der 
Analogversorgung verbunden und die Luftlinie in EAGLE war nicht 
sichtbar, weil die Leiterbahn auf der anderen Seite über dieser verlief. 
Als ich eine andere Platine bestückt habe, wollte ich in meiner 
Verzweiflung nur einmal den Controller allein prüfen und habe nichts 
außer diesen und dem JTAG-Stecker aufgelötet. Als dann dieselbe 
Fehlermeldung erschien, habe ich gewusst, dass es nicht an der einen 
Platine liegen konnte und den Versorgungsteil bestückt - tadaa es 
funktioniert. Auf der Suche nach einem Fehler im Versorgungsteil der 
Problemplatine bin ich dann auf den genannten Fehler gestoßen - 
funktioniert ebenfalls.
Ich habe nicht gewusst, dass der PLL zum Analogteil gehört und nicht 
daran gedacht, dass es daran liegen könnte, also zuerst auch nicht in 
dessen Versorgungsteil nach Fehlern gesucht.

Was ich aud meiner Fehlersuche noch herausgeufnden habe: Bei der 
Beschaltung des JTAG-Steckers auf der eigenen Platine kann man sich 
zumindest im Zusammenhang mit dem ST-LINK die im Datenblatt angegebenen 
Widerstände sparen - in meiner Verzweiflung habe ich überall den Fehler 
gesucht und auch den ST-LINK einmal geöffnet und festgestellt, dass das 
die entsprechenden Pins nicht bzw. mit GND verbunden sind.

Einen seltsames Verhalten zeigt der ST-LINK aber:
Manchmal startet das Programm auch nach x-Versuchen nicht, erst wenn ich 
z.B. die Reihenfolge einer Variablendeklaraton ändere oder einen 
Initialisierungswert oder ähnliche Veränderungen vornehme, die mit der 
Funktion des Programms an sich nichts zu tun haben. Auch ein kompletter 
Rebuild schafft keine Abhilfe. In solchen Fällen beendet der JTAG-Server 
einfach und ich mus Atollic TrueStudio neu starten, weil ich auch in der 
Debug-Perspektive nichts mehr terminieren kann - es bleibt ansonsten 
hängen.
Aber wenn man weis, dass nur minimalste Änderungen am Progaramm 
vorgenommen werden müssen, ist es nicht so schlimm - bis ich es 
herausgefunden habe hatte ich aber die Befürchtung, der µC hätte das 
Zeitliche gesegnet.

Vielleicht kennt jemand die Lösung dieses Problems - dann wäre ich und 
eventuell auch andere über eine Antwort dankbar.


Vielen Dank für Eure Bemühungen - speziell auch an Lukas!

von Wacek (Gast)


Lesenswert?

Verzweifelnder, I've just had the same problem. I got "internal command 
error" message when trying to debug using ST-Link. I googled the error 
and there came your post. It turned out that I forgot to solder EMI 
filter and analog section had no power supply. Thank you so much :-)

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.