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.

[参考译文] SRAM 1位 ECC 测试失败

Guru**** 2382630 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/805081/sram-1bit-ecc-test-failure

器件型号:RM48L940

我的 SRAM_ECC_1bit_FAULT_INMODEing 测试失败、因为该条件的评估结果为 false:

(((UINT32)(1U <<ESM_G1ERR_B0TCM_CORRERR)|(UINT32)(1U <<ESM_G1ERR_B1TCM_CORRERR))
=(sl_esmREG->SR1[0]和((UINT32)(1U <<ESM_G1ERR_B0TCM_CORRERR)|(UINT32)(1U <<ESM_G1ERR_B1TCM_CORRERR)))) 

这会使以下条件检查是否为两个组生成了单个位错误、也是错误的、因此是 ST_FAIL。 如何找出问题所在?

/*检查是否为两个组生成了单个位错误*/
if (((TCRAM_RAMERRSTATUS_ADDR_SERR =>(uint32)(sl_tcram1REG->RAMERRSTATUS & TCRAM_RAMERRSTATUS_ADDR_SERR)))
/*SAFETYMCUSW 96 S MR:6.2、10.1、10.2、12.1、12.6 备注_25*/
&&((TCRAM_RAMERRSTATUS_ADDR_SERR ==(uint32)(sl_tcram2REG->RAMERRSTATUS & TCRAM_RAMERRSTATUS_ADDR_SERR)))
&&(((UINT32)(1U <<ESM_G1ERR_B0TCM_CORRERR)|(UINT32)(1U <<ESM_G1ERR_B1TCM_CORRERR))
=(sl_esmREG->SR1[0]和((UINT32)(1U <<ESM_G1ERR_B0TCM_CORRERR)|(UINT32)(1U <<ESM_G1ERR_B1TCM_CORRERR))))) {

if ((((sRAM_ECC_ERROR_ENCEDITY_1bit=testType)&&
(sl_tcram2REG->RAMSERRADDR =((UINT32)&sramEccTestBuff[1]&((UINT32) 0x0003FFFFU))))||(SRAM_ECC_ERROR_profiling=testType)){
* SRAM_stResult = ST_PASS;
}否则{
*SRAM_STResult = ST_FAIL;
}
sl_tcram1REG->RAMOCCUR = 0x000000000000u;
sl_tcram2REG->RAMOCCUR = 0x000000000000u;
} 否则{
*SRAM_STResult = ST_FAIL;
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我需要做一个测试、并将返回给您。

    谢谢、
    Akshay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Akshay、
    我将跟进、看看您是否有任何测试结果。 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    对于 SRAM_ECC_1bit_FAULT_INMODEing、请参阅 ESM_application_callback.c 中的以下代码片段、了解如何处理故障注入。

    否则(ESM_Grp1_MASK =((grp_channel&ESM_Grp1_MASK))&&(ESM_G1ERR_B0TCM_CORRERR =(grp_channel & 0x0000FFFF))
    ){
    callbkParam1 = param1;
    //清除 nERROR 和标志*/RMES_RA_TR_TRERR =(grp_TRESM_TR_TRESM1_TR_TRESM1_TR_TR_TRESM_TRESM=
    
    (r_TR_TRESM1_TR_TR_TRESM_TR_TR_TRESM_TR_TR_TRESM1_TR_TR_TR_TRESM_TR_TR_TRESM_TR_TRESM=)
    
    
    
    ;(RM_TR_TR_TR_TR_TR_TRESM1_TR_TR_TR_TR_TR_TRESM1_TR_TR_TRESM_TR_TRESM_TR_TR_TR_TR_TR_TR_TR_TRESM_TRESM1_TR_
    
    
    
    
    bit_set (sl_tcram1REG->RAMERRSTATUS、TCRAM_RAMERRSTATUS_ADDR_SERR);//
    为后续操作清除* bit_set (sl_tcram2REG->RAMERRSTATUS、TCRAM_RAMERRSTATUS_ADDR_SERR);_bit_set (sl_tcram_fault_1REAG_r0_r_b
    )
    ;
    } 

    [引用用户="Guy Tadi"]

    1
    2.
    (((uint32)(1u << ESM_G1ERR_B0TCM_CORRERR) | (uint32)(1u << ESM_G1ERR_B1TCM_CORRERR))
                                    == (sl_esmREG->SR1[0] & ((uint32)(1u << ESM_G1ERR_B0TCM_CORRERR) | (uint32)(1u << ESM_G1ERR_B1TCM_CORRERR))))

    1
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18
    /* Check if the single bit errors have been generated for both banks */
    if((TCRAM_RAMERRSTATUS_ADDR_SERR == (uint32)(sl_tcram1REG->RAMERRSTATUS & TCRAM_RAMERRSTATUS_ADDR_SERR))
            /*SAFETYMCUSW 96 S MR: 6.2,10.1,10.2,12.1,12.6 <APPROVED> Comment_25*/
            && ((TCRAM_RAMERRSTATUS_ADDR_SERR == (uint32)(sl_tcram2REG->RAMERRSTATUS & TCRAM_RAMERRSTATUS_ADDR_SERR)))
            && (((uint32)(1u << ESM_G1ERR_B0TCM_CORRERR) | (uint32)(1u << ESM_G1ERR_B1TCM_CORRERR))
                    == (sl_esmREG->SR1[0] & ((uint32)(1u << ESM_G1ERR_B0TCM_CORRERR) | (uint32)(1u << ESM_G1ERR_B1TCM_CORRERR))))){
     
        if( ((SRAM_ECC_ERROR_FORCING_1BIT==testType) &&
                (sl_tcram2REG->RAMSERRADDR == ((uint32)&sramEccTestBuff[1] & ((uint32)0x0003FFFFU)))) || (SRAM_ECC_ERROR_PROFILING==testType)) {
            *sram_stResult = ST_PASS;
        }else{
            *sram_stResult = ST_FAIL;
        }
        sl_tcram1REG->RAMOCCUR = 0x00000000u;
        sl_tcram2REG->RAMOCCUR = 0x00000000u;
    } else{
        *sram_stResult = ST_FAIL;
    }

    [/报价]

    此外、不会对 SRAM_ECC_1bit_FAULT_IN注入 执行初始 POST 中提到的代码片段、因为以下条件会导致错误

    if (!((SRAM_ECC_1bit_FAULT_Inject=testType)||(SRAM_ECC_ERROR_profiling_FAULT_Inject =testType))) 

    我们已经验证 了 SRAM_ECC_1bit_FAULT_IN注入 测试在演示应用中的正确工作情况。

    谢谢、

    Akshay