This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWR6843AOP: System freezing while SOC_softReset

Part Number: AWR6843AOP


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);

  • Hi, 

    Have you referred to the errata already https://www.ti.com/lit/er/swrz099a/swrz099a.pdf?ts=1640191422301&ref_url=https%253A%252F%252Fwww.google.com%252F MSS#41 on soft rest from SBL? Please let me know. 

    Also can you please provide us some context on what are the interrupts that are getting generated at the time of soft reset and their source? 

    Regards, 

    Sudharshan K N 

  • Dear  Sudharshan

    I know the errata MSS#41. And I'm little confused. Is SOC_softreset same with softreset (mentioned in Errata #41)?

    If then, AWR6843AOP should not use SBL? Because the only way jump to application from SBL is SOC_softReset.

    The interrupt is CAN interrupt. 

    While bootloader runs, I put the CAN message on the bus.

    It's not happen always, but sometimes the freezing(stuck) happens.

    And there is anoter way to freezing

    just block "SBL_transportDeinit(); " <- it's the end of SBL_initTask ( C:\ti\mmwave_automotive_toolbox_3_5_0\labs\lab0012_can_sbl project)

    then it can make uart interrupts, it also make freezing.

    I think you can test with sbl project with EV Board.

  • Hi, 

    While switching from the SBL to application code all pending interrupts must be handled before SOC_softReset. In this case can you please confirm if all the pending interrupts are serviced and CAN deinit is done before moving to the application code? 

    Regards, 

    Sudharshan K N