Forum: Mikrocontroller und Digitale Elektronik STLINK-V3MINIE auslesen


von Christoph K. (chriskuku)


Lesenswert?

Habe jetzt einen ST-LINK V3MINIE hier vor mir und würde ihn, bevor ich 
die Firmware auf den neuesten Stand bringe (STLinkUpgrade.app, macOS), 
gerne auslesen, um die Original-Firmware zu sichern.
Leider hat der Support der st-link utilities für macOS mit der Version 
1.8 geendet.

Versuche es gerade mit STM32CubeProgrammer, aber das Programm meckert, 
weil  kein Target angeschlossen ist.
1
0:58:40 : UR connection mode is defined with the HWrst reset mode
2
10:58:40 : UR connection mode is defined with the HWrst reset mode
3
10:58:40 : ST-LINK SN  : 001B003A3234512457333831
4
10:58:40 : ST-LINK FW  : V3J15M7
5
10:58:40 : Board       : STLINK-V3MINIE
6
10:58:40 : Voltage     : 0.00V
7
10:58:40 : Error: Unable to get core ID
8
10:58:40 : Error: No STM32 target found! If your product embeds Debug Authentication, please perform a discovery using Debug Authentication

Ich müßte doch 512KB auslesen, also 0x80000 ab 0x0800000 ?

von Wastl (hartundweichware)


Lesenswert?

Christoph K. schrieb:
> Ich müßte doch 512KB auslesen, also 0x80000 ab 0x0800000 ?

Welche Tatsache stimmt dich optimistisch dass dein ST-Link
nicht vor dem Auslesen geschützt ist?

von Andreas B. (abm)


Lesenswert?

Bei den neueren ST-Link ist RDP 2 gesetzt, bei den älteren RDP 1. Also 
nix mit auslesen, bei den neueren ist mit RDP 2 sogar SWD/JTAG 
abgeschaltet.

von Christoph K. (chriskuku)


Lesenswert?

Wastl schrieb:
> Christoph K. schrieb:
>> Ich müßte doch 512KB auslesen, also 0x80000 ab 0x0800000 ?
>
> Welche Tatsache stimmt dich optimistisch dass dein ST-Link
> nicht vor dem Auslesen geschützt ist?

Hab ich, ehrlich gesagt, gar nicht in Erwägung gezogen. Aber wenn dem so 
ist, dann geht eben nur Upgrade und durch. Danke für den Hinweis.

von Gerd E. (robberknight)


Lesenswert?

Bei den ganz alten stlinks auf basis der STM32F103 gab es mal jemanden 
der die readout-protection geknackt hatte und die firmware-images 
irgendwo zum download gestellt hatte.

Bei den neueren hab ich davon noch nix gesehen. Da die deutlich neuere 
controller verwenden und außerdem das ganze swd aus ist dürfte das aber 
schwerer werden. vermutlich ein fall für voltage glitching, em fault 
injection oder eine der anderen angriffstechniken.

von Sebastian R. (sebastian_r569)


Lesenswert?

Gerd E. schrieb:
> Bei den ganz alten stlinks auf basis der STM32F103 gab es mal jemanden
> der die readout-protection geknackt hatte

Na, es gab mal eine einzelne Version für sehr kurze Zeit, bei der ST 
vergessen hat, den Schutz zu aktivieren - Also ging das ganz ohne 
kriminelle Energie. Vermutlich ärgern sie sich bis heute darüber.

von Nemopuk (nemopuk)


Lesenswert?

Gerd E. schrieb:
> vermutlich ein fall für voltage glitching

Papperlapapp! Es ist sicher einfacher, einen Angestellten von ST zu 
bestechen oder zu erpressen. Die Chinesen scheuen sich auch nicht davor, 
sich zum Zwecke des "Know-How Transfers" ganz normal als Fachkraft 
einstellen zu lassen.

: Bearbeitet durch User
von Christoph K. (chriskuku)


Lesenswert?

Habe jetzt das STLINK-V3MINIE "geupgraded". Habe an den Edge Connector 
einen 2reihigen Pinheader angelötet und ein Target (STM32H503 blue pill) 
verbunden.
1
Target - STLINKV3
2
   GND - GND
3
 SWCLK - CLK 
4
 SWDIO - TDO
5
6
17:51:30 : STM32CubeProgrammer API v2.20.0 | MacOS-64Bits 
7
17:51:35 : UR connection mode is defined with the HWrst reset mode
8
17:51:35 : UR connection mode is defined with the HWrst reset mode
9
17:51:36 : ST-LINK SN  : 001B003A3234512457333831
10
17:51:36 : ST-LINK FW  : V3J16M9
11
17:51:36 : Board       : STLINK-V3MINIE
12
17:51:36 : Voltage     : 0.21V
13
17:51:36 : Error: Unable to get core ID
14
17:51:36 : Error: No STM32 target found! If your product embeds Debug Authentication, please perform a discovery using Debug Authentication

