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.

TMDS64EVM: Even though M4FSS is in "Independent" Safety Processor state, it does not reboot at SW POR in CR5.

Part Number: TMDS64EVM

Tool/software:

Hi TI support team.

I am trying out the reset_isolation_am64x-evm_system_nortos sample project on TMDS64EVM.
I am using MCU+SDK for AM64x [9.1.0.41].
I made the following changes because I want to check SW POR from CR5 by pressing SW5.

[M4F side]
Set to Independent Safety Processor mode.
Set the following in reset_isolation_main in reset_isolation_mcu_domain.c.
    pscMain2MCUDisable = 1;
    pscMCU2MainDisable = 1;
    debugIsolationEnable = 0;
Then call SOC_enableResetIsolation.

[CR5 side]
GPIO_bankIsrFxn in reset_isolation_main_domain.c.
Change SOC_generateSwWarmResetMainDomain to SOC_generateSwPORResetMainDomain.


I built the firmware and wrote it to the EVM.
When I press SW5, SOC_generateSwPORResetMainDomain is called in CR5, but there is no reboot and no Heatbeat debug output.
Since M4FSS is reset-isolated, Heatbeat debug output continues.

Since the M4F is not in General-Purpose mode, I thought SW POR would work from CR5, but it didn't work.

What could be the problem?

Best regards,
Kiyomasa Imaizumi.

  • Hello Kiyomasa Imaizumi,

    Currently, in the Reset Isolation example, by default, we are blocking the Reset.

    So, you are not able to perform the POR RESET.

    And, if you perform the POR, then this interrupt triggers and is routed to m4f core, then M4F core does allow the Reset propagation in the M4F core Reset ISR.

    In your case, you are not routing POR interrupt to M4F core .This is the issue .

    If you change the interrupt number from 25 to 26 in M4F example , then the example should work.

            HwiP_Params_init(&resetHwiParams);
            resetHwiParams.intNum =         \
                    CSLR_MCU_M4FSS0_CORE0_NVIC_GLUELOGIC_MAINRESET_REQUEST_GLUE_MAIN_PORZ_SYNC_STRETCH_0 + 16;
            resetHwiParams.callback = resetReqIsr;
            resetHwiParams.isPulse = 0;
            HwiP_construct(&resetObject, &resetHwiParams);

    Regards,

    Anil.