请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:RM48L940 我的1位 ECC 闪存测试似乎通过了、但使用 sl_SelfTest_Flash (flash_ecc_test_mode_2BIT、0、failInfoFlash)失败了2Bit ECC 测试。 在下面的代码段中、条件(位(ESM_G3ERR_FMC_Uncorr)==(sl_esmREG->SR1[2]和位(ESM_G3ERR_FMC_Uncorr))评估为 false、并且我确认 ESM SR1[2]未设置。
当行 flashread =*(volatile UINT32 *) flashBadECC2;被执行时、ESR SR3的位7被置位。 一旦我执行 flashread =*(volatile UINT32 *) flashBadECC2、ESM SR3[7]就会被置位;
为什么要检查 ESM SR1[2]而不是 ESM SR3[7]? 我认为 SR1用于组1错误、但2Bit 错误将触发组3错误。 是否有人能解释正在进行什么以及我需要检查什么才能通过测试?
sl_flashWREG->FDIAGCTRL |= F021F_FDIAGCTRL_DIAG_TRIG; /*SAFETYMCUSW 58 S MR:14.3. 注释_16*/ flashread =*(volatile UINT32 *) flashBadECC2; #if defined (_TMS570LS31x_)|| Defined (_TMS570LS12x_)|| Defined (_TMS570LS07x_)|| Defined (_TMS570LS09x_)|| Defined (_RM48x_)| Defined (_RM44x_)|| if (((flash_ecc_test_mode_2BIT_FAULT_Inject!= testType)&&(flash_address_ecc_fault_inject!= testType)) #endif definef #if defined (_TMS570LC43x_)|| defined (_RM57Lx_) if (flash_ecc_test_mode_2BIT =testType) #endif { #if defined (_TMS570LS31x_)|| Defined (_TMS570LS12x_)|| Defined (_TMS570LS07x_)|| Defined (_TMS570LS09x_)|| Defined (_RM48x_)|| Defined (_RM46x_)|| Defined (_RM44x_)|| Defined (_RM42x_)| TMS570LS04x_(_RM42x_)| /*SAFETYMCUSW 134 S MR:12.2 备注_5*/ /*SAFETYMCUSW 134 S MR:12.2 备注_5*/ /*SAFETYMCUSW 408 S MR:12.4. 注释_12*/ /*SAFETYMCUSW 96 S MR:6.2、10.1、10.2、12.1、12.6 备注_25*/ if (((F021F_FEDACSTATUS_B1_UNC_ERR =(uint32)(sl_flashWREG->FEDACSTATUS & F021FEDACSTATUS_B1_UNC_ERR))) &&(sl_flashWREG->FUNCHERRADD =>(uint32) 0x8u) &&(位(ESM_G3ERR_FMC_Uncorr)==(sl_esmREG->SR1[2]和位(ESM_G3ERR_FMC_Uncorr))))
SL_flashWREG->FEDACSTATUS = F021F_FEDACSTATUS_B1_UNC_ERR;
sl_esmREG->SR1[2]=位(ESM_G3ERR_FMC_Uncorr);