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.

[FAQ] AM64X : How to Reset (Warm Reset ) the SOC from Software ?

Part Number: AM6442

Hello TI experts,

I want to make the SOC reset from software. How can I do it?

What is the difference between POR (power on reset) and warm reset?

This FAQ mainly explains how to Reset the SOC. And what are the registers used to make the SOC reset ?

  • What is Reset?

     A Reset refers to a mechanism or signal that allows the entire system or specific components within the SoC to be reset to a known initial state.

    Use cases:

    Resetting an SoC ensures that all its components start in a known state.

    If an SoC or any of its components encounter an error or malfunction, a reset can be initiated to bring the system back to a stable and known state. This can help resolve issues caused by software bugs, hardware faults, or other unexpected conditions.

  • Different types of Reset’s available in AM64X:

    There are two types of reset: warm reset and power-on reset (PORz). When the device goes through a warm reset, some of the MMR register values and debug logic are able to retain their status and value after the reset. On the other hand, the PORz reset will reset all the components in the SoC and bring the device into a known default state.

    There is no other difference between two resets, and boot entry is the same in both cases.i.e.

    , after making SOC Reset, either Warm Reset or POR boot entry is

    Reset - > ROM Bootloader - > SBL - > Application

    Please go through Chapter 5.3.2 Reset Sources for more details about different types of reset resources.

  • How can I make the entire SOC Reset in AM64X?

    The user does not need to worry about controlling which CTRL_MMR registers to make SOC reset.

    In AM64X, there is a DMSC core, which is typically capable of handling the reset of the device.

    So, users need to just call the below function to make SOC rest.

    Sciclient_pmDeviceReset( ).

    Please go through the below link for API details.

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_06_00_43/exports/docs/api_guide_am64x/group__SCICLIENT__FMW__PM__IF.html#ga7ffb0c42aa14e526199f7ffc3c4a08f7

    Typically, there are two Registers to Make the SOC Reset

    1. CTRLMMR_MCU_RST_CTRL
    2. CTRLMMR_RST_CTRL

     

  • What registers are affected after calling Sciclient_pmDeviceReset( ) function?

    While calling the Sciclient_pmDeviceReset( ) function, we are setting the CTRL_MMR0 register with the RST_CTRL_SW_MAIN_WARMR (0x06) value in SYSFW software, which will reset for both the main domain and the MCU domain.

    It is only performing SW_MAIN_WARMRESET. This warm reset affects both the MCU and MAIN domains if you have not configured the MCU domain as a safety domain.

    Currently in SYSFW, we are checking whether the MCU domain is isolated or not; if it is not isolated, we are using the CTRLMMR_MCU_RST_CTRL, and if the MCU domain is isolated, we are using the CTRLMMR_RST_CTRL Register.

    Please check for more details on the image in SYSFW.

    Magicword is a non-zero value, which means that the MCU domain is isolated from the main domain.

     

    So, based on the above details, when you call the Sciclient_pmDeviceReset() function,

    Case 1: The MCU domain is not isolated from the MAIN domain.

    Calling the Sciclient_pmDeviceReset() function in all muc+sdk examples soc reset the device with the help of CTRLMMR_MCU_RST_CTRL Register and Reset effects both MAIN and MCU domains.

    Case 2: The MCU domain is isolated from the MAIN domain.

    When you run the below example SOC Reset the device with the help of CTRLMMR_RST_CTRL Register and Reset effects only the MAIN domain and MCU domain continue their operations .

    C:\ti\mcu_plus_sdk_am64x_08_06_00_43\examples\drivers\safety\reset_isolation

    MAIN DOMAIN: A53 and R5F cores

    MCU DOMAIN: M4F Core