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:PBIST L2RAM 测试(源自 SafeTI 库)始终失败

Guru**** 2477675 points
Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/985190/tms570lc4357-pbist-l2ram-test-sourced-from-safeti-library-always-fails

器件型号:TMS570LC4357
主题中讨论的其他器件: HALCOGEN

TMS570LC4357 PBIST L2RAM 测试(源自 SafeTI 库)始终失败。  与之前发布在下面的 TI 问题中的问题完全相同:

e2e.ti.com/.../ccs-tms570lc4357-safeti-library-pbist_l2ram_enable-test-fails-when-using-example-code

https://e2e.ti.com/support/microcontrollers/hercules/f/hercules-safety-microcontrollers-forum/857006/ccs-tms570lc4357-tms570lc4357-pbist-on-l2ram-failing

再次询问、因为之前的问题实际上从未提供过任何答案/解决方案。  为什么由于 L2RAM 错误、TI 在 SafeTI 库中提供的代码 PBIST L2RAM 测试总是无法通过测试并在 while 循环中挂起软件? TMS570LC4357 RAM 实际上是否有问题? 在执行 L2RAM 测试之前是否可以直接放置一些代码/汇编以关闭高速缓存、以便测试通过? 我正在寻找一个特定的解决方案、而不是关于选择错误算法导致测试失败的一些一般性声明。  TI 是否支持 TMS570LC4357器件和 SafeTI 库代码?

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

    即使禁用了所有编译器优化、您是否也会看到自检失败? 自检例程使用几个"虚拟读取"、这是自检例程正确运行所必需的。

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

    是的、即使启用了所有编译器优化、自检也会失败。

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

    演示示例不包括 在 L2 RAM 上运行 PBIST 的示例。 但是、对于在缓存存储器上运行 PBIST、有一条注释。

    在启用缓存之前、甚至在配置 MPU 之前、您是否可以尝试在 L2 RAM 上执行 PBIST? 这些步骤是作为示例演示应用中建议的启动例程的一部分完成的。

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

    我尝试了几次不同的迭代(在启用缓存之前移动测试、并删除了一些 MPU 配置命令)、但结果没有改善。  无法完全消除某些 MPU 配置例程、PBIST 甚至无法运行。

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

    我要附加一个在 L2 RAM 上运行 PBIST 的 CCS 工程。 希望这对您有所帮助。

    e2e.ti.com/.../LC4357_5F00_PBIST.zip

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

    这个 PBIST L2 RAM 测试成功通过、但是应用在 PBIST L2 RAM 测试被启用后不能运行。  

    PBIST L2 RAM 测试完成后、main()应用程序开始初始化其他接口、然后卡在 hl_sys_intvecs.asm、中断矢量 b _dabort 部分、该部分继而调用 dabort.asm _dabort 部分、 然后调用 ramErrorFound、然后返回紧密循环中的中断矢量部分、以便其他内容不会运行。

    不确定如何防止仅在启用 PBIST L2 RAM 测试后发生的 RAM 错误情况?

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

    问题可能是 PBIST 引擎没有"释放" L2 RAM、以便其他总线主控可以访问它。  HCG 生成的 pbistStop()函数缺少 PBIST 控制器的复位信号。 下面的函数是更新的 pbistStop()。 请更新 HALCoGen 生成的例程、以匹配以下内容。

    void pbistStop(void)
    {
    /* USER CODE BEGIN (20) */
        pbistREG->PACT = 0x0U;
        systemREG1->MSTGCR &= 0xFFFFFFF0U;
        systemREG1->MSTGCR |= 0xAU;
        systemREG1->MSTGCR &= 0xFFFFFFF0U;
        systemREG1->MSTGCR |= 0x5U;
    /*用户代码结束*/
    }