|
Hello,
thanks for the reply. Perhaps I should further clarify my issue:
The FX3 based application I develop has to be compatible to an existing USB Client API, which also provides API functions for firmware updates that have to be implemented on FX3. This rules out the USB Boot fallback option. The FX3 always has to boot into a state, where he can handle our API calls via USB. To achieve this we want to equip the final device with a two stage firmware. The first image is our custom bootloader that can handle firmware update requests, even if the main firmware is corrupted. If the main firmware is ok, our custom bootloader should load it and continue executing from it. Both firmwares have to exist as seperate images in the SPI flash and the custom bootloader must NEVER be flashed by the customer, only the main firmware gets flashed.
I looked at CyU3PUsbJumpBackToBooter. It does some reinitialization and continues executing from the address provided via the function parameter, right? So it requires the Code to be already present in memory when it is executed. That is why you proposed to club 2 applications into 1 image file, since the transfer into memory is done by the 1-stage bootloader from the FX3 ROM, right?
This would have 2 major drawbacks for us:
1) The image files would get very large
2) We would still have to flash the entire firmware image when updating the firmware (defeats the concept of a two stage firmware)
So I still need to know, is there a convenient way to REPLACE the entire application code present in the FX3 memory at runtime and RESET the device in a way that it continues to execute the replacement code?
If not, we probably have to break compatibility to our API and rely on the USB Boot fallback option, the FX3 provides.
|