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.

[参考译文] TMS570LS3137:TMS570LS3137:pbistSelfCheck 方法详细信息

Guru**** 2595805 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/798340/tms570ls3137-tms570ls3137-pbistselfcheck-method-details

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

您好!

我们使用 HALCOGEN 生成的代码来使用 PBIST 控制器执行内置测试。 我可以看到以下有关 pbistSelfCheck()方法的注释。 我想知道 在函数 pbistSelfCheck()函数中使用的、但在 TRM 中没有列出的寄存器。 请您分享这些详细信息吗?

/**@fn void pbistSelfCheck (void)
*@简短 PBIST 自检驱动程序
*
*调用此函数以执行 PBIST 自检。
*
*@请注意、此函数使用的寄存器不会通过公开给用户
* TRM,运行自定义算法使 PBIST 失败。 用户可以将此功能用作黑盒。
*
*

谢谢、

Kalyan

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

    您好 Kalyan、

    HALCoGen 生成的 pbistSelfCheck() 使用自定义算法,该算法将使 PBIST 失败,以确保 PBIST 能够检测并指示内存自检故障。 保留寄存  器(pbistREG->rsvd1[1U]=1U;)用于运行自定义算法。 自定义算法由"pbistREG->rsvd1[1U]=1U"行上方的行定义   ;

    我们不希望客户写入"RSVD"寄存器、因为用户很可能会在自定义算法中出错、并进行器件存储器测试以产生错误结果。  

    您还可以通过简单地根据错误的算法选择错误的存储器来执行 pbist 自检。 也就是说、您可以选择单端口存储器并选择双端口测试算法(基本上不遵循数据表中的 PBIST RAM 分组表)。 我将为您修改代码作为参考。

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

    我修改了代码、可以得到预期的误差。

    /* PBIST 的 CPU 控制*/

    // pbistREG->DLR = 0x10U;

    /*自定义始终失败算法,这将不使用 ROM,只需设置失败*/

    /*

    pbistREG->RAMT = 0x00002000U;

    *(volatile UINT32 *) 0xFFFFFF400U = 0x4C000001U;

    *(volatile UINT32 *) 0xFFFFFF440U = 0x00000075U;

    *(volatile UINT32 *) 0xFFFFFF404U = 0x4C000002U;

    *(volatile UINT32 *) 0xFFFFFF444U = 0x00000075U;

    *(易失性 UINT32 *) 0xFFFFFF408U = 0x4C000003U;

    *(volatile UINT32 *) 0xFFFFFF448U = 0x00000075U;

    *(volatile UINT32 *) 0xFFFFFF40CU = 0x4C000004U;

    *(volatile UINT32 *) 0xFFFFFF44CU = 0x00000075U;

    *(volatile UINT32 *) 0xFFFFFF410U = 0x4C000005U;

    *(volatile UINT32 *) 0xFFFFFF450U = 0x00000075U;

    *(volatile UINT32 *) 0xFFFFFF414U = 0x4C000006U;

    *(volatile UINT32 *) 0xFFFFFF454U = 0x00000075U;

    *(易失性 UINT32 *) 0xFFFFFFE418U = 0x00000000U;

    *(volatile UINT32 *) 0xFFFFFF458U = 0x00000001U;

    *

    /* PBIST_RUN */

    // pbistREG->rsvd1[1U]=1U;

    /*选择要测试的所有算法*/

    pbistREG->algo = 0x00000002;//算法4.

    /*选择 RAM 组*/

    pbistREG->RINFOL = 0x1 <<(7-1);//MibSPI1 RAM

    /*选择所有 RAM 组*/

    pbistREG->RINFUU = 0x00000000U;

    /* ROM 内容不会覆盖 RINFox 设置*/

    pbistREG->over = 0x0U;

    /*算法代码从 ROM 加载*/

    pbistREG->ROM = 0x3U;

    /*启动 PBIST */

    pbistREG->DLR = 0x14U;

    代码使用算法#2 (TRIPLE_READ_FAST_READ)来测试 MibSPI1 RAM。 算法#2专为 ROM 设计。