6 years ago.

Creating/Using a Bootloader with mbed and STM32F401RE

I'm developing a Bootloader alongside my application code so that i can update my application from a USB drive. My application works fine when I have it set at flash location 0x0800 0000. I've moved the application to 0x0802 0000 in flash by modifying the linker script. It now reads:

MEMORY
{ 
  FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 384K
  RAM (rwx)  : ORIGIN = 0x20000194, LENGTH = 96k - 0x194
}

My bootloader calls

mbed_start_application(0x08020000);

and it jumps to my application fine. Only problem is that USB interrupts now cause the application to crash, which to me suggests an issue with the vector address. I've checked for any hardcoding of the vector address (both flash and ram) and can't find any. The documentation on the mbed_start_application function does say that it will automatically move my vector table. Is that correct? Anyone have any ideas how I verify the vector position in flash when the application loads?

Hi Joshua,

Is your bootloader also an Mbed app using the RTOS?

posted by Jenny Plunkett 21 Mar 2018

All I did was take my mbed App that I had developed (started in online compiler then exported to CoIDE), and stripped it down to use as a Bootloader.

posted by Joshua Cowpland 22 Mar 2018

Hi Jenny, Do you have any ideas as to what my issue might be?

posted by Joshua Cowpland 26 Mar 2018
Be the first to answer this question.