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.
您好!
我正在尝试使用 CRC 和 DMA 模块对闪存内容、特别是程序存储位置进行错误检查。 我正在使用半自动 CPU 模式、在该模式下、我手动启动从闪存存储器到 CRC 寄存器的 DMA 块数据传输。 这将按预期工作、直到允许 DMA 检查超过编程空间末尾的闪存地址。 此时、正如预期的那样、DMA 在 ESM 中设置不精确错误标志、这是因为它读取了一个带有不正确(未启动) ECC 值的闪存值。 在某些情况下、我还在 ESM 中得到一个 FMC 不可纠正的错误。
一种简单的解决方案是在短于编程空间或恰好在编程空间的末尾停止 DMA 读取。 这是开发代码时的一个问题、因为编程闪存的末尾总是随每次编辑而变化。 此外、尝试选择一个元素和帧计数以匹配该精确地址也是一个问题。
简单的解决方案似乎是使用一个也会设置 ECC 值的默认值来填充闪存组的其余部分。 到目前为止,我还没有找到办法来做到这一点。
我觉得我在这里缺少一些非常简单的东西。 提供的示例显示了自动使用 DMA 和 CRC 来检查闪存存储器是否存在错误、但没有提及此问题。 除非 DMA 在最后一个编程的闪存值停止、否则将发生上述错误。 我缺少什么?
谢谢、
艾伦