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.

[参考译文] TMS570LC4357:直接写入 ECC 存储器以在 L2RAMW 中创建1位和2位错误

Guru**** 2455560 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1254721/tms570lc4357-writing-directly-to-ecc-memory-to-create-1-bit-and-2-bit-error-in-the-l2ramw

器件型号:TMS570LC4357

您好、TI 专家

对于 TMS570LC、当 RAMCTL 中的该位 ECC_WR_EN 设置为"1"时。 允许 ECC 区域可写的功能请参阅 TRM pg394

我尝试执行以下操作。 在我的程序中、特定的 RAM 变量位于地址0x08001500、相应的 ECC 位于地址0x08401500。

在我的测试开始时、我发现 ECC 在启动时的值为0x0c0c0c0c0c0c0c0c0c0c0c

1) 1)我可以打开存储器浏览器并损坏 ECC 内容吗?

2) 2)我可以编写一些测试代码来更新 RAM 变量、损坏其相应的 ECC 并读回 RAM 变量、而不是使用内存浏览器?

你认为我的测试程序是正确的吗?  我发现 ECC 始终保持在0x0c0c0c0c0c0c0c0c0c0c0c、并且未检测到任何错误。

谢谢、 期待收到您的回复。

德利克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Deric:

    我们有 safeTI 诊断库代码、其中包括用于在控制器中注入不同故障的代码。 您可以从以下链接下载:

    SAFETI_DIAG_LIB 驱动程序或库| TI.com

    一旦您下载了 SAFeTI 诊断库、现在您就可以参考与 SRAM_ECC_ERROR_ERRITH_1位和 SRAM_ECC_ERROR_ERRING_BIT 相关的代码

    这里给出了为 RAM 创建 single-bit (可纠正错误)和 double bit (不可纠正错误)的代码。

    因此、请遵循 safeTI 诊断库中给出的代码。

    您还可以参考下述主题中我的第一条评论、其中我解释了他们在 SAFeTI 诊断库中为  SRAM_ECC_ERROR_CHRING_1bit 和 SRAM_ECC_ERROR_FORCING_2BIT 执行 的过程。

    (+) RM57L843:如何分别注入 ESM_G2ERR_L2RAMW_Uncorr_B/ESM_G1ERR_L2RAMW_CORRERR 和触发 ESM 中断-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --

    谢谢。此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Jaga

    谢谢。 之前、我已经设法使用 safeTI 库创建1或2位 ECC 错误、这些错误将触发 ESM 2.7 L2RAMW 不可纠正的错误类型 B。但现在我打算手动写入 RAM 及其 ECC、以使 ESM3.3 L2RAMW 双位 ECC 不可纠正的错误。  

    与我分享任何想法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Deric:

    、但现在我打算手动写入 RAM 及其 ECC、以导致 ESM3.3 L2RAMW 双位 ECC 不可纠正的错误。  [/报价]

    请使用  SDL 开关用例 SRAM_ECC_ERROR_FORCING_2bIT 中的代码作为创建 ESM3.3的参考、并在以下主题中解释了该代码具体执行的操作:

    (+) RM57L843:如何分别注入 ESM_G2ERR_L2RAMW_Uncorr_B/ESM_G1ERR_L2RAMW_CORRERR 和触发 ESM 中断-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --

    谢谢。此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我已经进行了上述尝试、并导致 ESM2.7出现。 此外、我已更改/损坏全局变量的 ECC、预计会发生 ESM3.3。 但它不是、您对此有什么想法吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Deric:

    RAM 测试模式下的 ECC 错误注入(1位或2位)不会生成 ESM3.3错误。 当 SECDED 逻辑无法纠正1位 ECC 错误、或者冗余地址解码生成地址错误、或者在读取-修改-写入操作期间出现2位 ECC 错误时、就会生成该位。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    早上好、QJ:

    感谢您的回复。

    1) 1)当 SECDED 逻辑无法纠正1位 ECC 错误时生成该位、

    2)冗余地址解码会产生地址错误,

    3) 3) 在读取-修改-写入操作期间存在2位 ECC 错误。  

    对于这3种情况、如何触发它们? 我曾尝试(3)将 ECC_DETECT_EN=5h 和 ECC_WR_EN=0更改为故意损坏 RAM 变量及其 ECC。 这个问题没有解决。

    我是不是错过了任何东西,或者那不是正确的方式这样做. 希望很快收到您的反馈。 你好。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我执行了低于64位的写入 、如 TRM 8.2.2.1中所述、ECC 处理8、16和32次写入。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更改 ECC_detect_EN=5h 和 ECC_WR_EN=0以有意破坏 ram 变量及其 ECC。

    这是"Uncorrectable error Type B"、ESM 2.7。

    您可以尝试的一种方法是: 在 PBIST 之后读取 RAM。 March13N 算法将存储器阵列初始化为已知模式、然后通过存储器写入不同的模式、包括 RAM 的 ECC 空间。 在 PBIST 之后、ECC 空间包含无效的 ECC 代码、因此读取 RAM 地址将生成 ECC 错误。

    E2E 论坛维护昨天和今天因维护原因停用、 很抱歉耽误了响应。