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.

[参考译文] RM46L852:SRAM 包装程序中的发生寄存器不能#39;t 在 ECC 故障校正上递增计数

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/579429/rm46l852-occurance-register-in-sram-wrapper-doesn-t-count-up-on-ecc-fault-correction

器件型号:RM46L852

您好!

我正在尝试使 SRAM 可纠正的 ECC 评测(安全手册 RM46x 7.94)运行。 我使用 TI 安全库。

通过使用> sl_SelfTest_SRAM (SRAM_ECC_1bit_FAULT_INMODED、TRUE、&SRAM_STResult);<我已经可以注入故障、以触发 ESM_Callback 反应。 现在、当我使用 SRAM_ECC_ERROR_ENCERATing_1bit 作为 testType 时、我根本没有反应。 这两种 testTypes 之间有何区别?

此外、RamWrapper 中的发生频率寄存器根本不进行计数、因此无法达到阈值以生成中断。

我使用了函数_sl_pmuInit_();和_sl_Init_EnableEventExport ();来模仿 PMU。  

您能告诉我、如何正确配置该功能吗?

此致

Mathias

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

    我正在研究您的问题、并将在我有更多信息可供分享时尽快与您联系。 我对拖延表示歉意。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您是否已找到一些答案/信息?

    此致

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

    不幸的是,我们的专家最近已离开办公室。 我将再次与他们联系、看看我们是否能很快为您找到解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Mathias、

    再次、很抱歉耽误您的时间。

    这两种测试类型之间的差异是、对于 SRAM_ECC_1bit_FAULT_INMOTION 选项、ESM 错误在安全库函数内被清除。 即、注入故障、测试是否检测到故障/捕获/校正故障、然后清除与故障注入相关的任何 ESM 错误。 SRAM_ECC_ERROR_ENCEDing_1BIT 测试类型不会清除 ESM 错误、该错误允许执行/测试 ESM 错误处理程序以及验证是否检测到故障。

    关于 ECC 阈值寄存器、代码似乎在退出/返回之前将备份值恢复到 ECC 阈值寄存器。 这很可能是您看不到计数器递增和中断发生的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、

    谢谢! 同时、我可以计算出类似/额外的东西。

    对于 SRAM_ECC_1bit_FAULT_INMOTION 选项、测试中未禁用 B0TCM 和 B1TCM 的 ESM 中断(sl_selftest.c 第381行)。 它仅针对 SRAM_ECC_ERROR_ENCERATing_1bit 和 SRAM_ECC_ERROR_性能 评测类型禁用。 这就是为什么我只会看到 ESM_G1ERR_B0TCM_CORRERR 和 ESM_G1ERR_B1TCM_CORRERR 案例的 esmGroup1Handler 跳转到故障注入选项的原因。

    正如我在库(sl_selftest.c 第504行)中看到的、我应该与您说的完全相反。 在 SRAM_ECC_1bit_FAULT_INMOTION 选项中、ESM 错误不会在库中清除、而在 SRAM_ECC_ERROR_ENDERACK_1BIT 选项中、它将清除 ESM 错误。 至少如此,因为我仍然必须清除 ESM 回调中所有选项的 ESM 状态和 sl_tcram1(2)REG->RAMERRSTATUS。 但这对我来说现在没有问题、也许只是想知道该函数在我的情况下为什么如此工作。

    对于阈值寄存器、我同意您的意见。 阈值寄存器正在将实际值保存为备份、使用另一个值进行测试(所有非性能评测类型的值1)会在末尾恢复旧值 这就是为什么当我使用故障注入模式时、即使我将阈值设置为10或任何高于1的值、中断仍然有效的原因。
    在 sl_selftest.c 中、测试中第417行至421 RAMOCCUR 被设定为零。 由于之前的值不会存储和恢复、因此每次测试后可纠正 ECC 错误的计数器将为零。 这就是我看不到计数器递增的原因。

    通过注释掉那些将禁用中断或将发生值设置为零的行、并将阈值设置为另一个值、我修复了问题、ECC 分析现在工作正常。
    当然、这不是函数的工作方式、但我想测试函数并使对错误的反应可见、以了解该功能的工作方式。

    谢谢、此致

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

    对这项职能的评估非常好、感谢您坚持不懈地贯彻这项职能。 我知道、考虑到文件中包含的所有注释安全标识符、符号和代码验证工具、代码可能很难遵循。 我很容易就颠倒了这两个定义的使用。 如果是,我对此表示歉意。 我很高兴你最终能得到你需要的东西,一切都在努力,使你感到满意和理解。