Not sure what question I haven't answered. The situation that I have is very strange. We have an MQX radio application running XIP on the M4 core of an M4 boot first Vybrid part.
We have two relevant 'power modes'; standy and full-run.
Our application comes up in standby mode, and all is well. The code is running as expected, and the IAR debugger is showing data/code as expected. I can open a memory view window, and set it to periodic refresh ... aiming at an area of QSPI attached flash that holds the constant string data for the task names. I can see the correct task names in the ASCII part of the memory displayed by IAR.
I press the power button on our radio, signalling the application to transition into its full-run mode ... which it starts to do then the applicayion fails. I can STILL see the memory being refreshed BUT the task names are now mis-reads ...investigating the patterns shows that any ASCII character (well any byte in fact) having bit 2 set displayes incorrectlt since this bit is now clear in EVERY byte in the read flash.
10s later, the WDOG trips and resets the vybrid ... and the refreshing memory display springs back to normal UNTIL I try to push to full-run again,
I can repeat this behaviour ad infinitum.
IF I move some functions from one ,c file into a new ,c file and rebuild ... I do NOT see this behaviour.
Therefore I do NOT believe it can be a functional consequence of our code -- the two builds are functionally equivalent, the difference is in the address assignents that the linker has made in the image.
The relevant QPSI and PLL registers do not change from the OK state to the NOK state.
Could this ne some hard-ti-hit bug in the QSPI processing that takes a program request for memory into a QSPI fetch from the Flash device? Or an error in the spansion flash chip?
Any thoughts would be appreciated at this stage ... this kind of random error troubles me.