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:向 CAN-RAM 注入 single-bit 错误时出现双位错误(ESM 1.73和1.21)

Guru**** 2460850 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1175377/tms570lc4357-double-bit-error-when-injecting-single-bit-error-into-can-ram-esm-1-73-and-1-21

器件型号:TMS570LC4357

各位专家、您好!

在实施《安全手册》中提到的 ECC 故障检测 CAN15时、我们遇到了以下问题。

在启用 ECC 的情况下初始化 CAN-RAM 之后。 我们翻转一个位、然后从翻转该位的地址读取。
在检查 ESM 和 ECCDIAG STAT 时、我们注意到单个位错误和双位错误标志被设定。 (例如、对于 CAN1 ESM 1.73和1.21)

结果与 CAN2、3和4类似。

(Q1)这是预期行为吗?

谢谢、此致、
最大

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

    尊敬的 Max:

    我已开始处理您的问题、我将很快返回给您更新。

    --
    谢谢、此致、
    Jagadish。

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

    尊敬的 Max:

    如果我们翻转单个位、那么我们应该只得到单个位错误、

    您是否可以共享您的代码?

    --

    谢谢、此致、
    Jagadish。

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

    您好 Jagadish、

    遗憾的是、我无法分享准确的代码、但我可以分享我们采取的步骤:

    配置 ECC:
     DCAN ECC CS -> ECCMODE = 0x5
     DCAN ECC CS -> SBE_EVT_EN = 0xA
     DCAN CTL -> PMD = 0xA

    自动初始化 RAM
     SYS MINITGCR -> MINITGENA = 0xA
     SYS MSINENA -> MSIENA = 0x100460
     等待 SYS_MSTCGSTAT ->= 0x1
     SYS MINITGCR -> MINITGENA = 0x5

    获取 CAN RAM ECC 地址:
     数据= 0xFFF7DC00 +(2 * 0x2)(对于 DCAN1为0xFFF7DC00)
     地址++

    翻转数据位
     DCAN CTL -> PMD = 0x5
     DCAN CTL ->测试= 0x1
     DCAN CTL -> Init = 0x1
     DCAN 测试-> RDA = 0x1
     DCAN ECCDIAG -> ECCDIAG = 0x5
     DCAN ECC CS -> SBE_EVT_EN = 0xA
     *数据^= 0x1
     DCAN CTL -> PMD = 0xA

    读取数据并检查错误
     Val =数据
     DCAN ECCDIAG STAT -> SEFLG 是否设置?
     ESM 置位? (DCAN 1将为1.73、在本例中也为1.21)
     
    更正错误...

    我们几乎关注 SafeTI 库中测试的实施。

    这些步骤是否与您使用的步骤相同?

    谢谢、此致、
    最大


     

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

    尊敬的 Max:

    感谢您分享您所遵循的步骤、让我在最后创建问题

    --

    谢谢、此致、
    Jagadish。

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

    尊敬的 Max:

    有一个 SDL API 可用于测试与 CAN 相关的 ECC 和奇偶校验

    sl_selftest.c 文件中提供了此函数的定义

    您可以使用与"CAN_ECC_TEST_MODE_1bit"测试类型相关的此函数代码定义交叉检查一次代码。

    --

    谢谢、此致、
    Jagadish。

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

    您好 Jagadish、

    正如我在上一篇文章中提到的、我们遵循了可在 SafeTI 库2.4.0中找到的测试实施:
    (布尔 SL_SelfTest_CAN (SL_SelfTestType testType、SL_DCAN 实例))

    我再次将我们的执行情况与这一执行情况作了比较,在我们采取的步骤中没有发现任何不同。

    (Q) 1位 ECC 测试是否仅在您的末尾触发1位错误?

    谢谢、此致、
    最大

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

    尊敬的 Max:

    如何检查 ECC 标志(单位和双位错误)、是否在工程的调试模式中进行检查?

    --

    谢谢、此致、
    Jagadish。

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

    尊敬的 Max:

    我了解问题的根本原因。

    不应在调试模式下执行此测试、因为调试/挂起模式和 RDA 模式下的消息 RAM 表示不同。 为了执行此测试、我们使用 RDA 模式、因此如果我们在调试模式下执行测试、则两种模式之间的存储器表示会发生变化、因此可能会生成更多 RAM 错误(包括单比特错误和双比特错误)。

    因此、为了在没有任何问题的情况下执行该测试、我使用了 SCI、在执行测试后将测试状态传输到 SCI

    我的测试代码中的 SCI 输出总共包含10个字节、其中前4个字节是损坏前的字、后4个字节是损坏后的字、后2个字节是"ECCDiagnostic Status Register"

    如果有两个字节

    00 01 -单位错误

    01 00 -双位错误

    01 01 -单位和双位错误

    下面是执行单个位错误时获得的输出

    下面是执行双位错误时获得的输出

    您可以在 代码的下一行更改单位和双位错误

    这是代码、请仔细阅读、

    e2e.ti.com/.../CAN_5F00_ECC_5F00_TEST_5F00_MODE_5F00_1BIT_5F00_LC43.zip

    --

    谢谢、此致。
    Jagadish。

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

    您好 Jagadish、

    我将您的 testfunction 与我们的 testfunction 进行了比较、在测试设置和错误触发方式方面找不到任何区别。
    我还尝试在未连接调试器的情况下运行测试、并获得相同的结果。 ESM 1.21和1.73用于1位故障注入测试。

    假期回来后、我将尝试测试更多的测试。

    如果您有任何关于我们如何调试的想法、我希望获得一些提示。

    谢谢、此致、
    最大

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

    尊敬的 Max:

    请再次验证我的代码并再次测试。

    --

    谢谢、此致、
    Jagadish。