Hi,
I am doing a project in S32K314 with freertos. In some cases we need to reboot the device. Is there any API to reboot the device? Or how can I implement ?
you can take a look at the API "Power_Ip_MC_ME.c"
->Power_Ip_MC_ME_SocTriggerResetEvent(Power_Ip_PowerModeType PowerMode)
S32K3 has many reset sources, for example, the user can also use the watchdog timeout reset
Hi @Senlent ,
Power_Ip_MC_ME_SocTriggerResetEvent this API works but I found some issues while using this API.
The issue is I just created one timer function and put one counter. When the counter reaches a particular value I call this API for rebooting and it is rebooting the device. I tried it continuously. But after 8-9 times it will hang up at reboot API. I tried several times and it shows same behaviour. After 8-9 reboot the device become hang at this API calling.
Indeed, I've seen some similar questions on internal forums,this may be duo to the version of sBAF.
“The new silicon with new sBAF should be working as described in the RM.
Right now, we suggested the customer to use the code "IP_MC_RGM->FREC = 0x0000000F;" during
application initialization to clear functional reset counter register manually.”
Hi @Senlent ,
How can I access or jump to Reset vector address? Is there any other way to reboot using registers?
I roughly understand that your needs are similar to the jump of the program address when using the bootloader.
I suggest you read this program: S32K344_CAN_Bootloader_RTD100
https://community.nxp.com/t5/S32K-Knowledge-Base/Unified-bootloader-Demo/ta-p/1423099
I copied the implemented function as follows:
/*FUNCTION**********************************************************************
*
* Function Name : Boot_JumpToApp
* Description : This function is jump to app.
*
* Implements :
*END**************************************************************************/
typedef void (*AppAddr)(void);
AppAddr JumpAppAddr = NULL;
void Boot_JumpToApp(const uint32 i_AppAddr)
{
AppAddr resetHandle = (AppAddr)(i_AppAddr);
(resetHandle)();
}