CAN bootloader: Go command works only for some uploads
I have managed to update firmware via CAN and the SSTM32 builtin bootloader.
I have a 40Kbyte firmware that works fine, after firmware upload I can run it with the 'Go' command.
I have another 66Kbyte firmware that also uploads just fine, and the MCU acknowledges the 'Go' command but the firmware fails to run. But I know the firmware was uploaded just fine, since it runs when I reboot the MCU.
The firmware upload procedure I use is:
1) global erase
2) read out some data to confirm erase
3) write new firmware (address 0x08000000 ...)
4) read out (some) data to confirm write
5) Go to address 0x08000000 ...
The manual talks about 'vector table' as a possible reason. For both firmware builds, the file STM32L452RETx_FLASH.ld
contains the line
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K
... which I assume reflects the firmware 'run' address.
What am I doing wrong?
Disclaimer: I am a STM32 newbee. Really. Have not worked much with MCUs and firmware at all.
#can #bootloader #vectortable #go-command