关于ECC,我有一些问题。
我目前使用 MCM_LMFAR 来确定 ECC 触发故障的位置,然后使用该地址读取并写回以纠正故障。
问题:
1. ECC 是否具备自动纠错功能?或者我真的需要对地址进行读/写操作才能纠正错误吗?
2. 如果没有自动纠错功能,我在执行读/写纠错机制时是否需要补偿字节对齐问题?目前我正在对 MCM_LMFAR 指示的地址执行 4 字节的读/写操作。我觉得这样做很危险,因为我不确定 MCM_LMFAR 是否总是显示 4 字节对齐的地址。
你好@sean_dvorscak ,
感谢您的帖子。
请问您使用的是KE1系列中的哪一款具体设备?
这将有助于我更准确地找到相关文档,或使用同一设备进行验证。
BR
塞莱斯特
它是 KE18F512VLH16。
感谢您的帮助。
你好@sean_dvorscak ,
感谢您的回复。
所以,对于你的问题:
1. ECC 是否具备自动纠错功能?或者我真的需要对地址进行读/写操作才能纠正错误吗?
是的,ECC确实支持硬件纠正单比特错误。因此,您无需使用软件读/写序列即可获得校正后的数据。
2. 如果没有自动纠错功能,我在执行读/写纠错机制时是否需要补偿字节对齐问题?目前我正在对 MCM_LMFAR 指示的地址执行 4 字节的读/写操作。我觉得这样做很危险,因为我不确定 MCM_LMFAR 是否总是显示 4 字节对齐的地址。
->> 如果要实施可选的清理操作,请根据实际访问大小或清理粒度来调整访问权限,而不是盲目地根据原始 MCM_LMFAR 值来调整。此外,除非您先正确对齐地址并确认访问大小有效,否则不要使用固定的 4 字节访问。
事实上,对于多位/不可纠正的 ECC 事件,不要假设读/写操作可以修复数据,而应将其视为数据损坏,并从已知良好的源进行恢复,或根据情况重新初始化受影响的内存。
希望对您有所帮助。
BR
塞莱斯特
---------------------------------------------------------------------------------------------------------------------
注:如果此帖解答了您的问题,请点击“接受为解决方案”按钮。谢谢你!
---------------------------------------------------------------------------------------------------------------------
感谢您的确认和信息。
是的,我对无法纠正的比特错误采取了不同的处理方式。
还有一个问题。
自动硬件纠错功能默认启用吗?我没有在 MCM 寄存器中看到任何可以表明这是一个可以禁用/启用的功能的位。
是的,RESET后默认启用ECC校验/生成功能。