📄 inth2.c
字号:
//
// PARAMETERS : None
//
// RETURN VALUE : None
//
// LIMITATIONS : Result must be initialized
//#####################################################################
BOOL INTH2_GetAndTestResetLev2Inth(void)
{
UWORD16 index=0;
UWORD16 logresult=TEST_OK;
UWORD16 i;
UWORD16 TempArray[11];
UWORD32 TempReg;
UWORD32 ErrorIndex=0;
UWORD32 TempReg2;
volatile UWORD32* PtLevelReg;
TempReg=REG32(LEV2_INTH_IT_REG_SUPERVISOR_ADDR);
TempArray[0]=(UWORD16)TempReg;
TempArray[1]=(UWORD16)(TempReg>>16);
if (TempReg!=LEV2_INTH_IT_REG_RESET_VALUE)
{
logresult=LEV2_INTH_WRONG_RESET_VALUE;
ErrorIndex|=0x1;
}
TempReg=REG32(LEV2_INTH_MASK_IT_REG_USER_ADDR);
TempArray[2]=(UWORD16)TempReg;
TempArray[3]=(UWORD16)(TempReg>>16);
if (TempReg!=LEV2_INTH_MASK_IT_REG_RESET_VALUE)
{
logresult=LEV2_INTH_WRONG_RESET_VALUE;
ErrorIndex|=0x2;
}
TempReg=REG32(LEV2_INTH_SOURCE_BIN_IRQ_REG_ADDR)&LEV2_INTH_SOURCE_BIN_IRQ_MASK;
TempArray[4]=(UWORD16)TempReg;
TempArray[5]=(UWORD16)(TempReg>>16);
if (TempReg!=LEV2_INTH_SOURCE_BIN_IRQ_RESET_VALUE)
{
logresult=LEV2_INTH_WRONG_RESET_VALUE;
ErrorIndex|=0x4;
}
TempReg=REG32(LEV2_INTH_SOURCE_BIN_FIQ_REG_ADDR)&LEV2_INTH_SOURCE_BIN_FIQ_MASK;
TempArray[6]=(UWORD16)TempReg;
TempArray[7]=(UWORD16)(TempReg>>16);
if (TempReg!=LEV2_INTH_SOURCE_BIN_FIQ_RESET_VALUE)
{
logresult=LEV2_INTH_WRONG_RESET_VALUE;
ErrorIndex|=0x8;
}
TempReg=REG32(LEV2_INTH_CTRL_REG_USER_ADDR)&LEV2_INTH_CTRL_MASK;
TempArray[8]=(UWORD16)TempReg;
TempArray[9]=(UWORD16)(TempReg>>16);
if (TempReg!=LEV2_INTH_CTRL_RESET_VALUE)
{
logresult=LEV2_INTH_WRONG_RESET_VALUE;
ErrorIndex|=0x10;
}
for(i=0;i<19;i++)// Test only the external interrupts ILR
{
PtLevelReg = (UWORD32*)LEV2_INTH_IT_LEVEL_REG_SUPERVISOR_ADDR + i;
TempReg=(*PtLevelReg)&LEV2_INTH_IT_LEVEL_MASK;
if (TempReg!=LEV2_INTH_IT_LEVEL_RESET_VALUE)
{
logresult=LEV2_INTH_WRONG_RESET_VALUE;
ErrorIndex|=0x1<<(i+5);
}
}
TempArray[10]=(UWORD16)TempReg;
TempArray[11]=(UWORD16)(TempReg>>16);
RES_Set(RESULT_SEPARATOR);
RES_Set(START_ARRAY_DATA);
for (index = 0 ; index < 12 ; index++)
RES_Set(TempArray[index]);
RES_Set(ErrorIndex);
RES_Set(END_ARRAY_DATA);
RES_Set(logresult);
}
//#####################################################################
// NAME : INTH2_TestResetValues
//
// DESCRIPTION : Call all the test and reset functions
//
// PARAMETERS : None
//
// RETURN VALUE : None
//
// LIMITATIONS : None
//#####################################################################
void INTH2_TestResetValues(void)
{
INTH_GetAndTestResetInth();
INTH2_GetAndTestResetLev2Inth();
}
void INTH2_TestResetValue(void)
{
int ITNumber;
TEST_REGISTER_RESET_VALUE32(LEV2_INTH_IT_REG);
TEST_REGISTER_RESET_VALUE32(LEV2_INTH_MASK_IT_REG);
for(ITNumber=0; ITNumber<32; ITNumber++)
{
if(GetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_FIQ_POS),
(LEV2_INTH_LEVEL_FIQ_NUMB))!=
(LEV2_INTH_LEVEL_FIQ_RES_VAL))
{
RES_Set(LEV2_INTH_LEVEL_FIQ_BAD_RESET_VALUE);
RES_Set(DATA_STORE);
RES_Set(ITNumber);
}
if(GetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_SENSEDGE_POS),
(LEV2_INTH_LEVEL_SENSEDGE_NUMB))!=
(LEV2_INTH_LEVEL_SENSEDGE_RES_VAL))
{
RES_Set(LEV2_INTH_LEVEL_SENSEDGE_BAD_RESET_VALUE);
RES_Set(DATA_STORE);
RES_Set(ITNumber);
}
if(GetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_PRIORITY_POS),
(LEV2_INTH_LEVEL_PRIORITY_NUMB))!=
(LEV2_INTH_LEVEL_PRIORITY_RES_VAL))
{
RES_Set(LEV2_INTH_LEVEL_PRIORITY_BAD_RESET_VALUE);
RES_Set(DATA_STORE);
RES_Set(ITNumber);
}
}
/*TEST_FIELD_RESET_VALUE32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR,
LEV2_INTH_LEVEL_FIQ);
TEST_FIELD_RESET_VALUE32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR,
LEV2_INTH_LEVEL_SENSEDGE);
TEST_FIELD_RESET_VALUE32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR,
LEV2_INTH_LEVEL_PRIORITY);*/
TEST_REGISTER_RESET_VALUE32(LEV2_INTH_SOURCE_IRQ_REG);
TEST_REGISTER_RESET_VALUE32(LEV2_INTH_SOURCE_FIQ_REG);
TEST_FIELD_RESET_VALUE32(LEV2_INTH_SOURCE_BIN_IRQ_REG_ADDR,
LEV2_INTH_SOURCE_BIN_IRQNUM);
TEST_FIELD_RESET_VALUE32(LEV2_INTH_SOURCE_BIN_FIQ_REG_ADDR,
LEV2_INTH_SOURCE_BIN_FIQNUM);
TEST_FIELD_RESET_VALUE32(LEV2_INTH_CTRL_REG_USER_ADDR,
LEV2_INTH_CTRL_NEWIRQAGR);
TEST_FIELD_RESET_VALUE32(LEV2_INTH_CTRL_REG_USER_ADDR,
LEV2_INTH_CTRL_NEWFIQAGR);
TEST_FIELD_RESET_VALUE32(LEV2_INTH_CTRL_REG_USER_ADDR,
LEV2_INTH_CTRL_NEWFIQAGR);
PRINT_CURRENT_ERROR_STATUS(INTH2_TEST_RESET_VALUE_SUCCEEDED);
}
void INTH2_TestRegistersAccess(void)
{
int ITNumber;
MODIFY_REGISTER_RESET_VALUE32(LEV2_INTH_MASK_IT_REG);
for(ITNumber=0; ITNumber<32; ITNumber++)
{
SetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_FIQ_POS),
(LEV2_INTH_LEVEL_FIQ_NUMB),
(~LEV2_INTH_LEVEL_FIQ_RES_VAL));
if(GetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_FIQ_POS),
(LEV2_INTH_LEVEL_FIQ_NUMB))!=
GetGroupBits32(~LEV2_INTH_LEVEL_FIQ_RES_VAL,
LEV2_INTH_LEVEL_FIQ_POS,
LEV2_INTH_LEVEL_FIQ_NUMB))
{
RES_Set(LEV2_INTH_LEVEL_FIQ_BAD_REG_ACCESS+(ITNumber<<2));
RES_Set(DATA_STORE);
RES_Set(ITNumber);
}
SetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_FIQ_POS),
(LEV2_INTH_LEVEL_FIQ_NUMB),
(LEV2_INTH_LEVEL_FIQ_RES_VAL));
SetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_SENSEDGE_POS),
(LEV2_INTH_LEVEL_SENSEDGE_NUMB),
(~LEV2_INTH_LEVEL_SENSEDGE_RES_VAL));
if(GetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_SENSEDGE_POS),
(LEV2_INTH_LEVEL_SENSEDGE_NUMB))!=
GetGroupBits32(~LEV2_INTH_LEVEL_SENSEDGE_RES_VAL,
LEV2_INTH_LEVEL_FIQ_POS,
LEV2_INTH_LEVEL_FIQ_NUMB))
{
RES_Set(LEV2_INTH_LEVEL_SENSEDGE_BAD_REG_ACCESS);
RES_Set(DATA_STORE);
RES_Set(ITNumber);
}
SetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_SENSEDGE_POS),
(LEV2_INTH_LEVEL_SENSEDGE_NUMB),
(LEV2_INTH_LEVEL_SENSEDGE_RES_VAL));
SetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_PRIORITY_POS),
(LEV2_INTH_LEVEL_PRIORITY_NUMB),
(~LEV2_INTH_LEVEL_PRIORITY_RES_VAL));
if(GetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_PRIORITY_POS),
(LEV2_INTH_LEVEL_PRIORITY_NUMB))!=
GetGroupBits32(~LEV2_INTH_LEVEL_PRIORITY_RES_VAL,
LEV2_INTH_LEVEL_PRIORITY_POS,
LEV2_INTH_LEVEL_PRIORITY_NUMB))
{
RES_Set(LEV2_INTH_LEVEL_PRIORITY_BAD_RESET_VALUE);
RES_Set(DATA_STORE);
RES_Set(ITNumber);
}
SetGroupBits32(REG32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR+(ITNumber<<2)),
(LEV2_INTH_LEVEL_PRIORITY_POS),
(LEV2_INTH_LEVEL_PRIORITY_NUMB),
(LEV2_INTH_LEVEL_PRIORITY_RES_VAL));
}
/*MODIFY_FIELD_RESET_VALUE32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR,
LEV2_INTH_LEVEL_FIQ);
MODIFY_FIELD_RESET_VALUE32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR,
LEV2_INTH_LEVEL_SENSEDGE);
MODIFY_FIELD_RESET_VALUE32(LEV2_INTH_IT_LEVEL_REG_USER_ADDR,
LEV2_INTH_LEVEL_PRIORITY);*/
PRINT_CURRENT_ERROR_STATUS(INTH2_TEST_REGISTER_ACCESS_SUCCEEDED);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -