AnsweredAssumed Answered

Try for fast jumping between bootload and application

Question asked by Christoph Eschenbach on Jun 5, 2018
Latest reply on Jun 6, 2018 by Christoph Eschenbach

Hello there,

i am working with STM32429VI.

For my device i try to implement a simple bootloader which gives me the possibilty for DFU.

DFU works fine and everthing else too.

But I need some feedback if this is a attempt which ain´t gives me problems in the future.

My bootloader:     0x0800 0000 - 0x080 7FFF

Application:          0x800 8000 ...

Since i will have no reset button on my later hardware i want somehow jump back to the bootloader from my application and hold it in the bootloader until i upgraded the application.

For this i reserved a small part from the RAM: 0x2000 0000 - 0x2000 001F

For both the bootloader and the application i set the ram in the linker file to begin at 0x2000 0020.

Inside the small part of the RAM i write a specific value, if the application executes a specific function.(Basically i can send a request from outside to the mcu and it will execute the write function and do a reset).

By this the bootloader starts and reads out the specific value and holds the bootloader mode until the new firmware has been downloaded the value gets reset to default and a system reset is executed. So the bootloader starts again but jumps then to application.

This way I can avoid that the usb is configured all the time as DFU and I have a clean start for the bootloader and the application.

This works fine for now.

 

My Application is working with freertos and i think that the rtos could mybe access this part of the RAM somehow, but i am not sure. I hope excluding this part of the RAM in the Linker-Files will terminate any excess from the RTOS.

 

I am not that experienced in writing a bootloader and hope someone can give me a feedback if this is done well or if this can lead to a bunch of problems.

 

Thank you in advance

Christoph

Outcomes