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 控制器的 halcogen 工具中进行配置、以便在所有 RAM 组上运行自检

Guru**** 2466550 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/1169003/tms570lc4357-configuration-in-halcogen-tool-in-of-pbist-controller-to-run-self-test-on-all-ram-groups

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

大家好、

我需要执行  "可编程内置自检"、在 halcogen 工具中完成的配置是什么、任何示例参考 代码都是好的。

谢谢、此致

Srinivasa k

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

    您好 Srinivasa、

    您可以在以下路径中安装 SafeTI 诊断库

    SAFETI_DIAG_LIB 驱动程序或库|德州仪器 TI.com

    在此库中、您可以找到一个名为"sl_selftest.c"的文件、此文件包含不同的诊断函数例程。

    在此文件中、函数"sl_SelfTest_PBIST"执行 PBIST、在这里、通过传递不同的 RAM 组地址、您可以执行不同的 RAM 组 PBIST 测试。

    您可以在此处参阅以下主题并使用 QJ 共享的代码:

    (4) RM57L843:为 March13N 单端口算法启用 PBIST 测试-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --
    谢谢、此致、
    Jagadish。

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

    void PBIST_SelfTest (uint32 raminfoH、uint32 raminfoL、uint32 algomask)

    易失性 uint32 i = 0U;

    /* PBIST ROM 时钟频率= HCLK 频率/2 */
    /*禁用内存自控制器*/
    systemREG1->MSTGCR = 0x00000105U;

    /*禁用内存初始化控制器*/
    systemREG1->MINITGCR = 0x5U;

    /*启用 PBIST 控制器*/
    systemREG1->MSINENA=0x1U;

    /*启用内存自控制器*/
    systemREG1->MSTGCR = 0x0000010AU;

    /*根据 GCLK 与 VCLK 的比率至少等待64个 VBUS 时钟周期*/
    对于(i=0U;i<(32U +(32U * 1U));i++){//等待*/}

    /*用户代码开始(18)*/
    /*用户代码结束*/

    /*启用 PBIST 时钟和 ROM 时钟*/
    pbistREG->PACT = 0x1U;

    /*选择要测试的所有算法*/
    pbistREG->algo = algomask;

    /*选择 RAM 组*/
    pbistREG->RINFOL = raminfoL;

    /*选择所有 RAM 组*/
    pbistREG->RINFUU = raminfoH;

    /* ROM 内容不会覆盖 RINFox 设置*/
    pbistREG->over = 0x0U;

    /*算法代码从 ROM 加载*/
    pbistREG->ROM = 0x3U;

    /*启动 PBIST */
    pbistREG->DLR = 0x14U;

    void pbistStop (void)

    /*用户代码开始(20)*/
    /*用户代码结束*/
    /*禁用 pbist 时钟和 ROM 时钟*/
    pbistREG->PACT = 0x0U;
    systemREG1->MSTGCR &= 0xFFFFFFF0U;
    systemREG1->MSTGCR |= 0x5U;
    /*用户代码开始(21)*/
    /*用户代码结束*/

    符合布尔 pbistIsTested (void)

    /*用户代码开始(22)*/
    /*用户代码结束*/

    返回((systemREG1->MSTCGSTAT & 0x1U)!= 0U);
    /*用户代码开始(23)*/
    /*用户代码结束*/


    布尔 pbistIsTestPassed (空)

    /*用户代码开始(24)*/
    /*用户代码结束*/
    布尔状态;

    如果((pbistREG->FSRF0 == 0U)&&(pbistREG->FSRF0 == 0U))

    状态= true;

    其他

    状态= false;

    QJ 代码,我应该用于此代码 PBIST 以进行自检。

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

    您好 Srinivasa、

    [引用 userid="542806" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1169003/tms570lc4357-configuration-in-halcogen-tool-in-of-pbist-controller-to-run-self-test-on-all-ram-groups/4398139 #4398139"]我是否应使用此代码 PBIST 进行自检。

    是的、您可以使用该代码。

    --
    谢谢、此致、
    Jagadish。

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

    #define PBISTALGO_MARCH13N_2PORT 0x00000134

    #define PBIST_RAMGROUP_10_MIBSPI1 0x0000000200u /**<*
    #define PBIST_RAMGROUP_11_MIBSPI2 0x0000000400u /**<*
    #define PBIST_RAMGROUP_12_MIBSPI3 0x0000000800u /**<*


    int main (空)

    int retval;
    /*用户代码开始(3)*/
    /*用户代码结束*/


    PBIST_SelfTest (PBIST_RAMGROUP_10_MIBSPI1、PBISTALGO_MARCH13N_2PORT);
    while (true != pbistIsTestCompled();
    RetVal = pbistIsTestPassed();
    if (retval = 1)

    pbistStop();

    void PBIST_SelfTest (uint32 raminfoL、uint32 algomask)

    易失性 uint32 i = 0U;

    /* PBIST ROM 时钟频率= HCLK 频率/2 */
    /*禁用内存自控制器*/
    systemREG1->MSTGCR = 0x00000205U;

    /*禁用内存初始化控制器*/
    systemREG1->MINITGCR = 0x5U;

    /*启用 PBIST 控制器*/
    systemREG1->MSINENA=0x1U;

    /*启用内存自控制器*/
    systemREG1->MSTGCR = 0x0000020AU;

    /*根据 GCLK 与 VCLK 的比率至少等待64个 VBUS 时钟周期*/
    对于(i=0U;i<(32U +(32U * 1U));i++){//等待*/}

    /*用户代码开始(18)*/
    /*用户代码结束*/

    /*启用 PBIST 时钟和 ROM 时钟*/
    pbistREG->PACT = 0x1U;

    /*选择要测试的所有算法*/
    pbistREG->algo = algomask;

    /*选择 RAM 组*/
    pbistREG->RINFOL = raminfoL;

    /*选择所有 RAM 组*/
    pbistREG->RINFUU = 0x00000000;

    /* ROM 内容不会覆盖 RINFox 设置*/
    pbistREG->over = 0x0U;

    /*算法代码从 ROM 加载*/
    pbistREG->ROM = 0x3U;

    /*启动 PBIST */
    pbistREG->DLR = 0x14U;

    void pbistStop (void)

    /*用户代码开始(20)*/
    /*用户代码结束*/
    /*禁用 pbist 时钟和 ROM 时钟*/
    pbistREG->PACT = 0x0U;
    systemREG1->MSTGCR &= 0xFFFFFFF0U;
    systemREG1->MSTGCR |= 0x5U;
    /*用户代码开始(21)*/
    /*用户代码结束*/

    符合 int pbistIsTested (空)

    /*用户代码开始(22)*/
    /*用户代码结束*/

    返回((systemREG1->MSTCGSTAT & 0x1U)!= 0U);
    /*用户代码开始(23)*/
    /*用户代码结束*/


    int pbistIsTestPassed (空)

    /*用户代码开始(24)*/
    /*用户代码结束*/
    INT 状态;

    如果((pbistREG->FSRF0 == 0U)&&(pbistREG->FSRF0 == 0U))

    状态= true;

    其他

    状态= false;

    /*用户代码开始(4)*/
    /*用户代码结束*/

    我的评估 板是 TMS570LC43X

    我的 PBIST 代码不起作用、您可以就此为我提供帮助。

    谢谢、此致

    Srinivasa k

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

    您好 Srinivasa、

    您的代码不正确、您传递到 PBIST_SelfTest 函数的参数是错误的。

    您想要测试 MibSPI1、MibSPI2和 MibSPI3 RAM 存储器、所以首先识别它们的 RAM 组编号

    他们属于第10、11和12组  

    这些 RAM 组将 进入值0x00000004的 march13N 算法

    注意到上述情况后、将 RAM 组写入 RINFOL 寄存器、因为这些值小于32

    并将你的算法值写入算法寄存器  

    您的代码应如下所示

    我正在附加我在我的末尾测试的项目、请参考并测试它。

    e2e.ti.com/.../PBIST_5F00_TEST_5F00_LC43.zip

    --
    谢谢、此致、
    Jagadish。

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

    我选择的 RAM 组 与您的组相同、但当我发送代码时、我出错了、谢谢先生。

    谢谢、此致

    Srinivasa k