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.

CCS/TMS570LS0432: Start self test failed

Part Number: TMS570LS0432

Tool/software: Code Composer Studio

Hello

  CPU start up Test failed in this code,I use 2.4.0

SL_SelfTest_Status_PBIST(&failInfoPBISTSRAM);

boolean SL_SelfTest_Status_PBIST(SL_PBIST_FailInfo* param1)
{
boolean retVal = FALSE;
boolean tmp;
#if (FUNCTION_PARAM_CHECK_ENABLED !=0)
/*LDRA_INSPECTWINDOW 50 */
/*SAFETYMCUSW 439 S MR:11.3 <APPROVED> Comment_4*/
/*SAFETYMCUSW 439 S MR:11.3 <APPROVED> Comment_4*/
if (FALSE == CHECK_RANGE_RAM_PTR(param1)) {
#if (FUNC_PARAM_CHECK_LOG_ENABLED !=0)
SL_Log_Error(FUNC_ID_ST_PBIST_STATUS, ERR_TYPE_PARAM, 0u);
#endif
return retVal;
}
#endif

#if (FUNC_ENTRY_COND_CHECK_ENABLED != 0)
/*check for priveleged mode*/
if (ARM_MODE_USR == _SL_Get_ARM_Mode()) {
#if (FUNC_ENTRY_COND_CHECK_LOG_ENABLED !=0)
SL_Log_Error(FUNC_ID_ST_PBIST_STATUS, ERR_TYPE_ENTRY_CON, 0u);
#endif
return retVal;
}
#endif
/*SAFETYMCUSW 440 S MR: 11.3 <APPROVED> Comment_18*/
/*SAFETYMCUSW 134 S MR: 12.2 <APPROVED> Comment_5*/
if ((sl_systemREG1->MSTCGSTAT & 0x1u) == 0x0u)
{
return retVal;
}
else
{
/*SAFETYMCUSW 440 S MR: 11.3 <APPROVED> Comment_18*/
/*SAFETYMCUSW 440 S MR: 11.3 <APPROVED> Comment_18*/
/*SAFETYMCUSW 408 S MR:12.4 <APPROVED> Comment_12*/
/*SAFETYMCUSW 134 S MR: 12.2 <APPROVED> Comment_5*/
/*SAFETYMCUSW 134 S MR: 12.2 <APPROVED> Comment_5*/
if ((sl_pbistREG->FSRF0 == (uint32)0u) && (sl_pbistREG->FSRF1 == (uint32)0u)) {
/* Return PASS*/
param1->stResult = ST_PASS;
param1->port0FailCount = 0u;
param1->port1FailCount = 0u;
param1->port0FailAddress = 0u;
param1->port1FailAddress = 0u;
param1->port0FailData = 0u;
param1->port1FailData = 0u;
} else {
/* Store the failure data in OUT params */
param1->stResult = ST_FAIL;
/*SAFETYMCUSW 440 S MR: 11.3 <APPROVED> Comment_18*/
/*SAFETYMCUSW 439 S MR: 11.3 <APPROVED> "The base address of the peripheral registers are actually macros" */
/*SAFETYMCUSW 134 S MR: 12.2 <APPROVED> Comment_5*/
param1->port0FailCount = (uint8) (sl_pbistREG->FSRC0 & 0xFFu);
/*SAFETYMCUSW 440 S MR: 11.3 <APPROVED> Comment_18*/
/*SAFETYMCUSW 134 S MR: 12.2 <APPROVED> Comment_5*/
param1->port1FailCount = (uint8) (sl_pbistREG->FSRC1 & 0xFFu);
/*SAFETYMCUSW 440 S MR: 11.3 <APPROVED> Comment_18*/
/*SAFETYMCUSW 134 S MR: 12.2 <APPROVED> Comment_5*/
param1->port0FailAddress = (uint16) (sl_pbistREG->FSRA0 & 0xFFFFu);
/*SAFETYMCUSW 440 S MR: 11.3 <APPROVED> Comment_18*/
/*SAFETYMCUSW 134 S MR: 12.2 <APPROVED> Comment_5*/
param1->port1FailAddress = (uint16) (sl_pbistREG->FSRA1 & 0xFFFFu);
/*SAFETYMCUSW 440 S MR: 11.3 <APPROVED> Comment_18*/
param1->port0FailData = sl_pbistREG->FSRDL0;
/*SAFETYMCUSW 440 S MR: 11.3 <APPROVED> Comment_18*/
param1->port1FailData = sl_pbistREG->FSRDL1;
}
/* Stop the PBIST - storing retval in tmp to avoid misra-c violation */
tmp = SL_SelfTest_PBIST_StopExec();

tmp = tmp; /* to avoid compiler warning */

#if(FUNC_RESULT_LOG_ENABLED == 1)
/*SAFETYMCUSW 440 S MR: 11.3 <APPROVED> Comment_18*/
SL_Log_Result(FUNC_ID_ST_PBIST_STATUS, (SL_SelfTestType)0, param1->stResult, 0u);
#endif
}
retVal = TRUE;
return retVal;
}

