STLink
SWD can be used to upload the firmware to stm32fx MCU without a bootloader.
A ST-Link is needed, any stm32-discovery board has a ST-LinkV2 on it (starts @ 8€).
A standard ST-Link costs from 17€
Needed Tools
st_flash and st_util need to be installed, compiled from source (https://github.com/texane/stlink) Libusb 1.0, autogen is required.
Download from Github and
git clone git://github.com/texane/stlink.git cd stlink ./autogen.sh ./configure make
To rename flash to st-flash: ("flash" is not the best name as environment variable)
mkdir /opt/stlink cd /opt/stlink cp /home/user/src/stlink/flash/flash ./st-flash cp /home/user/src/stlink/gdbserver/st-util . echo PATH=\"$PATH:/opt/stlink\" >> /etc/environment source /etc/environment
USB permission
cp /home/user/src/stlink/49-stlinkv*.rules /etc/udev/rules.d udevadm control --reload-rules
Warning: For ST-LinkV1 take a look at the readme.txt !
Howto
Connect the ST-Link to the MCU. If a complete stm32fx-discovery board is used, CN3 jumpers need to be set. To program a external MCU, remove CN3 jumpers and connect the external MCU with the SWD header.