Features Supported
ECC BUS SAFETY module consists ECC Bus Safety Diagnostics.
BUS Safety Errors : This includes SEC , DED and RED error injection on the specified node
Note : SEC - Single Error Correction, DED - Double Error Correction, RED - Redundancy Error Correction
The module supports below API's for the application
- API to support and induce error on particular node bus.
- API to support interrupt configuration
SysConfig Features
Features NOT Supported
Important Usage Guidelines
Example Usage
The following shows an example of SDL ECC BUS SAFETY API usage by the application for Error Injection Tests.
Include the below file to access the APIs
Induce the error SEC in Interrupt Method for MSS Nodes
if(ret_val !=SDL_PASS )
{
ret_val = SDL_EFAIL;
}
else
{
{
SDL_ECC_BUS_SAFETY_MSS_getEDMAParameters(busSftyNode,&dmaCh, &tcc, ¶m, &queNum, &edmaNum );
test_edmaATransfer(busSftyNode,dmaCh,tcc,param,queNum,edmaNum );
}
{
setup_CPSW();
cpsw_transfer();
}
else
{
}
while((mssSecFlag!=TRUE) && (timeout!=0U))
{
timeout--;
}
if(mssSecFlag==TRUE)
{
mssSecFlag=FALSE;
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}
}
Induce the error DED in Interrupt Method for MSS Nodes
if(ret_val !=SDL_PASS )
{
ret_val = SDL_EFAIL;
}
else
{
{
SDL_ECC_BUS_SAFETY_MSS_getEDMAParameters(busSftyNode,&dmaCh, &tcc, ¶m, &queNum, &edmaNum );
test_edmaATransfer(busSftyNode,dmaCh,tcc,param,queNum,edmaNum );
}
{
setup_CPSW();
cpsw_transfer();
}
else
{
}
while((SDL_MSS_intrFlg[busSftyNode]!=TRUE) && (timeout!=0U))
{
timeout--;
}
if(SDL_MSS_intrFlg[busSftyNode]==TRUE)
{
SDL_MSS_intrFlg[busSftyNode]=FALSE;
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}
}
Induce the error RED in Interrupt Method for MSS Nodes
int32_t ret_val = SDL_EFAIL;
uint32_t timeout = SDL_ECC_BUS_SAFETY_TIMEOUT;
if(ret_val !=SDL_PASS )
{
ret_val = SDL_EFAIL;
}
else
{
while((SDL_MSS_intrFlg[busSftyNode]!=TRUE) && (timeout!=0U))
{
timeout--;
}
if(SDL_MSS_intrFlg[busSftyNode]==TRUE)
{
SDL_MSS_intrFlg[busSftyNode]=FALSE;
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}
}
Induce the error SEC in Polling Method for DSS Nodes
if(retval !=SDL_PASS )
{
retval = SDL_EFAIL;
}
else
{
while((status == 0U) && (timeout!=0U))
{
if(retval !=SDL_PASS )
{
timeout--;
}
else
{
break;
}
}
if(status!=0U)
{
retval = SDL_PASS;
}
else
{
retval = SDL_EFAIL;
}
}
Induce the error DED in Polling Method for DSS Nodes
if(retval !=SDL_PASS )
{
retval = SDL_EFAIL;
}
else
{
while((status == 0U) && (timeout!=0U))
{
if(retval !=SDL_PASS )
{
timeout--;
}
else
{
break;
}
}
if(status!=0U)
{
retval = SDL_PASS;
}
else
{
retval = SDL_EFAIL;
}
}
Induce the error RED in Polling Method for DSS Nodes
if(retval !=SDL_PASS )
{
retval = SDL_EFAIL;
}
else
{
while((status == 0U) && (timeout!=0U))
{
if(retval !=SDL_PASS )
{
timeout--;
}
else
{
break;
}
}
if(status!=0U)
{
retval = SDL_PASS;
}
else
{
retval = SDL_EFAIL;
}
}
Induce the error SEC in Interrupt Method for DSS Nodes
if(ret_val !=SDL_PASS )
{
ret_val = SDL_EFAIL;
}
else
{
{
SDL_ECC_BUS_SAFETY_DSS_getEDMAParameters(busSftyNode,&dmaCh, &tcc, ¶m, &queNum, &edmaNum );
test_edmaATransfer(busSftyNode, dmaCh,tcc,param,queNum,edmaNum );
}
else
{
}
while((dssSecFlag!=TRUE) && (timeout!=0U))
{
timeout--;
}
if(dssSecFlag==TRUE)
{
dssSecFlag=FALSE;
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}
}
Induce the error DED in Interrupt Method for DSS Nodes
if(ret_val !=SDL_PASS )
{
ret_val = SDL_EFAIL;
}
else
{
{
SDL_ECC_BUS_SAFETY_DSS_getEDMAParameters(busSftyNode,&dmaCh, &tcc, ¶m, &queNum, &edmaNum );
test_edmaATransfer(busSftyNode,dmaCh,tcc,param,queNum,edmaNum );
}
else
{
}
while((SDL_DSS_intrFlg[busSftyNode]!=TRUE) && (timeout!=0U))
{
timeout--;
}
if(SDL_DSS_intrFlg[busSftyNode]==TRUE)
{
SDL_DSS_intrFlg[busSftyNode]=FALSE;
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}
}
Induce the error RED in Interrupt Method for DSS Nodes
if(ret_val !=SDL_PASS )
{
ret_val = SDL_EFAIL;
}
else
{
while((SDL_DSS_intrFlg[busSftyNode]!=TRUE) && (timeout!=0U))
{
timeout--;
}
if(SDL_DSS_intrFlg[busSftyNode]==TRUE)
{
SDL_DSS_intrFlg[busSftyNode]=FALSE;
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}
}
API
APIs for SDL ECC BUS SAFETY