请教 LE1 系列 SRAM ECC 工作机制及软硬件分工
-
默认开启状态与上电初始化处理情况RAM ECC 默认由硬件自动开启,上电后 RAM 内数值随机,必然存在 ECC 错误,如果不完成初始化,执行读操作或者单字节写操作都会触发 ECC 错误 。SDK 默认在启动流程中已经实现了 ECC RAM 的全范围初始化。
ECC 完整工作流程与软硬件分工
写入生成 ECC:硬件自动在写入 RAM 数据时同步生成并存储对应的 ECC 校验位,软件仅需正常执行写操作完成 RAM 初始化即可。
读取校验:硬件在读取 RAM 数据时自动对读出的数据 + 校验位重新计算校验值,自动区分可纠正的单比特错误和不可纠正的多比特错误,整个校验过程完全由硬件完成,软件无需介入 。
单比特纠错及回写:检测到单比特可纠正错误后,硬件自动完成数据纠错并将正确的数值回写到 RAM 中,同时置位对应的错误标志位,整个纠错和回写流程由硬件自动执行 。
软件参与的环节:仅需完成 RAM 全范围初始化、ECC 自检配置、错误标志查询 / 中断处理、错误上报和故障处置,不需要参与 ECC 的计算、校验、纠错的底层逻辑 。
双比特错误的触发路径与软件处置方式
触发路径:双比特不可纠正错误会同时触发 EMU 中断,且会接管 HardFault 异常路径 。
软件处置步骤:
预先完成 ECC 错误中断和 HardFault 处理函数的注册,配置工具中可安装并勾选Utility flash ecc;记录故障地址(EFM->ECCERR_ADDR,ecc callback中添加软复位;
完成故障记录、错误上报等安全处理后,清除对应的 ECC 错误标志位。
清除标志后的硬件行为:错误标志被清除后,硬件会停止上报该次 ECC 错误,恢复正常的 RAM 读写操作,后续对该地址的合法读写会重新生成正确的 ECC 校验位,不会再重复触发该错误告警 。
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...