Man sieht, Firmware Version ist höher. Bei Spannung wird 0.21V angezeigt 
(?). Irgendwo im ST-Forum sagte jemand, man müsse 3,3V des Target mit 
Vdd verbinden (?). Erstens habe ich nur einen Pin Vcc und zweitens ist 
mir momentan nicht wohl dabei. Vielleicht ist aber auch der 14pol. 
Miniheader anders belegt als der 10pol. Edge-Connector.

Jemand eine Idee?

EDIT: habe festgestellt, daß man tatsächlich den 3,3V pin des Targets 
mit dem Vcc Pin des STLINKV3Minie verbinden muß. Ich hatte erst mal am 
nicht verbundenen Vcc Pin gemessen und da maß ich gut 0,2V, was 
STM32Prog ja auch anzeigt. Dann habe ich die Verbindung 3,3V Target mit 
dem Vcc Pin hergestellt und nun zeigt STM32CubeProgrammer 3,28 V an. 
Allerdings verbindet er nicht zum Target.

: Bearbeitet durch User
von Nemopuk (nemopuk)


Lesenswert?

Christoph K. schrieb:
> Irgendwo im ST-Forum sagte jemand, man müsse 3,3V des Target mit
> Vdd verbinden

Das wird wohl nötig sein, ist normal. Damit werden die 
Schnittstellentreiber versorgt, so dass ihre Pegel ans Target angepasst 
sind.

Falls es dann immer noch nicht geht, setze den Boot0 Jumper auf 1 (High) 
und drücke dann den Reset Button.

von Nemopuk (nemopuk)


Lesenswert?

Christoph K. schrieb:
> Allerdings verbindet er nicht zum Target.

Wie gesagt: setze den Boot0 Jumper auf 1 (High) und drücke dann den 
Reset Button.

von Alexander (alecxs)


Lesenswert?

Christoph K. schrieb:
> Habe jetzt das STLINK-V3MINIE "geupgraded"

Da hast Du aber zweimal überlegt das zu schreiben - "aktualisiert" würde 
es wohl nicht ganz treffen.

von Christoph K. (chriskuku)


Lesenswert?

Nemopuk schrieb:
> Christoph K. schrieb:
>> Allerdings verbindet er nicht zum Target.
>
> Wie gesagt: setze den Boot0 Jumper auf 1 (High) und drücke dann den
> Reset Button.

Das STM32H503 Board hat für BOOT0 resp. NRST jeweils einen Druckknopf. 
Schwierig, die "hintereinander" zu drücken und mit der dritten Hand dann 
noch den Connect Button vom STM32CubeProgrammer. Gut, mit meinem 
Patschemittelfinger versucht, also BOOT0 gedrückt, den haltend, NRST 
dazu gedrückt, beide haltend und dann mit dem Mauscursor den Connect 
button? Führt leider immer noch zum Connect-Fehler.

: Bearbeitet durch User
von Nemopuk (nemopuk)


Lesenswert?

Christoph K. schrieb:
> Das STM32H503 Board hat für BOOT0 resp. NRST jeweils einen Druckknopf.
> Schwierig, die "hintereinander" zu drücken und mit der dritten Hand dann
> noch den Connect Button vom STM32CubeProgrammer.

Es ist nur wichtig, dass der µC mit Boot0=1 startet. Also Boot0 und 
Reset drücken, dann Reset loslassen. Von da an läuft der Bootloader, der 
auch die Kommunikation via SWD zulässt. Wann du den Programmieradapter 
verbindest ist egal, Hauptsache danach.

Programme, die mit der Cube IDE generiert wurden, deaktivieren SWD 
hingegen standardmäßig.

Funktioniert dein Mikrocontroller überhaupt? Kannst du den Bootloader 
seriell ansprechen? Hast du da ein funktionierendes Programm drauf?

: Bearbeitet durch User
von Christoph K. (chriskuku)


Lesenswert?

Nemopuk schrieb:
...
> Funktioniert dein Mikrocontroller überhaupt? Kannst du den Bootloader
> seriell ansprechen? Hast du da ein funktionierendes Programm drauf?

Ja, hatte ihn vorher mit blackmagic Pill programmiert über den SWD 
header. Funktioniert alles.

So, wie Du es jetzt beschreibst, habe ich es mal gemacht (BOOT0 
gedrückt, gehalten, NRST gedrückt und losgelassen, BOOt0 weiter 
gehalten, Connect gedrückt - keine Verbindung).

Ich könnte noch mal ein Mass-Erase des Targets machen (mit einem anderen 
Programmer).

: Bearbeitet durch User
von Max D. (max_d)


Lesenswert?

Gerd E. schrieb:
> Bei den ganz alten stlinks auf basis der STM32F103 gab es mal
> jemanden
> der die readout-protection geknackt hatte und die firmware-images
> irgendwo zum download gestellt hatte.
>
> Bei den neueren hab ich davon noch nix gesehen. Da die deutlich neuere
> controller verwenden und außerdem das ganze swd aus ist dürfte das aber
> schwerer werden. vermutlich ein fall für voltage glitching, em fault
> injection oder eine der anderen angriffstechniken.

Er hat einfach das update-tool disassembliert. st hatte es da nich sooo 
ernst genommen mit der cybersecurity: 
http://www.taylorkillian.com/2013/01/retrieving-st-linkv2-firmware-from.html

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.