I want to know How to set a breakpoint in start up“ void _c_int00(void)”

  • Hello

    I reorganized it again

    In start test

    When run this

    retVal = SL_SelfTest_PBIST( PBIST_EXECUTE, /* Execute PBIST test */
    (PBIST_RAMGROUP_06_ESRAM1 | PBIST_RAMGROUP_21_ESRAM5 | /* On all TCM RAMs */
    PBIST_RAMGROUP_22_ESRAM6),
    PBISTALGO_MARCH13N_RED_1PORT);
    while (TRUE != SL_SelfTest_WaitCompletion_PBIST());

    SL_SelfTest_Status_PBIST(&failInfoPBISTSRAM);
    if (failInfoPBISTSRAM.stResult == ST_PASS) {
    initSTPassCount++;
    }
    else
    {
    initSTFailCount++;
    for(;;)
    {
    FailSafeFun(FSD_CPUSTARTUP_SELFTEST_ERROR);
    }/* Wait */
    }

    When SL_SelfTest_Status_PBIST(&failInfoPBISTSRAM);

    failInfoPBISTSRAM.stResult != ST_PASS

    and 

    the func SL_SelfTest_Status_PBIST

    if ((sl_pbistREG->FSRF0 == (uint32)0u) && (sl_pbistREG->FSRF1 == (uint32)0u)) {
    /* Return PASS*/
    param1->stResult = ST_PASS;
    param1->port0FailCount = 0u;
    param1->port1FailCount = 0u;
    param1->port0FailAddress = 0u;
    param1->port1FailAddress = 0u;
    param1->port0FailData = 0u;
    param1->port1FailData = 0u;
    } else {
    /* Store the failure data in OUT params */
    param1->stResult = ST_FAIL;

     

    why?this is faulse

    if ((sl_pbistREG->FSRF0 == (uint32)0u) && (sl_pbistREG->FSRF1 == (uint32)0u))

     

  • Hi Whong,

    TMS570LS0432 and RM42x don't have PBIST memory group 5, 21, 22 for RAM. The only PBIST group for RAM is group 6.

    BTW, the content of RAM will be completely lost if you perform the PBIST on RAM. Your SW must take care of the data backup.  

  • Thank you 

     I PBIST Test when cpu startup. 

    you means 

    this code 

    change   to  

    retVal = SL_SelfTest_PBIST( PBIST_EXECUTE, /* Execute PBIST test */
    (PBIST_RAMGROUP_06_ESRAM1 ),
    PBISTALGO_MARCH13N_RED_1PORT);

    This position is resolved  .where is this information in some paper.

    This code is right??

    retVal = SL_SelfTest_PBIST( PBIST_EXECUTE,
    (PBIST_RAMGROUP_07_MIBSPI1 |
    PBIST_RAMGROUP_08_MIBSPI3 |
    PBIST_RAMGROUP_09_MIBSPI5 |
    PBIST_RAMGROUP_10_VIM |
    PBIST_RAMGROUP_11_MIBADC1 |
    PBIST_RAMGROUP_18_MIBADC2),
    PBISTALGO_MARCH13N_RED_2PORT);

    //

    retVal = SL_SelfTest_PBIST( PBIST_EXECUTE,
    (PBIST_RAMGROUP_17_FRAY |
    PBIST_RAMGROUP_25_ETHERNET3),
    PBISTALGO_MARCH13N_RED_1PORT);

     

  • For TMS570LS0432, the PBIST memory groups are listed in Table 6-22 in datasheet

    RAM is PBIST RAM group 6