请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:RM57L843 大家好、团队成员。
我使用 SL_CRC_Calculate ()实现了闪存程序区域 CRC 检查。
此时、当 读取 SL_CRC_Calculate ()中的闪存区域时、 会生成 ESM_G2ERR_CR5_BUSERR 信号。
如何才能导致误差信号?
CRC 读取代码
volatile uint32_t u32FlashStartAddrCmp = _getFlashStartAddr(); /* ulFlashStartAddr on *.cmd */
volatile uint32_t u32FlashEndAddrCmp = _getFlashEndAddr(); /* ulFlashEndAddr on *.cmd */
uint64_t u64CurretFlashCRC = SL_CRC_Calculate((uint64_t *)(u32FlashStartAddrCmp), ((u32FlashEndAddrCmp - u32FlashStartAddrCmp) >> 3u));
if(s_u64InitFlashCRC == u64CurretFlashCRC)
{
bCompFlashCrcRslt = TRUE;
}
ESM 组2处理代码
/* CCMR5 BUS error : ESM Group2 CH03 */
case ESM_G2ERR_CR5_BUSERR:
/* L2RAMW Uncorrectable error : ESM Group2 CH07 */
case ESM_G2ERR_L2RAMW_UNCORR_B:
/* EPC Uncorrectable error : ESM Group2 CH21 */
case ESM_G2ERR_EPC_UNCORR:
/* L2FMC Parity error : ESM Group2 CH17 */
case ESM_G2ERR_L2FMC_PAR_ERR:
sl_esmREG->SR1[1u] = sl_esmREG->SR1[1u] | GET_ESM_BIT_NUM(u32EsmCbGrp2Error);
sl_esmREG->SSR2 = GET_ESM_BIT_NUM(u32EsmCbGrp2Error);
/* Clear nError */
_SL_HoldNClear_nError();
/* ESM Fault Detection */
bEsmGrp2FaultSt = TRUE;
break;
祝你一切
顺利。 基因。