I'm new in this Community and I hope to find ideas to solve my problem: I've an application in which I deal with a phone via a tag and I2C. I store an image of the new firmware I've to write to microcontroller Flash in a SPI extern memory. I want to update firmware of my STM32 reading from SPI memory and then writing to Flash. I'd like to update all the flash content, so I know I've to execute software in RAM in order to update correctly the Flash content.
I thought about doing the following steps:
- Read SPI memory and find if there's necessity to update firmware
- If we've to update, then load SPI communications functions and Flash upgrade functions in the RAM
- Execute Entire Chip Flash Erase function
- Start to update by reading SPI memory and writing to the Flash
- End of update procedure: update SPI extern memory content and reset the STM32 via software
I know that is hazardous update software in this way, but i think is the only way to avoid to write a bootloader dedicated.
I wouldn't like to implement a complete bootloader that reside at the beginning of memory space, but I would like to update all the Flash content as described before.
Anyone can tell me how can execute part of software in RAM? How can I manage it?
Thank you very much for support.