I am working on a project for the C6678 that requires the ability to reprogram the DSP in the field. The custom board will have a USB driver chip for communications with the PC.
I want to have two applications running on the DSP: a small bootstrap that runs first, and if the main application is valid (checksum verified, or other) branch into the main app. Then, if the PC sends down a specific command sequence, branch back into the bootstrap code, which would communicate with the PC and allow new main application code to be downloaded and written into the boot (SPI) flash chip.
The boot from flash process is still confusing to me, but I think I can figure out how to get my bootstrap code built and written into the SPI flash. My headache is, how do I structure my main application code so I can build it, and convert it into the proper format for downloading via the USB to my bootstrap code, which would then write it into the flash? Can I just write the main application like I would if it were stand-alone? Is there a way to get the linker to spit out the startup address so my bootstrap code can branch into a fixed location to start the main app?
I have my bootstrap coded and can debug it on the EVM. All functions are within a single object module, and I've made sure there are no calls to functions in any of the libraries, but the linker still manages to pull in several functions from various RTS_C600... libraries. Functions like memcpy and exit are included, even though I don't call them.
Any suggestions on similar sample projects or documentation would be a great help.