Stm32f407 flashen

Gast #5602081
Lesenswert?

Hallo zusammen.

Ich habe bisher ausschließlich mit Arduino gearbeitet und stehe vor 
einen
für euch wahrscheinlich kleinen Problem.

Es geht um meinen neuen 3D Drucker. Es war bisher so: wenn ich zum 
flashen in den bootloader wollte, konnte ich kurz nach dem einschalten 
innerhalb von 3 Sekunden auf dem Touchscreen tippen, und ich war im 
flashmodus. Dass hat paar mal einwandfrei funktioniert. Jetzt geht gar 
nichts mehr. Wie schaffe ich es, beim einschalten in den flashmodus zu 
gelangen?

Danke vielmals!
Angehängte Dateien:
Gast #5602087
Lesenswert?

Schau zuerst ins "STM32F4 Reference Manual" Kapitel 2.4 "Boot 
configuration". Die Zuordnung der Pins findest du im "STM32F407 
Datasheet". Außerdem solltest du einen Blick ins "STM32F40x Errata 
Sheet" werfen, um böse Überraschungen zu vermeiden.

Diese drei Dokumente sollten ohnehin Pflichtlektüre sein.

Um es kurz zu machen: Der Pin Boot0 muss auf HIGH und der Pin Boot1 muss 
auf LOW. Dann den Reset Knopf drücken.

Hast du einen konkreten Grund, warum du keinen ST-Link Adapter 
verwendest? Ich frage, weil du mit dem auch debuggen könntest. Als 
ehemaliger Arduino Nutzer könnte das ein sehr angenehmes Erlebnis 
werden.
#5602100
Lesenswert?

Danke für die schnelle Anwort Stefanus.

Ich bin gestern zum ersten mal in die Verlegenheit gekommen einen STM32 
zu flashen. Hab heute gelernt, dass man dafür einen ST-Link braucht, um 
den Chip zu flashen. Werd mir auf jeden Fall 2 Stück anschaffen.

Hab mit dem Gedanken gespielt komplett auf STM32 umzusteigen, aber das 
ist halt Neuland für mich und wahrscheinlich auch etwas schwieriger als 
Arduino...

Die Vorteile liegen aber eigentlich auf der Hand: Schneller, Sparsamer 
im Stromverbrauch.

Viele Grüße und Danke nochmal!
Gast #5602479
Lesenswert?

Mehmet Ali Ç. schrieb:
> Hab heute gelernt, dass man dafür einen ST-Link braucht, um
> den Chip zu flashen.

Es geht auch über den seriellen Bootloader. Dann muss man wie gesagt die 
Boot Pins entsprechend einstellen.

> Die Vorteile liegen aber eigentlich auf der Hand: Schneller, Sparsamer
> im Stromverbrauch.

Sparsamer? Eher nicht und wenn schon, dann nur bei den L Modellen. 
Schneller ist nur von Vorteil, wenn man die Geschwindigkeit benötigt.

Als Arduino Nutzer kannst du schon aus den "kleinen" AVR 
Mikrocontrollern eine Menge mehr heraus holen, indem du auf das Arduino 
Framework verzichtest. Insbesondere auf digitalWrite() und 
digitalRead().
#5602488
Lesenswert?

Mehmet Ali Ç. schrieb:
> Verlegenheit gekommen einen STM32
> zu flashen. Hab heute gelernt, dass man dafür einen ST-Link braucht

Das ist so nicht korrekt. Willst Du nur flashen, dann kannst Du den 
integrierten Bootloader verwenden, welcher je nach Typ von STM32 viele 
Schnittstellen unterstützt wie z.B. UART, USB, CAN.
https://www.st.com/content/ccc/resource/technical/document/application_note/b9/9b/16/3a/12/1e/40/0c/CD00167594.pdf/files/CD00167594.pdf/jcr:content/translations/en.CD00167594.pdf

Aber natürlich ist ein ST-Link nie eine verkehrte Investition. Kann die 
Clones von Aliexpress empfehlen für ca. $ 1.90:
https://de.aliexpress.com/item/1PCS-ST-LINK-Stlink-ST-Link-V2-Mini-STM8-STM32-Simulator-Download-Programmer-Programming-With-Cover/32792513237.html
#5604496
Lesenswert?

Hallo,

