Hi
I have a freezing problem.
I am using SBL which modified with C:\ti\mmwave_automotive_toolbox_3_5_0\labs\lab0012_can_sbl project
At the end of the process, SOC_softReset doing core reset to jump to the application part.
But if there are many interrupt insert, whle SOC_softReset.
It looks like stuck.
And it is not repgroram behavior, it is just usual boot case.
Here is a case
1) Putting many can messages on the bus to wakeup system
2) wakeup by can message -> the SBL run -> Application run (still many CAN messages on the bus)
3) No can message on the bus -> go-to sleep the system
4) repeat 1)~3) , then the system stucks in a 30minutes.
But
1) Putting one can message on the bus to wakeup system
2) wakeup by can message -> the SBL run -> Application run (no messae on the bus)
3) No can message on the bus -> go-to sleep the system
4) repeat 1)~3) , then the system never stucks in long time.
So, I have two questions.
1. I tink there is something SOC_softReset with interrupts, is there known issue?
2. To avoid this situation, I am looking for disable interrupt before execute SOC_softReset.
And disabled interrupt need to recover when application begins.
Can suggest how to disabling interrupt ?
Here is some part of the code:
QSPIFlash_close(qspiFlashHandle);
QSPI_close(gSblMCB.qspiHandle);
SBL_printf("\r\n _appVecs[0]:%d gSblMCB.sblIntVecTable: %d\r\n",&_appVecs[0], &gSblMCB.sblIntVecTable);
SBL_transportDeinit();
/* Disable interrupts before copying IVT. */
HwiP_disable();
/* Copy the interrupt vector table. */
memcpy((void*)&_appVecs[0], (void*)&gSblMCB.sblIntVecTable, SBL_VECTOR_TABLE_SIZE);
/* Reset the MSS core */
// SBL_printf("\r\n before SOC_softReset ");
if(SOC_softReset(gSblMCB.socHandle, &retVal) < 0)
{
// SBL_printf("\r\n failed SOC_softReset ");
}
else
{
// SBL_printf("\r\n Succeed SOC_softReset ");
}
BIOS_exit(0);