主题中讨论的其他器件: TMS5700332、 UNIFLASH
您好!
我们有一个使用 TMS570LS3137和 TMS5700332的系统。 对于这两种情况、我们都启用了 ECC、并由链接器计算(将是输出 Intel hex 文件的一部分)。 我们为以前的系统使用了类似的配置、没有问题。 我们将使用 TI 编译器工具链 v20.2.1 LTS。
对于此系统、在使用 Code Composer 或 Uniflash (通过 CLI)刷写 TMS570LS3137时、我们一直会遇到间歇性错误。 在另一个处理器上不会出现错误。 在 Code Composer 上、错误如下所示:

根据错误中的地址、很明显错误 位于存储器的 ECC 段。
在调试错误时、我们尝试更改 VFILL 以填充闪存各个部分的链接器文件。 我们注意到在使用 fill 时没有发生错误。 填充的使用不太 方便、因为这会导致十六进制文件大得多、闪存会更耗时。 我们比较了使用 VFILL 生成的十六进制文件并填充、注意到 计算出的 ECC 存在差异、我认为这是不正确的。
这是 存储器特定部分的 ECC 代码屏幕截图(注意、该屏幕截图针对的是与用于获取 CCS 屏幕截图的二进制代码不同的二进制代码):

以下是该 ECC 的闪存数据的屏幕截图:

在数据方面、似乎当使用 VFILL 零时用于空存储器。 使用 fill 时、我们会使用 FF。 这似乎不是产生 ECC 差异的原因、因为其他 ECC 代码确实匹配。
什么可能导致使用 Fill 与 VFILL 计算出的 ECC 存在差异?
我们不能共享我们的 源代码、因为它是我们客户的财产。 我们尝试了设置简化的代码库、但无法重现错误。
谢谢。
何塞·洛佩斯


