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:TMS570LC4357中的内部 RAM 存储器测试

Guru**** 2450280 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/1027417/tms570lc4357-internal-ram-memory-test-in-tms570lc4357

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

您好!

  • 当使用 March13N 算法对单端口执行内部 RAM 存储器测试时、考虑到 L2RAMW 的29和30组、我遇到 L2RAMW -双位 ECC 不可纠正的错误(组3通道3错误)[有时、 总线错误]、这会影响导致异常的应用程序的进一步执行。

参阅 C:\ti\hercules\SafeTI Diagnostic Library\2.4.0\demo_app\con\source\app_main_Noos.c、可以看到以下语句:

"// nPBIST_RAMGROUP_29_L2RAMW 错误(PBIST_RAMGROUP_30_L2RAMW)
*在高速缓存存储器上运行 PBIST 需要特别注意
*在应用中。 */"

请确认是否可以对内部 RAM 测试执行 PBIST 内存测试。 (如果无法执行、还请说明原因)

测试内部 RAM 测试的替代方法是什么?如何将其集成到 PBIST 序列中?

此外、 在高速缓存存储器上运行 PBIST 时需要特别注意哪些事项? 请澄清。

  • 这与 PBIST 测试相关:参考 C:\ti\Hercules \SafeTI 诊断库\2.4.0\DEMO_APP\HALCoGen\TMS570LC4357_Noos\SOURCE 中的演示代码、启动代码中不提供内置自检序列。 请您提供要 遵循的内置自检的准确序列。

谢谢

Tirumala。

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

    是的、PBIST 可用于测试内部 MCU RAM。

    外设 RAM 或 MCU SRAM 中的 PBIST 故障不会生成 ESM 错误。 当 PBIST 完成时、一个 PBIST 完成中断将被置为有效。

    在使用 MCU SRAM 之前、请确保将其初始化为上电后的第一个操作。

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

    谢谢、王。 将会检查它。

    请阐明高速缓存存储器上的 PBIST 的特别注意事项以及所有位测试的顺序。

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

    在 LC4357上、内存组31和32用于 I 和 D 高速缓存。  

    请参阅 TRM:SPNU563A 的"9.3.1 PBIST 序列"

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

    它与 PBIST 自检的步骤序列无关。

    请将该查询视为:

    考虑到 PBIST 自检、PBIST STC ROM 自检、PBIST ROM 自检、STC 自检、CCM 自检、TPRAM 自检等所有位、 L2RAMW ECC 测试、闪存 ECC 测试、L2RAMW 内存自检等、执行这些测试的顺序是什么?  

    谢谢、

    Tirumala。

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

    我在 对 SRAM 执行存储器测试之前已对其进行初始化、虽然堆栈初始化在内存初始化之前完成、但这会导致堆栈初始化后出现问题。
    您能建议问题的解决方案吗?

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

    有关 Pbist 自检、请参阅 TMS570LSx 器件的 pbistSelfCheck()、或参阅安全诊断库(SDL)中的类似功能。

    [引用 userid="408981" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1027417/tms570lc4357-internal-ram-memory-test-in-tms570lc4357/3798387 #3798387">考虑所有位、如 PBIST 自检、PBIST STC ROM 自检、PBIST ROM 自检、STC 自检、CCM 自检、TPRAM 自检、 L2RAMW ECC 测试、闪存 ECC 测试、L2RAMW 内存自检等、执行这些测试的顺序是什么?  [/报价]

    请阅读 SDL 的 TRM 和示例代码。

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

    谢谢、王。

    请您为此查询提供解决方案。

    [引用 userid="408981" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1027417/tms570lc4357-internal-ram-memory-test-in-tms570lc4357/3801536 #3801536"]我在 对 SRAM 执行内存测试之前已初始化 SRAM,这会导致栈初始化后出现栈问题,尽管栈初始化是在内存初始化之前完成的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为了清零、在内部 SRAM 测试前后执行存储器初始化后、会遇到总线错误。

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

    请找到所附的屏幕截图、其中在检查 PBIST 内部 RAM 测试的完整状态时遇到此错误。

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

    pbiststop()中有一个软件错误。  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;
    /*用户代码结束*/
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、遵循了相同的例程。 在检查测试是否完成时,即使在执行 STOP_MEMORY_TES()之前,也会看到错误。

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

    PBIST 测试的存储器组是否包括任何未实现的存储器组? 例如 USB 存储器。 是否可以发布错误标志的值? 如果您可以与我共享该代码、那会很有帮助。

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

    您好、Wang、

    请查找所配置寄存器的附加快照、以便在 L2RAMW 上运行内存测试。

    执行 PBIST 之后、错误标志如下所示:

    代码从 0x08000000h 位置运行。

    执行 STC 自检后执行内部 RAM 存储器测试。

    在检查内部 RAM 存储器自检是否完成时、会出现上述错误。

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

    测试代码如下所示:

    volatile uint32* const sys_regs = reinterpret_cast 0xFFFFFF00);
    volatile uint32* const pbist_regs = reinterpret_cast (0xFFFFFFE400);

    void main()

    //从 main 调用

    布尔 test_status=false;

    execute _pbist (0x30000000、0x00000004);//这将执行测试,配置如上一次答复中附加的快照所示

    while (!(is_test_complete());//等待测试完成  

    if ((!is_test_pached())||(!is_test_complete()))

      test_status = true;  

    返回;

    bool is_test_complete()

    返回((sys_regs[MSTCGSTAT]& 0x1UL)!= 0UL); //:MSTCGSTAT = 0x68

    bool is_test_pached()

    返回(0UL ==(pbist_regs[FSRF0]& 0x1UL);//FSRF0 = 0x190

    在上面突出显示的代码中、代码轮询测试完成。 调用  is_test_complete()并返回到 main()后,出现总线错误。  

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

    请注意、上述代码是我们要执行测试的代码的副本、并从0x08000000位置运行。

    此外、您能否告诉我如何在测试前保存上下文以及在测试后检索上下文。 任何实现上下文保存的代码都将对我们有所帮助。

    谢谢、

    Tirumala。

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

    当您在 MCU SRAM 上执行 PBIST 时、堆栈区域中的内容也将丢失。 这就是为什么在 HALCoGen 生成的 c_int00 ()中执行 SRAM pbist 测试的原因。

    我没有保存 SRAM 内容的示例代码。 有两个 SRAM 组:第29组和第30组。 您可以分别为这2个组运行 pbist 测试。 测试组1时、您可以将其内容保存到组2内存中。

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

    您能否为 L2RAMW 提供29和30组的内存范围? 此外、请提供 RDS 和 RGS 之间的关系以及 L2RAMW 的存储器范围。

    谢谢、

    Tirumala。

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

      [引用 userid="45190" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1027417/tms570lc4357-internal-ram-memory-test-in-tms570lc4357/3808182 #3808182]\n 有两个 SRAM 组:第29组和第30组。 您可以分别为这2个组运行 pbist 测试。 测试组1时、您可以将其内容保存到组2内存中。

      假设组29从 0x80000v (L2RAMW)开始、组30 (L2RAMW ECC)在 0x8040000开始、我已将内容从0x800000000复制到大小为0x3FFFF 的0x8040000。 然后在组29上运行 PBIST、但仍然遇到总线错误。 请确认这些范围是否与上述查询一起正确。

      [引用 userid="408981" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1027417/tms570lc4357-internal-ram-memory-test-in-tms570lc4357/3808574 #3808574)]您是否可以为 L2RAMW 提供29和30组的内存范围? 此外、请提供 RDS 和 RGS 之间的关系以及 L2RAMW 的存储器范围。

      - 作为另一个尝试,我尝试在 SDL 代码中_c_int00()的开头在两个组上执行 PBIST,如下所示:

      void _c_int00 (void)

      /*初始化内核寄存器以避免 CCM 错误*/
      SL_Init_R5Registers ();

      /*初始化堆栈指针*/
      sl_Init_StackPointers();

      /*启用 CPU 事件导出*/
      _sl_Init_EnableEventExport();

      /*初始化 RAM 内存*/
      SL_Init_Memory (RAMTYPE_RAM);

      /*对 RaAM 组29和30执行 BIST */
      SL_SelfTest_PBIST (PBIST_EXECUTE、0x30000000、PBISTALGO_MARCH13N_1端口);

      /*初始化 RAM 内存*/
      SL_Init_Memory (RAMTYPE_RAM);
      SL_PBIST_FailInfo failInfoPBISTOhers;
      while (true!= sl_SelfTest_Status_PBIST (&failInfoPBISTOthers));
      SL_SelfTest_PBIST_StopExec();
      SL_Init_R5Registers ();
      sl_Init_StackPointers();
      _sl_Init_EnableEventExport();

      //其余代码将根据 SDL 代码中给出的重置类型执行

      当尝试执行此操作时、代码停留在 while 循环中  

      while (MEM_HW_INIT_COMPLETE!= BF_GET (SL_systemREG1->MSTCGSTAT、BF_MINIDONE_START、BF_MINIDONE_LENGTH);

       在重新初始化期间在 sl_init.c 的 sl_Init_Memory (RAMTYPE_RAM)中。

      请确认是否正确执行了此操作或要进行任何修改。

      谢谢、

      Tirumala。

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

      您好、 Tirumala、

      如果在启动期间对 SRAM 执行 PBIST、则无需将 SRAM 内容保存到其他位置、因为它不包含任何有用的数据(刚刚初始化)。  

      如果您对 SRAM 执行定期 pbist 测试、则需要在开始测试之前保存 SRAM 内容。

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

      您好、Wang、

      [引用 userid="408981" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1027417/tms570lc4357-internal-ram-memory-test-in-tms570lc4357/3808574 #3808574)]您是否可以为 L2RAMW 提供29和30组的内存范围? 此外、请提供 RDS 和 RGS 之间的关系以及 L2RAMW 的存储器范围。

      您能回答上述问题吗?

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

      TRM 和数据表给出了相当清晰的定义。 RGS 是存储器组、从一个存储器地址到另一个存储器地址。 RDS 是 RAM 数据路径。 存储器组的宽度较宽、可分为多个 RDS。  PBIST 引擎将一次评估/比较数据路径的每个 RDS。

      我找不到组30的起始地址。 我想第29组和第30组的大小相同。 我稍后将编写一个测试用例进行检查、但需要一些时间。  

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

      我在上一篇帖子中的猜测是不对的。

      RAM 组29是 RAM 的第一个128KB (0x08000000 - 0x0801FFFF)、RAM 组30是 RAM 的下一个384KB (0x08020000 - 0x807FFFF)。