Part Number: TMS320F280039C-Q1
Hello support
we have a question about FAPI usage.
FAPI user guide states that
"Flash API execution is interruptible. However, there should not be any read/fetch access from the Flash bank
on which an erase/program operation is in progress. Therefore, the Flash API functions, the user application
functions that call the Flash API functions, and any ISRs (Interrupt service routines) must be executed from RAM."
In our project we have a proprietary bootloader that takes advantage of the FAPIs to delete and rewrite Flash Sectors dedicated to Application.
In our first implementation
- we have mapped in RAM the user functions calling the FAPIs.
- we have NOT mapped FAPI in RAM, therefore they are executed from Flash.
- we have also disabled maskable interrupts during FAPI execution, therefore we don't see the possibility that a user ISR can interrupt FAPI.
Under this scenario, FAPIs are executed from Flash and, as far as we understand, this execution is enough to create conflict with the FSM flow.
Despite this implementation we have never seen any issue in bootloader operations: Application Flash has always been properly erased and written.
Bootloader and Application share the BANK0 and Application code extends to BANK1.
Why, in your opinion, running FAPIs from Flash does not affect proper Flash writing ?
Is there something that we are missing ?