I am trying to come up with a way to implement a flash burn utility to do field firmware upgrades of a C55xx DSP. My main DSP application runs in SARAM and DARAM in a C55xx DSP. The DSP has a serial UART link to another processor which in turn provides a USB interface to a PC application. My firmware upgrade strategy is to write a small utility that resides in a dedicated section of the DSP's RAM and can be branched to by a software command. Once the program is running in the firmware upgrade utility I would like to re-allocate *all* of the RAM that was previously used by the main application so that it can hold the incoming new code from the UART port (there is not enough RAM to hold both the main application plus the new code). Once the upgraded code is loaded into RAM (and checked for errors) I will begin the flash burn cycle. This way, if there was a load error (loading the code via UART can take ~2 minutes) I can abort the upgrade process without fear of bricking the device. The flash burn cycle takes about 10 seconds, so the vulnerability time is minimized.
Is there a way to dynamically re-structure (re-allocate) RAM that was previously, statically allocated at build time?
Does anyone have a better suggestion for a way to accomplish this process?
Thoughts and suggestions would be much appreciated.