Other Parts Discussed in Thread: TMS570LS3137
PBIST self test is taking longer time to execute.
Once it complete it is giving PBIST is passed but my software is going in to endless loop.
Initially I exacted PBIST for 5 RAM group but it is leading to DET or endless loop.
When I comment out 3 RAM group and run it for 2 my software start working.
Do you know any reason for this behavior of software.
When I comment out PBIST itself my software is working properly.
Please find code implementation with TI SafetyLib Library function for PBIST self test below.
boolean SelfTest_PBIST(void)
{
boolean retVal;
if(SELFTEST_EN == UCPrphSlfTst_bEnDs_p)
{
retVal = SL_SelfTest_PBIST( PBIST_EXECUTE,(/*PBIST_RAMGROUP_13_N2HET1 | PBIST_RAMGROUP_14_HETTU1 | PBIST_RAMGROUP_10_VIM |*/
PBIST_RAMGROUP_19_N2HET2 | PBIST_RAMGROUP_20_HETTU2),PBISTALGO_MARCH13N_RED_2PORT);
while (FALSE == SL_SelfTest_Status_PBIST(&pbistStatus))
{
PBIST_Inc++;
PBIST_ST_State = ST_InProgress;
if(PBIST_Inc > PBIST_TIMEOUT)
{
PBIST_ST_State = ST_Timeout;
break;
}
}
if(TRUE == retVal)
{
retVal = SL_SelfTest_PBIST_StopExec();
}
if((TRUE == retVal) && (ST_PASS == (pbistStatus.stResult)))
{
/*Do nothing*/
}
else if(ST_FAIL == (pbistStatus.stResult))
{
SlfTest_Result.SL_PBIST = SELFTEST_FAIL;
//Safe state 5 need to update if failure of selftest
IL_BMS_SET_SAFESTAE5(SlfTest_Result.SL_PBIST);
}
else
{
/*Do Nothing*/
}
if(PBIST_ST_State == ST_Timeout)
{
/*Do Nothing*/
}
else
{
PBIST_ST_State = ST_Complete;
}
return retVal;
}
else
{
/*Do Nothing*/
}
}
