📄 gdmatest.c
字号:
{
if (MemMode == INITIALIZE_MEM) // Initialize memory with data . . .
{
if (i == 0)
{
MemPtr = (UWORD16*) (Chptr->SrcAdd);
}
*MemPtr = 0x0000FFFF & DMAT_GeneratePattern(Chptr->Pattern,i);
}
else // Verify mode - Validate transfer
{
if (i == 0)
{
MemPtr = (UWORD16*) (Chptr->DestAdd);
}
if ((0x0000FFFF & (*MemPtr)) != (0x0000FFFF & DMAT_GeneratePattern(Chptr->Pattern,i)))
{
DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)),
(0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
rtn_status = NOT_OK;
}
}
if (((i+1)%2)==0)
{
MemPtr+=Chptr->EltIndex;
}
else
{
MemPtr++;
}
}
break;
}
case DMA_TYPE_8_BITS:
{
UWORD8* MemPtr;
for (i = 0; i < BlockSize ; i++)
{
if (MemMode == INITIALIZE_MEM) // Initialize memory with data . . .
{
if (i == 0)
{
MemPtr = (UWORD8*) (Chptr->SrcAdd);
}
*MemPtr = 0x000000FF & DMAT_GeneratePattern(Chptr->Pattern,i);
}
else // Verify mode - Validate transfer
{
if (i == 0)
{
MemPtr = (UWORD8*) (Chptr->DestAdd);
}
if ((0x000000FF & (*MemPtr)) != (0x000000FF & DMAT_GeneratePattern(Chptr->Pattern,i)))
{
DMAT_SpyWriteFailResults( ChannelNumber, i, (0x000000FF & (*MemPtr)),
(0x000000FF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
rtn_status = NOT_OK;
}
}
MemPtr+=Chptr->EltIndex;
}
break;
}
default:
{
RES_StopVhdl();
break;
}
}
break;
}//end switch SINGLE_INDEX
//--------------------------------------------------------------------------------
case DMA_ADD_DOUBINDEX :
{
switch(Chptr->TypeSize)
{
case DMA_TYPE_32_BITS:
{
UWORD32* MemPtr;
for (i = 0; i < BlockSize ; i++)
{
if (MemMode == INITIALIZE_MEM) // Initialize memory with data . . .
{
if (i == 0)
{
MemPtr = (UWORD32*) (Chptr->SrcAdd);
}
*MemPtr = DMAT_GeneratePattern(Chptr->Pattern,i);
}
else // Verify mode - Validate transfer
{
if (i == 0)
{
MemPtr = (UWORD32*) (Chptr->DestAdd);
}
if (*MemPtr != DMAT_GeneratePattern(Chptr->Pattern,i))
{
DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)),
(0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
rtn_status = NOT_OK;
}
}
if (((i+1)%Chptr->EltNumber)==0)
{
MemPtr+=Chptr->FrameIndex;
}
else
{
if (((i+1)%4)==0)
{
MemPtr+=Chptr->EltIndex;
}
else
{
MemPtr++;
}
}
}
break;
}
case DMA_TYPE_16_BITS:
{
UWORD16* MemPtr;
for (i = 0; i < BlockSize ; i++)
{
if (MemMode == INITIALIZE_MEM) // Initialize memory with data . . .
{
if (i == 0)
{
MemPtr = (UWORD16*) (Chptr->SrcAdd);
}
*MemPtr = (0x0000FFFF & DMAT_GeneratePattern(Chptr->Pattern,i));
}
else // Verify mode - Validate transfer
{
if (i == 0)
{
MemPtr = (UWORD16*) (Chptr->DestAdd);
}
if ((0x0000FFFF & (*MemPtr)) != (0x0000FFFF & DMAT_GeneratePattern(Chptr->Pattern,i)))
{
DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)),
(0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
rtn_status = NOT_OK;
}
}
if (((i+1)%Chptr->EltNumber)==0)
{
MemPtr+=Chptr->FrameIndex;
}
else
{
if (((i+1)%2)==0)
{
MemPtr+=Chptr->EltIndex;
}
else
{
MemPtr++;
}
}
}
break;
}
case DMA_TYPE_8_BITS:
{
UWORD8* MemPtr;
for (i = 0; i < BlockSize ; i++)
{
if (MemMode == INITIALIZE_MEM) // Initialize memory with data . . .
{
if (i == 0)
{
MemPtr = (UWORD8*) (Chptr->SrcAdd);
}
*MemPtr = (0x000000FF & DMAT_GeneratePattern(Chptr->Pattern,i));
}
else // Verify mode - Validate transfer
{
if (i == 0)
{
MemPtr = (UWORD8*) (Chptr->DestAdd);
}
if ((0x000000FF & (*MemPtr)) != (0x000000FF & DMAT_GeneratePattern(Chptr->Pattern,i)))
{
DMAT_SpyWriteFailResults( ChannelNumber, i, (0x000000FF & (*MemPtr)),
(0x000000FF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
rtn_status = NOT_OK;
}
}
if (((i+1)%Chptr->EltNumber)==0)
{
MemPtr+=Chptr->FrameIndex;
}
else
{
MemPtr+=Chptr->EltIndex;
}
}
break;
}
default:
{
RES_StopVhdl();
break;
}
}
break;
}
}//end total switch
return((BOOL)rtn_status);
}
else
{
return((BOOL)rtn_status);
}
}
//-------------------------------------------------------------------------------
// NAME : DMAT_TestGlobalResetValues
//
// DESCRIPTION : Read the data of the global register and test the reset values
//
// PARAMETERS : Global pointer of the Global Register structure,
//
//
// RETURN VALUE : IS_OK or NOT_OK if something fail
//
//--------------------------------------------------------------------------------
BOOL DMAT_TestGlobalResetValues(GLOBAL_REGISTER* Global)
{
UWORD16 logresult = TEST_OK;
// Read the DMA global register
//---------------------------------
DMA_ReadGlobalReg(Global);
if (Global->Free != DMA_FREE_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set((UWORD32)(Global->Free));
RES_Set((UWORD32)(DMA_FREE_RESET_VAL));
RES_Set(END_ARRAY_DATA);
logresult = DMA_GCR_RESET_ERR;
}
if (Global->AutogatingOn != DMA_AUTOGATE_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set((UWORD32)(Global->AutogatingOn));
RES_Set((UWORD32)(DMA_AUTOGATE_RESET_VAL));
RES_Set(END_ARRAY_DATA);
logresult = DMA_GCR_RESET_ERR;
}
RES_Set(logresult);
return((BOOL)TRUE);
}
//-------------------------------------------------------------------------------
// NAME : DMAT_TestChannelResetValues
//
// DESCRIPTION : Read the data of the channel and test the reset values
//
// PARAMETERS : ChannelNumber DMA_CHANNEL_0
// DMA_CHANNEL_1
// DMA_CHANNEL_2
// DMA_CHANNEL_3
// DMA_CHANNEL_4
// DMA_CHANNEL_5
// DMA_CHANNEL_6
// DMA_CHANNEL_7
// DMA_CHANNEL_8
// DMA_CHANNEL_LCD
//
//
//
// RETURN VALUE : IS_OK or NOT_OK if something fail
//
//--------------------------------------------------------------------------------
BOOL DMAT_TestChannelResetValues( UWORD16 ChannelNumber )
{
UWORD16 logresult = TEST_OK;
// Read the DMA channel
//---------------------------------
DMA_ReadChannel(ChannelNumber);
if (ChannelNumber!=DMA_CHANNEL_LCD)
{
CHANNEL_DESCRIPTOR* Chptr;
Chptr=&(SystemDma.DmaChannel[ChannelNumber]);
//DMA_CSDP
//----------
logresult = TEST_OK;
if (Chptr->TypeSize != DMA_TYPE_SIZE_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set((UWORD32)(Chptr->TypeSize));
RES_Set((UWORD32)(DMA_TYPE_SIZE_RESET_VAL));
RES_Set((UWORD32)(0x10));
RES_Set(END_ARRAY_DATA);
logresult = DMA_CSDP_RESET_ERR;
}
if (Chptr->SrcPort != DMA_SRC_PORT_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set((UWORD32)(Chptr->SrcPort));
RES_Set((UWORD32)(DMA_SRC_PORT_RESET_VAL));
RES_Set((UWORD32)(0x11));
RES_Set(END_ARRAY_DATA);
logresult = DMA_CSDP_RESET_ERR;
}
if (Chptr->SrcPack != DMA_SRC_PACK_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set((UWORD32)(Chptr->SrcPack));
RES_Set((UWORD32)(DMA_SRC_PACK_RESET_VAL));
RES_Set((UWORD32)(0x12));
RES_Set(END_ARRAY_DATA);
logresult = DMA_CSDP_RESET_ERR;
}
if (Chptr->SrcBurst != DMA_SRC_BURST_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set((UWORD32)(Chptr->SrcBurst));
RES_Set((UWORD32)(DMA_SRC_BURST_RESET_VAL));
RES_Set((UWORD32)(0x13));
RES_Set(END_ARRAY_DATA);
logresult = DMA_CSDP_RESET_ERR;
}
if (Chptr->DestPort != DMA_DEST_PORT_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set((UWORD32)(Chptr->DestPort));
RES_Set((UWORD32)(DMA_DEST_PORT_RESET_VAL));
RES_Set((UWORD32)(0x14));
RES_Set(END_ARRAY_DATA);
logresult = DMA_CSDP_RESET_ERR;
}
if (Chptr->DestPack != DMA_DEST_PACK_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set((UWORD32)(Chptr->DestPack));
RES_Set((UWORD32)(DMA_DEST_PACK_RESET_VAL));
RES_Set((UWORD32)(0x15));
RES_Set(END_ARRAY_DATA);
logresult = DMA_CSDP_RESET_ERR;
}
if (Chptr->DestBurst != DMA_DEST_BURST_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set((UWORD32)(Chptr->DestBurst));
RES_Set((UWORD32)(DMA_DEST_BURST_RESET_VAL));
RES_Set((UWORD32)(0x16));
RES_Set(END_ARRAY_DATA);
logresult = DMA_CSDP_RESET_ERR;
}
RES_Set(logresult);
//DMA_CCR
//----------
logresult = TEST_OK;
if (Chptr->SyncNumb != DMA_SYNCNUMB_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set(Chptr->SyncNumb);
RES_Set(DMA_SYNCNUMB_RESET_VAL);
RES_Set(0x20);
RES_Set(END_ARRAY_DATA);
logresult = DMA_CCR_RESET_ERR;
}
if (Chptr->EventSync != DMA_FS_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set(Chptr->EventSync);
RES_Set(DMA_FS_RESET_VAL);
RES_Set(0x21);
RES_Set(END_ARRAY_DATA);
logresult = DMA_CCR_RESET_ERR;
}
if (Chptr->Priority != DMA_PRIORITY_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set(Chptr->Priority);
RES_Set(DMA_PRIORITY_RESET_VAL);
RES_Set(0x22);
RES_Set(END_ARRAY_DATA);
logresult = DMA_CCR_RESET_ERR;
}
if (Chptr->Enable != DMA_ENABLE_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set(Chptr->Enable);
RES_Set(DMA_ENABLE_RESET_VAL);
RES_Set(0x23);
RES_Set(END_ARRAY_DATA);
logresult = DMA_CCR_RESET_ERR;
}
if (Chptr->Autoinit != DMA_AUTOINIT_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set(Chptr->Autoinit);
RES_Set(DMA_AUTOINIT_RESET_VAL);
RES_Set(0x24);
RES_Set(END_ARRAY_DATA);
logresult = DMA_CCR_RESET_ERR;
}
if (Chptr->Fifofush != DMA_FLUSH_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set(Chptr->Fifofush);
RES_Set(DMA_FLUSH_RESET_VAL);
RES_Set(0x25);
RES_Set(END_ARRAY_DATA);
logresult = DMA_CCR_RESET_ERR;
}
if (Chptr->SrcAddressMode != DMA_SRC_AMODE_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set(Chptr->SrcAddressMode);
RES_Set(DMA_SRC_AMODE_RESET_VAL);
RES_Set(0x26);
RES_Set(END_ARRAY_DATA);
logresult = DMA_CCR_RESET_ERR;
}
if (Chptr->DestAddressMode != DMA_DEST_AMODE_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set(Chptr->DestAddressMode);
RES_Set(DMA_DEST_AMODE_RESET_VAL);
RES_Set(0x27);
RES_Set(END_ARRAY_DATA);
logresult = DMA_CCR_RESET_ERR;
}
RES_Set(logresult);
//DMA_CICR
//----------
logresult = TEST_OK;
if (Chptr->TimeoutIntEnable != DMA_TOUTIE_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set(Chptr->TimeoutIntEnable);
RES_Set(DMA_TOUTIE_RESET_VAL);
RES_Set(0x30);
RES_Set(END_ARRAY_DATA);
logresult = DMA_CICR_RESET_ERR;
}
if (Chptr->DropIntEnable != DMA_DROPIE_RESET_VAL)
{
RES_Set(START_ARRAY_DATA);
RES_Set(Chptr->DropIntEnable);
RES_Set(DMA_DROPIE_RESET_VAL);
RES_Set(0x31);
RES_Set(END_ARRAY_DATA);
logresult = DMA_CICR_RESET_ERR;
}
if (Chptr->HalfFrameIntEnable != DMA_HALFIE_RESET_VAL)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -