1
\$\begingroup\$

I've designed a device using a STM32F439 and would like to have a PC application where the user can update the firmware of the device.

My firmware developer has told me the we would need to give the user access to the Boot0 pin.

By default Boot0&1 are pulled low but can the MCU be reset into Bootloader mode through software without having to touch any jumpers etc?

\$\endgroup\$
  • 1
    \$\begingroup\$ Why don't you make a custom bootloader (i.e. your firmware) and then flash using USB? \$\endgroup\$ – Mike Spark Feb 2 '17 at 23:43
  • 1
    \$\begingroup\$ Read about the STM32 USB DFU (device firmware upgrade) protocol (a.k.a DfuSe). \$\endgroup\$ – kkrambo Feb 3 '17 at 2:42
  • 1
    \$\begingroup\$ You can typically figure out how to jump into the factory bootloader from your loaded application program; of course, either that or a custom bootloader depends on your custom code being somewhat functional or it won't be possible to reach the factory bootloader. Being able to activate the boot mode pin provides a path around a broken load of the custom program which the pure software solution does not. \$\endgroup\$ – Chris Stratton Feb 3 '17 at 3:33
2
\$\begingroup\$

You can jump from the firmware to the bootloader on the STM32F4. The STM32F4 has a built in bootloader at address 0x01ff000. Here is a tutorial on how to jump https://stm32f4-discovery.net/2017/04/tutorial-jump-system-memory-software-stm32/. Once in bootloader mode you can use DfuSe form ST(free) to flash the new firmware.

\$\endgroup\$
  • \$\begingroup\$ This is the correct answer; I've used this method on a few projects. \$\endgroup\$ – akohlsmith May 30 at 21:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.