hab heute meinen StLink bekommen, gleich angeschlossen und Treiber 
installiert. Zu meinem erstaunen wurde kein COM - Port erzeugt, den ich 
für das jp-Firmware-Update der Platine schon bräuchte. Was muss ich 
machen, damit ein COM-Port erzeugt wird?

Der ST-LINK Utility kommt aber auch nicht ganz klar, obwohl ich alles 
ordentlich angeschlossen habe.

Reicht es denn nicht die 4 Pins so anzuschließen:

3.3V->3.3V
GND->GND
SWDIO->SWDIO
SWCLK->SWCLK

Muss ich außerdem BOOT0:HIGH und BOOT1:LOW setzen oder ist das mit dem 
StLink überflüssig. Habs zwar probiert, hat aber nichts gebracht.

Wie gesagt in STM32 bin ich absoluter Beginner, sorry!

Kann mir einer bitte sagen, was ich falsch mache, oder ist vielleicht 
der chip hin?

Danke vielmals!
Angehängte Dateien:
Gast #5604957
Lesenswert?

ST-Link Adapter haben keinen virtuellen COM-Port.

Die Option "Hardware Reset" funktioniert nicht mit den billigen China 
ST-Link clones, weil deren Reset-Ausgang nur bei STM8 funktioniert.

Wie Harry schrieb, kannst du die Option "Connect under Reset" verwenden 
und dann während der Verbindungsaufbaus den Reset-Knopf manuell drücken. 
Aber nicht zu lange, ist ein bisschen Fummelei, das richtige Timing 
herauszufinden.

Wenn dein Target nicht in den sleep modus geht und die SWJ Schnittstelle 
nicht deaktiviert, kannst du auch "Software Reset" (oder so ähnlich) 
nutzen. Dann brauchst du nicht auf den Reset Knopf zu drücken.

Die Boot Jumper muss man nicht umsetzen, wenn man per SWJ Schnittstelle 
programmiert. Aber: Es kann sein, dass das alte Programm sich so 
gründlich aufhängt, das gar nichts mehr geht. In diesem Fall kann es 
hilfreich sein, den Bootloader über die beiden Jumper zu aktivieren. 
Denn der Bootloader lässt die SWJ Schnittstelle aktiv und hängt sich 
auch nicht auf.
Gast #5605075
Lesenswert?

Die STLinkV2 (und Klone) haben alle auch den NRST-Anschluss drauf, nur 
ist bei den Klonen nur das RESET des SWIM-Interfaces über die Stifleiste 
zugänglich. Für das NRST von SWD-Interface müsste man ggf. die 
Leiterbahn fürs SWIM-Reset trennen und per Fädeldraht das vom 
SWD-Interface anschließen. Ähnlich ist's mit dem SWO-Pin. Etwas fummelig 
...

Wenn's schnell, einfach und güstig sein soll, würde ich den STLink von 
irgendeinem Nucleo-64 nehmen. Diese Boards sind leicht erhältlich, so 
etwa ab 12€, und der integrierte STLink hat den COM-Port mit drin.

Den "Haupt"-STM32 auf dem Nucleo kann man (inkl. UART) über Lötbrücken 
vom STLink abtrennen, dann hat man SWD inkl. NRST, SWO und den COM-Port 
frei zugänglich über Stiftleisten auf dem STLink-Teil der Platine. 
Welche Lötbrücken zu entfernen sind, steht im UM:
https://www.st.com/resource/en/user_manual/dm00105823.pdf

Ansonsten lohnt sich auch mal ein Blick auf STLinkV3, leider noch etwas 
rar und teurer, so um die 35€.
Gast #5605117
Lesenswert?

Mehmet C. schrieb:
> Zu meinem erstaunen wurde kein COM - Port erzeugt

vom ST-Link gibt es verschiedene Versionen, der COM Port ist in den 
V2-1, -A oder -B drin. Das geht bei den STLinks die an den NUCLEO oder 
neueren DISCO boards dran sind.
Eine Übersicht gibt es hier:
https://www.st.com/resource/en/technical_note/dm00290229.pdf
Die Firmware braucht den Controller mit 128 kB Flash, für die kleineren 
bietet das Firmware Updatetool die Versionen mit VCOM nicht an.
Alternativ kann man die BlackMagicProbe Firmware verwenden, die kann man 
auch auf die kleineren F103C8 flashen.

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