I have a boot & app project base on S32R274, I implement the jump between the app and boot program using the way that writing the key word to SRAM and functional reset. In the app program, I can input the ‘reboot’ command to reboot the program(that use the functional reset to reboot), the program will reset to the boot program part.
Then I found a strange phenomenon, once I input the 'reboot' command 7 times,then the program will crash down, functional reset fail, the program jump to nowhere. In fact the program crash down in 14th functional reset, I guess it cause by register overflow, but I dont know which one cause that.
This picture show the last one step before the program crash down.
This picture show the program crash down, program jump to nowhere.
Another experiment, I remove the boot program, system only run the app program, then the system never crash down when functional reset.
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
Maybe I found what cause that BUG, I check the <S32R274 Reference Manual > , then I found the content about <‘Functional’ reset escalation >
the RGM_FRET. FRET initial value is 0xF, that means the system will reset from PHASE0 when the system has do the functional reset 0xF times, this reset progress same with destructive reset.
I check the register state when the program crash down, the F_EDR bit set to 1, that means functional reset ecalation has occurred. So the system crash down caused by the functional reset ecalation.
For this end, I do another experiment, System will do destructive reset when I input ‘reboot’ command, I found system won't crash down anymore.
What's difference with the functional reset ecalation and destructive reset?
PS: Forgiven my poor English