Bootloader Go command fails to start STM32F303RE application.
We are in the process of upgrading one of our MCUs from the STM32F072RBT6 to the STM32F303RBT6 and we are experiencing problems with the F303. I am testing out all the firmware using a NUCLEO-F303RE (the 512kB version of the MCU). To further test this issue, I have also made a very simple application that simply blinks the NUCLEO LED once per second. If I pull the BOOT0 pin low, I can communicate with the bootloader over USART1. So I am able to flash the MCU binary with the bootloader and then pull BOOT0 high, reset the MCU, and then the LED blink program runs without any issue. What I am not able to do is issue the Go command to the bootloader and start the user application from the bootloader. With this, I see the LED flash very quickly once (not the duration it should) and then the MCU is back in the bootloader. I can then endlessly issue the Go command, without physically resetting the MCU (NRST), and see this very short single flash. If I change the firmware to not blink the LED, I see no quick flash. This indicates that the user application is actually starting, but it then just returns to the bootloader.
I've included the stm_bootloader.h header that I've written for bootloader USART communication. We've been using this for quite a while with the F072 and never had an issue. The commands I call from there in order are:
stm_boot.Init(ui_->dev_name->text().toStdString());
stm_boot.BootloaderVersionSupportedCommands();
stm_boot.FlashBinary(FIRMWARE_BIN_PATH);The FlashBinary funciton primarily just performs a global erase, writes the firmware binary, and then calls the Go command. The NUCLEO boards also allow flashing a HEX file from the onboard STLINK via mass storage. If I flash the MCU in this way, it still has the same issue with starting the user application from bootloader Go command. (Enabling/disabling RDP did not have an effect).
