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.

MCU-PLUS-SDK-AM243X: Possibility of a software reset of a singular R5 Core?

Part Number: MCU-PLUS-SDK-AM243X

Tool/software:

Hello Experts,

i am trying to figure out whether and how it is possible to reset a singular R5 Core in the Main Domain of an AM243x. Similar to debugging with CCS i want to reset one cpu core, load firmware and start that core again. But not in debugging but triggered during run by another Core of the SoC.

So my preferred result would be:
- Trigger reset with core R5 0-1

- Reset core R5 0-0

- Load firmware again and restart core R5 0-0

- Keep rest of the Main Domain (MSRAM data,...)

Regards

Robin

  • Hello ,

    I am looking at the your queries and you may expect reply in one or two days .

    Regards,

    Anil.

  • Hi,

    thank you very much, i will be waiting on your reply.

    Regards,

    Robin

  • Hello,

    is there any news on this topic?

    Regards, 

    Robin

  • Hello Robin,

    Apologies for the delayed response.

    Yes, you can perform a CPU reset, and this reset does not affect the other cores.

    However, in real-time use cases, this reset may cause issues with your application.

    For example, if you perform a CPU reset, the core will restart from the beginning. If you’re using DMA with peripherals, you will need to reinitialize the DMA channels. The DM core will not accept the DMA channel allocation again, and you may encounter SCI_client errors.

    Could you please clarify why you want to reset the R5F0_0 core from R5F0_1?

    Also, when exactly do you intend to reset R5F0_0?

    Regards,

    Anil.

  • Hello Anil,

    thanks for your answer. Could you still provide me with a description, how i can trigger this reset with software?

    I am aware of the possible risks doing this during run i just want to see how it would work. Timing of the reset should be under my control during normal operation.

    Regards,

    Robin

  • Hello Robin,

    Try the APIs below and when we call the 1st API with the value 1, the core is always in the Reset state.

    When you call the second same API with value 0, then the core releases Reset. 

    retVal = Sciclient_pmSetModuleRst(TISCI_DEV_R5FSS0_CORE0, 1, SystemP_WAIT_FOREVER);
    if(0 != retVal)
    {
    DebugP_log("[Error] Sciclient Reset Assertion failed!!!\r\n");
    DebugP_assert(FALSE);
    }
    retVal = Sciclient_pmSetModuleRst(TISCI_DEV_R5FSS0_CORE0, 0, SystemP_WAIT_FOREVER);
    if(0 != retVal)
    {
    DebugP_log("[Error] Sciclient Reset Deassert failed!!!\r\n");
    DebugP_assert(FALSE);
    }

    Regards,

    Anil.

  • Hi Anil,

    thanks for providing those API Calls. I did test them and they work.

    I did have one further question though:
    Is there a possibility to reload firmware into the core that is held in reset and how would i do that?

    I essentially want to reset part of my application on that core and restart it.

    Regards,
    Robin

  • Hello Robbin , 

     When you do CPU local Reset, the PC is pointed to the Reset address and from the Reset address, the application is supposed to be loaded.

    Is that not happening ? If this is not happening, check fo the PC value ? It should point out the Local CPU reset address and here we are not clearing any RAM content because the Local CPU reset does not reset the content of the memory.

    Make sure that the below logic needs to be integrated into your example.

    For example, if you perform a CPU reset, the core will restart from the beginning. If you’re using DMA with peripherals, you will need to reinitialize the DMA channels. The DM core will not accept the DMA channel allocation again, and you may encounter SCI_client errors.

    Regards,

    Anil.