AM273x MCU+ SDK  08.05.00
DSS_L3

Features Supported

DSS L3 module consists ECC Bus Safety Diagnostics.

  • BUS Safety Errors : This includes SEC , DED and RED error injection on DSS L3 BANK A, BANK B, BANK C and BANK D

    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 DSS L3 BUS.
  • API to support interrupt configuration

SysConfig Features

  • None

Features NOT Supported

  • None

Important Usage Guidelines

  • None

Example Usage

The following shows an example of SDL DSS L3 API usage by the application for Error Injection Tests.

Include the below file to access the APIs

#include <sdl/sdl_adcbuf.h>

Induce the error SEC in DSS L3 Bank A

/* wait for error notification from ESM, or for timeout */
/* fault injection gets deasserted in ISR */
while((SDL_DSS_L3_BankA_secErrorStatus()!=1U) && (timeout!=0U));
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error DED in DSS L3 Bank A

/* wait for error notification from ESM, or for timeout */
/* fault injection gets deasserted in ISR */
while((SDL_DSS_L3_BankA_dedErrorStatus()!=1U) && (timeout!=0U));
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error RED in DSS L3 Bank A

if(ret_val == SDL_PASS )
{
/* Wait for test to complete/timeout. */
while((SDL_DSS_L3_BankA_redErrorStatus()!=1U) && (timeout!=0U));
/* Check for the failure. */
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error SEC in DSS L3 Bank B

/* wait for error notification from ESM, or for timeout */
/* fault injection gets deasserted in ISR */
while((SDL_DSS_L3_BankB_secErrorStatus()!=1U) && (timeout!=0U));
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error DED in DSS L3 Bank B

/* wait for error notification from ESM, or for timeout */
/* fault injection gets deasserted in ISR */
while((SDL_DSS_L3_BankB_dedErrorStatus()!=1U) && (timeout!=0U));
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error RED in DSS L3 Bank B

if(ret_val == SDL_PASS )
{
/* Wait for test to complete/timeout. */
while((SDL_DSS_L3_BankB_redErrorStatus()!=1U) && (timeout!=0U));
/* Check for the failure. */
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error SEC in DSS L3 Bank C

/* wait for error notification from ESM, or for timeout */
/* fault injection gets deasserted in ISR */
while((SDL_DSS_L3_BankC_secErrorStatus()!=1U) && (timeout!=0U));
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error DED in DSS L3 Bank C

/* wait for error notification from ESM, or for timeout */
/* fault injection gets deasserted in ISR */
while((SDL_DSS_L3_BankC_dedErrorStatus()!=1U) && (timeout!=0U));
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error RED in DSS L3 Bank C

if(ret_val == SDL_PASS )
{
/* Wait for test to complete/timeout. */
while((SDL_DSS_L3_BankC_redErrorStatus()!=1U) && (timeout!=0U));
/* Check for the failure. */
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error SEC in DSS L3 Bank D

uint32_t timeout = SDL_DSS_L3_ECC_TIMEOUT;
/* wait for error notification from ESM, or for timeout */
/* fault injection gets deasserted in ISR */
while((SDL_DSS_L3_BankD_secErrorStatus()!=1U) && (timeout!=0U));
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error DED in DSS L3 Bank D

/* wait for error notification from ESM, or for timeout */
/* fault injection gets deasserted in ISR */
while((SDL_DSS_L3_BankD_dedErrorStatus()!=1U) && (timeout!=0U));
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}

Induce the error RED in DSS L3 Bank D

if(ret_val == SDL_PASS )
{
/* Wait for test to complete/timeout. */
while((SDL_DSS_L3_BankD_redErrorStatus()!=1U) && (timeout!=0U));
/* Check for the failure. */
{
ret_val = SDL_PASS;
}
else
{
ret_val = SDL_EFAIL;
}
}
else
{
ret_val = SDL_EFAIL;
}

API

APIs for SDL DSS_L3

SDL_DSS_L3_BankA_dedErrorStatus
uint32_t SDL_DSS_L3_BankA_dedErrorStatus(void)
This API is used to get DED error status from Bank A.
SDL_DSS_L3_BANKC_secExecute
void SDL_DSS_L3_BANKC_secExecute(void)
This API is used for SEC test on DSS L3 Bank C.
SDL_DSS_L3_BankA_dedErrorClear
void SDL_DSS_L3_BankA_dedErrorClear(void)
This API is used to clear DED error from Bank A.
SDL_DSS_L3_BANKA_secExecute
void SDL_DSS_L3_BANKA_secExecute(void)
This API is used for SEC test on DSS L3 Bank A.
SDL_DSS_L3_BankC_dedErrorClear
void SDL_DSS_L3_BankC_dedErrorClear(void)
This API is used to clear DED error from Bank C.
SDL_DSS_L3_BankB_redErrorClear
void SDL_DSS_L3_BankB_redErrorClear(void)
This API is used to clear RED error from Bank B.
SDL_DSS_L3_BankC_secErrorStatus
uint32_t SDL_DSS_L3_BankC_secErrorStatus(void)
This API is used to get SEC error status from Bank C.
SDL_DSS_L3_BankD_dedErrorStatus
uint32_t SDL_DSS_L3_BankD_dedErrorStatus(void)
This API is used to get DED error status from Bank D.
SDL_DSS_L3_FI_GLOBAL_SAFE
@ SDL_DSS_L3_FI_GLOBAL_SAFE
Definition: dss_l3/v0/sdl_dss_l3.h:85
SDL_DSS_L3_BANKA_redExecute
int32_t SDL_DSS_L3_BANKA_redExecute(SDL_DSS_L3_busSftyFiType fiType, SDL_DSS_L3_busSftyFiRedType redType)
This API is used for RED test on DSS L3 Bank A.
SDL_DSS_L3_BankD_redErrorClear
void SDL_DSS_L3_BankD_redErrorClear(void)
This API is used to clear RED error from Bank D.
SDL_DSS_L3_BankB_dedErrorStatus
uint32_t SDL_DSS_L3_BankB_dedErrorStatus(void)
This API is used to get DED error status from Bank B.
SDL_DSS_L3_BankB_redErrorStatus
uint32_t SDL_DSS_L3_BankB_redErrorStatus(void)
This API is used to get RED error status from Bank B.
SDL_DSS_L3_BankC_redErrorClear
void SDL_DSS_L3_BankC_redErrorClear(void)
This API is used to clear RED error from Bank C.
SDL_DSS_L3_BankD_dedErrorClear
void SDL_DSS_L3_BankD_dedErrorClear(void)
This API is used to clear DED error from Bank D.
SDL_DSS_L3_BankB_secErrorClear
void SDL_DSS_L3_BankB_secErrorClear(void)
SDL_DSS_L3_BANKC_dedExecute
void SDL_DSS_L3_BANKC_dedExecute(void)
This API is used for DED test on DSS L3 Bank C.
SDL_DSS_L3_BANKC_redExecute
int32_t SDL_DSS_L3_BANKC_redExecute(SDL_DSS_L3_busSftyFiType fiType, SDL_DSS_L3_busSftyFiRedType redType)
This API is used for RED test on DSS L3 Bank C.
SDL_DSS_L3_BANKB_dedExecute
void SDL_DSS_L3_BANKB_dedExecute(void)
This API is used for DED test on DSS L3 Bank B.
SDL_DSS_L3_BANKD_dedExecute
void SDL_DSS_L3_BANKD_dedExecute(void)
This API is used for DED test on DSS L3 Bank D.
SDL_DSS_L3_BankC_dedErrorStatus
uint32_t SDL_DSS_L3_BankC_dedErrorStatus(void)
This API is used to get DED error status from Bank C.
SDL_DSS_L3_BankD_secErrorClear
void SDL_DSS_L3_BankD_secErrorClear(void)
This API is used to clear SEC error from DSS L3 Bank D.
SDL_DSS_L3_BANKB_secExecute
void SDL_DSS_L3_BANKB_secExecute(void)
This API is used for SEC test on DSS L3 Bank B.
SDL_DSS_L3_BankA_secErrorStatus
uint32_t SDL_DSS_L3_BankA_secErrorStatus(void)
This API is used to get SEC error status from Bank A.
SDL_DSS_L3_BankA_redErrorClear
void SDL_DSS_L3_BankA_redErrorClear(void)
This API is used to clear RED error from Bank A.
SDL_DSS_L3_BANKA_dedExecute
void SDL_DSS_L3_BANKA_dedExecute(void)
This API is used for DED test on DSS L3 Bank A.
SDL_DSS_L3_BankA_redErrorStatus
uint32_t SDL_DSS_L3_BankA_redErrorStatus(void)
This API is used to get RED error status from Bank A.
SDL_DSS_L3_BankC_redErrorStatus
uint32_t SDL_DSS_L3_BankC_redErrorStatus(void)
This API is used to get RED error status from Bank C.
SDL_DSS_L3_BankA_secErrorClear
void SDL_DSS_L3_BankA_secErrorClear(void)
This API is used to clear SEC error from DSS_L3 Bank A.
SDL_DSS_L3_BankC_secErrorClear
void SDL_DSS_L3_BankC_secErrorClear(void)
This API is used to clear SEC error from DSS L3 Bank C.
SDL_DSS_L3_BankB_dedErrorClear
void SDL_DSS_L3_BankB_dedErrorClear(void)
This API is used to clear DED error from Bank B.
SDL_DSS_L3_BANKD_secExecute
void SDL_DSS_L3_BANKD_secExecute(void)
This API is used for SEC test on DSS L3 Bank D.
SDL_DSS_L3_BankD_secErrorStatus
uint32_t SDL_DSS_L3_BankD_secErrorStatus(void)
This API is used to get SEC error status from Bank D.
SDL_DSS_L3_BANKD_redExecute
int32_t SDL_DSS_L3_BANKD_redExecute(SDL_DSS_L3_busSftyFiType fiType, SDL_DSS_L3_busSftyFiRedType redType)
This API is used for RED test on DSS L3 Bank D.
SDL_DSS_L3_MAIN_CMD_INTERFACE
@ SDL_DSS_L3_MAIN_CMD_INTERFACE
Definition: dss_l3/v0/sdl_dss_l3.h:91
SDL_DSS_L3_BankB_secErrorStatus
uint32_t SDL_DSS_L3_BankB_secErrorStatus(void)
This API is used to get SEC error status from Bank B.
SDL_DSS_L3_BANKB_redExecute
int32_t SDL_DSS_L3_BANKB_redExecute(SDL_DSS_L3_busSftyFiType fiType, SDL_DSS_L3_busSftyFiRedType redType)
This API is used for RED test on DSS L3 Bank B.
SDL_DSS_L3_BankD_redErrorStatus
uint32_t SDL_DSS_L3_BankD_redErrorStatus(void)
This API is used to get RED error status from Bank D.