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:由于 DMAECCSBE 中存储的地址不正确、DMA ECC 自检随机失败

Guru**** 2455560 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1210780/tms570lc4357-dma-ecc-self-test-failing-randomly-due-to-incorrect-address-stored-in-dmaeccsbe

器件型号:TMS570LC4357

我遇到的问题与此(锁定)主题中报告的 DMA ECC 1位自检完全相同: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1097304/tms570lc4357-dma-ecc-test-fails-randomly/4064481?tisearch=e2e-sitesearch&keymatch=TMS570LC4357%20DMAECCSBE#4064481

我曾尝试按照主题中的建议使用 dmaBadECC=0xFFF80014而不是0xFFF80010、但 DMAECCSBE 仍然随机报告了错误的地址。  

您能帮助吗?

谢谢。

Cameron

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

    您好、 Cameron、

    我将进行测试、然后很快回来与您联系。

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

    您好、 Cameron、

     DMAECCSBE 只有在 SBERR 标志被置位时有效。 当您得到错误的错误地址时、是否设置了错误标志?

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

    您好、QJ:

    每次都会设置 SBERR 标志。 仅错误地址错误。 我运行了 50次试验、损坏了地址 0xFFF80010。 SBERR 一直为1、但 DMAECCSBE 出错了7次:

    试用11、13、39和50:DMAECCSBE=0xFFF80014

    试用15和24:DMAECCSBE=0xFFF8001C

    试用26 DMAECCSBE=0xFFF80018

    感谢您提供任何指导、

    Cameron

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

    您好、Cameron、

    我在我的 LaunchPad 上进行了相同的测试。 我没有重现问题:

        

    testCount0是总测试数、testCount1是错误地址不正确的测试数(0xFFF80014)。

    #define dmaBadECC     0xFFF80014u

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

    我已在两个 TMS570LC4357 MCU 上进行过此尝试、   无论我是将 dmaBadECC 定义为0xFFF80010u 还是0xFFF80014u、DMAECCSBE 中都报告了错误的地址。 在 DMASECCCTRL 中始终正确设置 SBERR。

    由于它对您有效、我想知道您正在进行的某些设置是否 我错过了。 在从( SafeTI 诊断库2.4.0中定义的)运行 sl_SelfTest_DMA ()之前、我唯一要做的配置是将 DMAPCR 设置为等于0xA。 是否 应该事先设置其他任何 可能导致我看到的错误的内容?

    非常感谢您的帮助!

    Cameron

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

    您好、 Cameron、

    我使用与 SDL 2.4相同的 API (sl_SelfTest_DMA ())。  

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

    您好、QJ:

    我仍在尝试解决这个问题、我发现 DMA 2位自检通常也可以通过、 但有时会失败、因为 DMAPAR 寄存器的 ECC 错误检测标志(位24)未置位、而 ESM ECC 不可纠正的错误位未在状态寄存器1中置位。 我的印象是2位自检和1位自检一样不成功。 这对您来说是否有任何可能帮助我发现问题的地方?

    谢谢。

    Cameron

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

    您好、 Cameron、

    这是我用于 DMA ECC 错误注入的测试代码:

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

    非常感谢您发送项目。 我注意到了一些 我没有执行的清除 ESM 状态寄存器的配置步骤、但是即使在添加它们之后、我仍然偶尔看到错误的地址存储在 DMAECCSBE 中。  

    但是、我注意到的一件事是您正在使用编译器 ARMv16.9、我无法将其安装在我的环境中。 我将使用 ARM 编译器工具 v5.1.6与 CCS v6.0.1.00040配合使用。 这有可能对 DMA ECC 自检产生影响吗?

    谢谢。

    Cameron

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是 带有 CCS v6.0.1.00040的 ARM 编译器工具 v5.1.6。 是否可能影响 DMA ECC 自检?

    我将使用 CCS12.1和编译器16.9或20.2.7。

    您是否在您的板上尝试了我的*。out 文件?

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

    我可以尝试您的测试代码、它使用调试模式可以很好地工作。 在调试模式下、我的项目还一致地在 DMAECCSBE 中存储正确的地址。 但是、问题仅发生 在版本构建中(而不是在调试中)。 我通过使用 SCI 将其写入串行端口来检查寄存器的内容。

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

    您好、 Cameron、

    Debug 和 Release 是构建配置。  CCS 中的工程可以具有一个或多个编译配置。 构建配置指定要使用的编译器版本、编译器的设置和选项、要包含/排除哪些源文件...  

    通常、用户将设置调试编译配置以 启用完整的符号调试信息、从而提高调试应用的能力。 从发布配置中删除调试信息并使用更高级别的优化也很常见。 请注意、每个配置所使用的构建选项完全在您的控制之下。

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

    我想我应该回答的 是、每次我在 CCS 中使用 CDT 调试器运行时、您的代码都能正常工作、这似乎是 您用于检查 DMAECCSBE 地址是否正确(如您在上面发布的图像中所示)。

    我的项目也可以与调试器一起正常工作、但 无论 我试过哪种 构建选项(包括没有优化)、当编译从调试器独立运行时、它仍然无法一致地在 DMAECCSBE 中报告正确的地址。

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

    您好、Cameron、

    构建在调试器之外运行时。

    它在上电复位后是否运行?

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

    是的、它会在上电复位后运行并遇到问题。

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

    我将使用 TMS570LC43x Launchpad 进行此测试。 该 LaunchPad 通过 USB 电缆供电、该电缆也用于 XDS110调试器和 SCI。  

    我在连接调试器并断开调试器(上电复位)的情况下运行测试。 我获得了相同的测试结果。

    这是我的测试结果:

    前两行:在连接了调试器的情况下进行测试

    其余(第3行~第8行):上电复位后进行测试。

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

    QJ、您好!

    CPU 时钟速度可能是我们看到的结果差异的原因吗?  地雷已配置 为最大速度。 如果你的价格较低、那能解释一下差异吗?

    感谢您的帮助。

    Cameron

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

    您好、 Cameron、

    我的示例项目中使用了300MHz CPU 时钟。 TMS570LC43x 的最大 CPU 时钟为300MHz。

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

    您好、QJ:

    继续以该主题为例、我 将 TestSafeTI.hcg 文件中的时钟配置与.hcg 文件中的时钟配置进行了比较。 在 GCM 页面的 TMS570LC4357ZWT 选项卡中、我注意到以下差异(括号中的值)。  这些不同的值中的任何一个是否与我们看到的错误相关? 谢谢。

    HCLK 分频器= 2 (1)
    HCLK = 100.000 (150.000)
    VCLKA src = VCLK (PLL2)
    VLCK1 = 50.000 (75.000)
    VLCK2 = 50.000 (75.000)
    VLCK3 = 12.500 (75.000)
    VLCKA = 50.000 (80.000)
    RTI1CLK = 50.000 (75.000)
    VCLKA4_DIV = 50.000 (75.000)
    VCLKA4_S = 50.000 (75.000)
    振荡器= 16.0 (18.0)
    PLL2 = 300.0 (80.0)

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

    您好、 Cameron、

    我将 HCLK 重新配置为150MHz、所有测试都通过。

    testCount0和 testCount1:通过测试的数量

    测试总数: 200

        

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

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

    QJ、这看起来不错、但我仍然有测试问题。

    我注意到、你在循环中运行测试、但是我 每次都在上电复位后进行。 您还可以尝试在上电复位几次后运行测试、看看它是否仍然持续工作?  

    谢谢。

    Cameron

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

    在回答最后一个问题后、我尝试在启用 ECC 后和运行测试之前执行 DMA RAM 自动初始化(根据技术参考手册2.2.4.2节)。 这样做时、我每次运行 DMA ECC 1位测试时都会看到正确的地址、而且2位测试也每次都通过。

    这可以解决我的问题、但我想向您确认、在 ECC 功能可靠之前、执行 DMA RAM 自动初始化实际上是必需的步骤。 是这样吗? (可能我错过了它、但我没有看到它是在上面链接的示例项目中完成的任何地方。)

    谢谢。

    Cameron

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

    您好、Cameron、

    您是对的。 CPU RAM 和外设 RAM 应该进行硬件初始化、以避免上电后立即出现 ECC 错误。

    热复位和上电复位不会清除 DMA RAM。 对于 DMA RAM 中的任何翻转的位、我们必须手动将位翻转过来、或用硬件初始化 RAM。 感谢您指出这一点。