We are using the TMS320F2833x Flash API to implement an in-application bootloader embedded into a medical system.
This bootloader is intended to be executed from an external flash device, and may load the Flash API code into zero wait-state SARAM to follow the recommendations of the API user's manual. Communication with the target is done through one of the SCI peripherals.
This appears to be another basic configuration for a C2000 bootloader, but the specific issue is that the flash update shall not lead to a deviation of the application time schedule, which would have a catastrophic impact on the patient's health. The hard time constraint is that the whole application shall be able to service a periodic interrupt at 50µs with a maximum 5% jitter.
In the documentation of the API as well as in the C2000 Flash FAQ, it is mentionned that « The Erase function disables interrupts for up to 3-4ms. This is the longest duration interrupts are disabled in any of any of the API functions ». Our own measures have shown a maximum 300µs critical section during Erase and Program operations, but we assume that it is the best case.
1) What would be the impact of removing those critical sections from the Flash API (we have required the source code under licence agreement), allowing the CPU to grant the interrupt at any time during flash operations ?
2) What is the smallest software delay internally used by the API, and what is the precision required for those delays ?
3) Are there alternative solutions to this issue ?
Thank you for your help.
Any suggestions ? Anyone has seen something related in the litterature ? Thank you
Use external i2c flash or FRAM.