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.

TMS570LS3137: Soft reset - ramErrorReal

Part Number: TMS570LS3137
Other Parts Discussed in Thread: HALCOGEN

Hi,

I have a project generated via Halcogen 3.5. Running in CCS 5.4

I try to reset the processor by jumping to address 0x0 via the following line: ((void (*) (void)) 0x00000000) ();

It jumps to resetEntry as desired. When I hit "continue", the execution loops at ramErrorReal in dabort.asm.

It sounds like it is related to ESM Group 3. I don't understand what is going on.  At reset, are the ESM Group 3 startup tests failing? If so, why? How could I fix this?

I have to  to reset the processor when requested.

Do I need to reset the processor via another way, like writing to a special register? If so, what register?

thank you,

  • And sometimes I loops at the section below:

    /* Check if there were ESM group3 errors during power-up.
    * These could occur during eFuse auto-load or during reads from flash OTP
    * during power-up. Device operation is not reliable and not recommended
    * in this case.
    * An ESM group3 error only drives the nERROR pin low. An external circuit
    * that monitors the nERROR pin must take the appropriate action to ensure that
    * the system is placed in a safe state, as determined by the application.
    */
    if ((esmREG->ESTATUS1[2]) != 0U)
    {
    /* for(;;) can be removed by adding "# if 0" and "# endif" in the user codes above and below */
    /* USER CODE BEGIN (24) */
    /* USER CODE END */
    for(;;)
    {
    }/* Wait */
    /* USER CODE BEGIN (25) */
    /* USER CODE END */
    }
  • Hello,

    Once an error occurs, the ESM module will set the corresponding error flags. In addition, it can trigger an interrupt, ERROR pin outputs low depending on the ESM settings.

    What are the value in ESMSR3 and ESMSR2? If the value are not zero, write 1 to the corresponding bit to clear the error status registers. You can use the value (which channel is set) in ESM2/3 (group 2 or group3) to find the error condition from "ESM Channel Assignments" table in datasheet.

    Is the nERROR driven to LOW? If ESMEPSR (error pin status register) is cleared, the nERROR pin outputs LOW. You can write 0x5 to ESMKY to release the nERROR pin back to normal state. If writing 0x5 doesn't work, please use 0xA, then 0x0.
  • Thank you.

    ESMR3 register has the value of 0x20. basically indicating RAM Odd Bank - ECC Uncorrectable Error error is on.

    This happens because of the jump statement to address 0x0. When I comment out the statement jumping to address 0, this issue is not observed.

    Right after the statement jumping to address 0x0, the execution goes to resetEntry, but then stuck at this ESM Group 3 error.

    How could this statement jumping to 0x0 cause this RAM ECC error?

    How could I achieve resetting the processor , any other way?

    thanks,

  • Any insight/help on this matter?
    Do I have to uncheck "RAM ECC Enable" in Halcogen? I wish to have ECC check on RAM though.
    How could I achieve my goal of resetting?
    Please see earlier notes.
    thank you in advance.
  • Hello,

    I just did a test on my launchpad, and didn't get the problem:

    1. SW reset by by writing 0x10 to bit[15:14] of systemREG1->SYSECR.

        systemREG1->SYSECR = (0x10) << 14;

    2. Jump to address 0x00

        ((void (*) (void)) 0x00000000) ();