Controller

      STM32 RS232 Bootloader tool


Home ARM-Projekt Startupcode Bootloader myprintf() JTAG debugging Funksteck- dosen



  STM32 RS232 Bootloader-Tool


Jeder STM32-Chip hat einen fest programmierten Bootloader, mit dem man über die serielle RS232 - Schnittstelle ohne Jtag den Code einfach in den Chip laden kann.
(Siehe: STM AN_2606 , STM AN_3155 )

In der Beschaltung des STM32 werden dafür folgende Verbindungen benötigt:
  • pin BOOT10
  • pin RESET verbunden mit PC-RS232-RTS auf der logic level Seite
  • pin BOOT0 verbunden mit PC-RS232-DTR logic level Seite - nochmal invertiert,
        oder direkt mit PC-RS232-DTR auf der 12V Seite - spannungsbegrenzt
        mit einer Z-Diode 3,6V
  • pin RxD1(GPIO10) verbunden mit PC-RS232-TxD
  • pin TxD1(GPIO9) verbunden mit PC-RS232-RxD

Der Bootloader benötigt keinen Quarz, alle anderen Pins sind egal.

PC-Anbindung mit RS232 Levelconverter
PC-Anbindung mit RS232 Levelconverter


PC Anbindung via USB-Konverter
PC Anbindung via USB-Konverter



Bei der abgebildeten USB-Schaltung muß die DTR-Leitung noch invertiert werden. Entweder man programmiert den FTDI chip entsprechend oder man spendiert einen Inverter.

Für die Programmierung mit der obigen Beschaltung gibt es ein schönes Windows-Programm hier:
http://www.er-forum.de

Spätestens für die Automatisierung benötigt man ein Kommandozeilen-Tool. Ich habe ein vorhandenes GPL3 Projekt von Alex Faveluke für Windows übersetzt und an die obige HW-Beschaltung angepasst.

Als Kommandozeile lässt sich  Sloadhost.exe ganz leicht z.B. in Code::Blocks oder ins Makefile einbinden:

D:\Eclipse\LED>Sloadhost.exe --serialdev COM1 --baudrate 115200 --getid --globalerase --loadfile out\LED.bin --write 0x08000000
Got autobaud ack in autobaudstart()
got 2 data bytes from get_command()
got ACK after data in get_id, good

deviceID: 0x0410 STM32F10x Medium Density
got second ACK from globalerase, assumed successful
... starting program_memory()
#############################################
SUCCESS: 9844 bytes sent to STM32 controller addr: 8000000


Das funktioniert super. Wenn man einen USB-Seriell-Wandler von FTDI nutzt, dann kann man den Windows-Treiber noch beschleunigen (Gerätemanager\COM-Port\Anschlußeinstellungen\... ...Erweitert\Wartezeit = minimal) und erreicht so 7-10kByte/sec.

Testen kann man das sehr gut mit Hterm, wo man mit den Buttons RTS und DTR zwischen Reset, Bootmode und Terminalmode hin- und herschalten kann.

  Download:


sloadhost.exe    ver.0.12.7
ein Windows-Kommandozeilentool zum Programmieren des STM32
download