STM32F4 und Bootloader

Die STM32F4 CPU hat einen eingebauten Bootloader, mit dessen Hilfe man die CPU programmieren kann auch wenn man keinen STLink/V2 hat.

Am einfachsten ist der Weg per externem USB-to-UART-Wandler (von FTDI) und dem Flash-Loader PC-Programm von STM.

1. PC vorbereiten :

Auf dem PC muss ein aktueller USB Treiber für den FTDI-Wandler installiert sein.
(den gibts auf der Webseite von FTDIChip)

Das “Flash-Loader-Programm” gibt es auf der Webseite von STM.

2. FTDI-Wandler per USB-Kabel an den PC anschließen :

Im Gerätemanager taucht jetzt ein neuer COM-Anschluss auf
(die Nummer vom COM-Port bitte aufschreiben…im Beispiel = COM6)

boot0

3. FTDI-Wandler mit dem UART1 der CPU verbinden :

Der TX-Pin vom FTDI-Wandler muss mit dem RX-Pin der STM32F4
verbunden werden (RX_UART1 = PA10 = Pin 69)

Der RX-Pin vom FTDI-Wandler muss mit dem TX-Pin der STM32F4
verbunden werden (TX_UART1 = PA9 = Pin 68)

4. Bootloader auf der CPU starten :

Um den Bootloader auf der CPU zu starten muss diese Sequenz durchgeführt werden :
1. CPU Pin BOOT-1/PB2 (Pin 37) muss auf Lo-Pegel liegen
2. CPU Pin BOOT-0 (Pin 94) muss auf Hi-Pegel liegen
3. Reset muss ausgelöst werden (Reset = Pin 14)

Wenn der Bootloader einmal läuft, ist der Pegel an Boot-0 und Boot-1 egal, die CPU wartet jetzt bis sie entweder ein HEX-File zum flashen bekommt oder bis erneut ein Reset ausgelöst wird.

5. Flash-Loader-Programm auf dem PC starten :

boot1

auf die Einstellung des richtigen Com-Ports achten
und den Button “NEXT” drücken

6. CPU suchen lassen :

boot2

Falls der Bootloader der CPU gefunden wurde,
erscheint eine “Target available” meldung.
Jetzt wieder den Button “NEXT” drücken.

7. Target auswählen :

boot3

Unter “Target” muss die richtige Speichergröße der CPU eingestellt werden.
Im fall vom STM32F4 auf 1024K (1MByte)
Dann weiter mit dem Button “NEXT”

8. File zum programmieren auswählen :

boot4

Unter “Download from File” kann über den Button das “BIN” oder “HEX”-File
das programmiert werden soll in einerm Browser gesucht werden.
(im Beispiel “Stamp_01.bin”)
Mit einem Klick auf “NEXT” wird das File in die CPU programmiert.

9. File in die CPU flashen :

boot5

Wenn das programmieren ohne Fehler funktioniert hat,
wird “successfully” angezeigt.

10. Programm auf der CPU starten :

Die CPU steht jetzt immer noch im Bootloader. Um das gerade
geflashte Programm zu starten, muss diese Sequenz durchgeführt werden :
1. Pegel vom CPU Pin BOOT-1/PB2 (Pin 37) ist egal
2. CPU Pin BOOT-0 (Pin 94) muss auf Lo-Pegel liegen
3. Reset muss ausgelöst werden (Reset = Pin 14)

11. Fertig :

Die CPU sollte jetzt mit dem neuen Programm laufen
und das PC-Programm kann beendet werden.


2 Antworten auf STM32F4 und Bootloader

  1. Jo sagt:

    Damit keiner Zeit verschwendet ein zusätzlicher Hinweis:
    auf dem Discovery-Board funktioniert der interne Bootloader nicht so wie beschrieben, da die Pins PA9/PA10 mit dem USB-Anschluß belegt sind. Auf dieser Leiterplatte muss man die Pins PB10/PB11 bzw. PC10/PC11 oder den DFU-Modus benutzen.

    • admin_ub sagt:

      sehr guter Hinweis…Danke


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

3 Antworten zu STM32F4 und Bootloader

  1. Boughanmi sagt:

    Guten Tag,

    ich habe versucht meine erste µC Platine, die vom “ adafruit feather STM32F405 express“ inspiriert ist, zu entwickeln. Zum Layouten habe ich KiCad benutzt und die Platine ist durch dem chinesischen PCB-Hersteller JLCPCB hergestellt. Um das DFU-Bootloader zu aktivieren, muss der BOOT0-Pin mit 3,3V-Pin verbunden werden und dann der Reset-Taster gedrückt werden. Alles hat funktioniert genau wie bei dem Adafruit Feather, muss man aber nach dem Drücken auf dem Reset-Taster mehr als eine Minute warten ( genau 01:32.38 ) bis das Bootloader aktiviert wird.
    Der HSE Quarzoszillator (12MHz, LCSC-Part-Number ist C165948) funktioniert . Ich habe es mit Oszilloskop getestet.
    USB ist “ TYPE-C-31-M-12 “ ( genau wie beim adafruit feather ). D+ und D- Pins des µCs sind PA12 und PA11. Die Leiterbahnbreite ist 0,261mm ( differential pair ) und wurde mit “ JLCPCB Impedance calculator “ gerechnet für eine 90 ohm Impedanz. Die Leiterbahnlänge ist 66,33 mm.
    USB-Pin ist mit einem Spannungsregler AP2112-3,3V, P-Channel-Mosfet ( DMG3401LSN-7 ), ein Battery Management (MCP73832) und zwei anderen Stiftleiste verbunden.

    Ich habe keine Erklärung gefunden, wieso dauert es jedes Mal genau 01:32.38 ( 8 Versuche ) nach dem Drücken auf dem Reset-Taster, damit das Bootloader aktiviert wird.

    Ich hoffe auf eine Rückmeldung und vielen Dank im Voraus
    Mit freundlichen Grüßen
    E.S

  2. Tobi sagt:

    Wie jetzt?
    Da hat man sich gedanken gemacht, einen Bootloader einzubauen, aber dann muss man immernoch mit einem FDTI rumeiern?

    Warum geht das nicht so wie bei einem ProMicro? USB-Kabel dran und flashen… und das geht auch fix!

    Gibts da keine Lösung?

    Suche aktuell einen Bootloader für STM32F303

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert