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.

CCS/RM57L843: Hercules™︎ safety microcontrollers forum

Part Number: RM57L843

Tool/software: Code Composer Studio

I have used IC RM57L843BZWTT, and when debugging, self-diagnosis failed often.The error information that the software engineer found was L2RAMW-double bit ECC uncorrectable error below group3 and number3 as figure1.

However, after power-up stabilization give a reset signal at nPORRST pin it's always pass. I suspected that the power-on reset sequence goes wrong, carefully tested the power-on reset waveform did not find any problem.

Please help me analyze why.

  • Hello,

    Did you use the safety diagnostic library for L2RAMW ECC selftest, or use your own code for the test?

    1. The ESM3:3 error is not caused by ECC double diagnostic error. ESM3:3 is caused by the:

        a. Write SECDED malfunction error (WEME bit of RAMERRSTATUS register)

        b: Redundant address decode error (ADE bit of RAMERRSTATUS register)

        c: Read SECDED malfunction error (REME bit of RAMERRSTATUS register)

    2. The ESM2:7 error is caused by ECC double diagnostic error

    Please check the RAMERRSTATUS register. The bit[22] and bit[20] should be set by the ECC double diagnostic error.

  • 1, we used the safety diagnostic provide by ti. 

    2, and check the register RAMERRSTATUS value is 0X80, when ESM3 value is 0X08

    3, please help me

  • sir please give me some advice, where is going wrong ?

  • Hello,

    You are correct. ESM3.3 is caused by ECC double error. RMWDE=1 indicates that the error happens during read access of the read modify write operation. But it is caused by the diagnostic test or selftest.

    If you don't call the SDL API to do RAM ECC selftest, is there an error on ESM3.3?

  • actual practice is as follows
    Our diagnostic library version is 2.3.1
    The function called after power-up is SL-Init-Memory (RAMTYPE-RAM)
    and then check ESM3.3 with a value of not 0, and enters the while dead cycle.
    This is the code that we're on.
    the follow is my code after power on

    void _c_int00(void)
    { static SL_ResetReason s_resetReason;
      static SL_STC_Config s_stcSelfTestConfig;
      SL_Init_R5Registers();
      SL_Init_StackPointers();
      _SL_Init_EnableEventExport();
      s_resetReason = SL_Init_ResetReason();
      switch(s_resetReason)
        {  case RESET_TYPE_POWERON:
           case RESET_TYPE_DEBUG:
           case RESET_TYPE_EXTRST:
           case RESET_TYPE_NERROR:
    	if( SL_Init_Memory(RAMTYPE_RAM)
        	{  ;/*for misra2004* }
    	if(uint32_t)0u != (esmREG->SR1[2]))
       	 {while(1){};}
    
    	...
        }
    }

  • Hello,

    What is the value of RAMERRSTATUS register? Is the ESM3.3 set before running the memory init? Can you try the latest version of SDL (rev 2.4.0)?

  • See this thread: 

    The issue also applies to RM57 as ECC checking is enabled for all Flash/RAM accesses on RM57 and LC43.

    Regards, Sunil