Target controlled FLASH programming algorithms are running on the CPU itself. If the execution of the FLASH algorithm is interrupted, the error message "FLASH algorithm did not execute completely" is displayed in TRACE32. This can be due to several reasons:
- The FLASH algorithm could be interrupted by the watchdog's reset in case a watchdog is enabled. The TRACE32 demo scripts often include command sequences to disable the watchdog. Please refer otherwise to the documentation of your target processor/board.
- An enabled data cache could be also the reason of this wrong behavior. Please switch the data cache off in your FLASH programming script, in case it is enabled.
- The loaded object file includes data sections mapped to the same memory range where the FLASH algorithm is loaded. As a consequence, the FLASH algorithm is overwritten when the object file is downloaded to the memory. You can check the memory load map of your object file using the commands Data.LOAD.auto <object-file> /NoCODE> then sYmbol.List.MAP. If this is the case, then you can exclude the RAM when downloading the object file by specifying the memory range of the FLASH in the Data.LOAD command e.g. Data.LOAD.auto <object-file> <FLASH-memory-range>
- Wrong flash clock/bus configuration.
- Wrong FLASH binary.
Please refer for more information to the document Tips to Solve NOR FLASH Programming Problems.