器件型号: TMS320F2800157-Q1
您好的团队、
我向我的客户询问这个问题。
我们的 TRM 中介绍了闪存 single-bit 错误、但我找不到它提到的寄存器、也找不到 SDK 的 hw_flash.h 文件中的寄存器定义

客户正在进行一位错误注入测试(不使用 ECC 测试模式)、他们会发现在注入一位错误并读取后、错误计数增加、但读回的数据自动不正确、您能帮助提出可能导致这种情况的原因吗?
BRS
Shuqing
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.
器件型号: TMS320F2800157-Q1
您好的团队、
我向我的客户询问这个问题。
我们的 TRM 中介绍了闪存 single-bit 错误、但我找不到它提到的寄存器、也找不到 SDK 的 hw_flash.h 文件中的寄存器定义

客户正在进行一位错误注入测试(不使用 ECC 测试模式)、他们会发现在注入一位错误并读取后、错误计数增加、但读回的数据自动不正确、您能帮助提出可能导致这种情况的原因吗?
BRS
Shuqing
您好的团队、
对此有任何更新?
在客户的功能安全设计中、它将执行 ECC 测试(按照我们的 SDL 演示:sdl_ex_flash_ecc_test) 、成功通过此 ECC 测试。 然后、它们需要特意注入 single-bit 错误、并读回以检查数据是否正确。
他们的测试显示在下面:他们将首先擦除它

读取此地址后、他们可以看到器件检测到 single-bit 错误 CERRCNT Add1、但不会自动校正数据 (FLASH_DATA)。

ECC 已启用、为什么不更正?

如果因为他们的测试操作错误、您能告诉我如何注入 single-bit 错误并对其进行测试吗?
BRS
Shuqing
您好、Shuqing、
对延迟响应表示歉意。 我看到 Data+ECC = 0xFFFF 条件不适用后、修正了上一个答案。
这里的 ECC 逻辑按预期工作。 使用 64 位闪存和 8 位 ECC 进行 ECC 比较。 错误寄存器指示错误发生在第 18 位位置、即 0xEFFF 之后的字中、只有 16 位。 这意味着当读取闪存时、该值会校正为 0xFFFB 0xFFF。 客户可以通过使用 32 位或 64 位指针读取闪存来在其代码中观察到这一点。
此致、
Alex