Hi Group!
Here's a quick one just before the Christmas Holidays!! ;-)
Our application now runs from RAM in a RZ A1/L. IAR's cstartup sequence boots from QSPI, copies code, and then runs it from RAM. This works well except for 1 minor thing I can't really put my finger on. I'm hoping this was already seen by someone else, and maybe I can get help in resolving this.
We use ThreadX, and have a separate watchdog thread monitoring all other threads (5 or 6 of them) to ensure they are "alive". The watchdog thread is also used to voluntarily reset the MCU in certain circumstances, such as when the user changes certain application parameters (stored in ext. EEPROM), then we reset the app. just to be sure we correctly boot and reload these new EEPROM parameters. Basically, to voluntarily reset, we intentionally get stuck in a while(1) loop, and simply wait for the watchdog to reset the MCU.
When our code used to run directly from QSPI, this self-reset mechanism worked flawlessly. Now, with code running from RAM, the reset still occurs, but the subsequent boot gets stuck... Using C-Spy, I see the code keeps looping at 0xFFFF0088...
This looks like a vector table, but I'm not sure, as my vectors are normally mapped at 0x1800 0000 (i.e. lower end of QSPI mapped memory.)
Once stuck in the loop, if I do a full power-down/up cycle, the MCU boots correctly, and the app runs again happily. So it looks like something "remains" in the RAM which somehow disturbs the subsequent boot process.
Any help and/or suggestions would be welcome!
JL