📄 cc1.c
字号:
__bISRKey = (BYTE)_wpRule[__bRuleIndex++];
// LLY2.37p, remove __bISRKeyRead, because we will split IR and F/W key to __bISRKey and __bFWKey
// So, it's un-necessary to reference it to decide input key source
//__bISRKeyRead = TRUE;
__dwAutoTestTime = UTL_GetSysTimer();
}
}
}
}
}
}
}
void CC_AutoTestInitial(void)
{
__bRuleIndex = 0;
__bAutoTest = FALSE;
}
#endif
//=================================================================/
//Alex1.26,20040526,
//1.Use _CCDrawString to replace input data into __wGDIstring directly
//2.Use _CC_Test_Single_Muti_RW_All to replace 8 test function
//3.Use SUPPORT_DRAM_SORT to test dram for AC
//=================================================================/
//alex_begin
#if defined (SUPPORT_TEST_SINGLE_MUTI_RW_FOR_BANK) || defined (SUPPORT_DRAM_SCAN_POWERON) ////alex908
#define SPEED_NUM 3 //alex908
#define BANK_NUM 4 //alex908
BIT __btDramScan;
BYTE __bRiscTestResult[SPEED_NUM][BANK_NUM]; //alex908
// *********************************************************************
// Function : _CC_DrawString
// Description : Simple All Draw String Function
// Arguments : String, X postion, Y postion
// Return :
// *********************************************************************
void _CC_DrawString( BYTE * pbStr, WORD wPosX, WORD wPosY)
{
BYTE bTemp;
__wGDIString[0]=strlen((char *)pbStr);
for (bTemp=0;bTemp<__wGDIString[0];bTemp++)
{
__wGDIString[bTemp+1]=CHAR_SPACE;
if ( (pbStr[bTemp] <=9) && (pbStr[bTemp] >=0) )
{
__wGDIString[bTemp+1]=pbStr[bTemp] - '0' + CHAR_0;
}
if ( (pbStr[bTemp] <='9') && (pbStr[bTemp] >='0') )
{
__wGDIString[bTemp+1]=pbStr[bTemp] - '0' + CHAR_0;
}
if ( (pbStr[bTemp] <='Z') && (pbStr[bTemp] >='A') )
{
__wGDIString[bTemp+1]=pbStr[bTemp] - 'A' + CHAR_A;
}
if ( (pbStr[bTemp] <='z') && (pbStr[bTemp] >='a') )
{
__wGDIString[bTemp+1]=pbStr[bTemp] - 'a' + CHAR_aa;
}
}
GDI_DRAW_STRING(wPosX ,wPosY);
}
#endif //#if defined (SUPPORT_TEST_SINGLE_MUTI_RW_FOR_BANK) || defined (SUPPORT_DRAM_SCAN_POWERON) ////alex908
#ifdef SUPPORT_TEST_SINGLE_MUTI_RW_FOR_BANK ////alex908
// *********************************************************************
// Function : _CC_Test_Single_Muti_RW_DrawAddress
// Description : ....
// Arguments : _dwStart_Address,
// : _bReadWriteType: 1-> single write, single read
// : 2-> single write ,muti read
// : 3-> muti write, single read
// : 4-> muti write ,muti read
// : _dwTestData
// Return :
// *********************************************************************
void _CC_Test_Single_Muti_RW_DrawAddress( DWORD _dwPostion,DWORD _dwAddr, DWORD _dwBValue,DWORD _dwAValue, BYTE _bType)
{
BYTE pbStr[20];
COMUTL_DWORD2HexStr(pbStr,_dwAddr);
_CC_DrawString( pbStr,0 ,_dwPostion);
COMUTL_DWORD2HexStr(pbStr,_dwBValue);
_CC_DrawString( pbStr,150 ,_dwPostion);
COMUTL_DWORD2HexStr(pbStr,_dwAValue);
_CC_DrawString( pbStr,300 ,_dwPostion);
switch (_bType)
{
case 1:
printf("Single Write and Single Read\n");
_CC_DrawString("SWSR", 450 ,_dwPostion);
break;
case 2:
printf("Single Write and Muti Read\n");
_CC_DrawString("SWMR", 450 ,_dwPostion);
break;
case 3:
printf("Muti Write and Single Read\n");
_CC_DrawString("MWSR", 450 ,_dwPostion);
break;
case 4:
printf("Muti Write and Muti Read\n");
_CC_DrawString("MWMR", 450 ,_dwPostion);
break;
}
}
// *********************************************************************
// Function : _CC_Test_Single_Muti_RW
// Description : ....
// Arguments : _dwStart_Address,
// :
// : _bReadWriteType: 1-> single write, single read
// : 2-> single write ,muti read
// : 3-> muti write, single read
// : 4-> muti write ,muti read
// : _dwTestData
// : _dwSize,
// Return :
// *********************************************************************
void _CC_Test_Single_Muti_RW( DWORD _dwStart_Address,BYTE _bReadWriteType,DWORD _dwTestData,DWORD _dwSize)
{
#define CATCH_DRAM_RANGE 10 // DWORD unit, total is > 256 BYTE
DWORD catch_loop_time;
DWORD __dwBuff[10];
DWORD dwTemp0, dwTemp1,dwTemp2,dwTemp3;
DWORD dwErrorTime=0;
DWORD dwReTryTime;
catch_loop_time=_dwSize;
for (dwTemp3=0;dwTemp3<1;dwTemp3++)
{
//print Read Write Type
switch (_bReadWriteType)
{
case 1:
printf("\nSingle Write and Single Read ,address: %lx -> %lx ",_dwStart_Address,_dwStart_Address+catch_loop_time*CATCH_DRAM_RANGE);
break;
case 2:
printf("\nSingle Write and Muti Read ,address: %lx -> %lx ",_dwStart_Address,_dwStart_Address+catch_loop_time*CATCH_DRAM_RANGE);
break;
case 3:
printf("\nMuti Write and Single Read ,address: %lx -> %lx ",_dwStart_Address,_dwStart_Address+catch_loop_time*CATCH_DRAM_RANGE);
break;
case 4:
printf("\nMuti Write and Muti Read ,address: %lx -> %lx ",_dwStart_Address,_dwStart_Address+catch_loop_time*CATCH_DRAM_RANGE);
break;
}
printf("\nWrite DRAM\n");
for(dwTemp2=0;dwTemp2<catch_loop_time;dwTemp2++)
{
if ( dwTemp2%(DWORD)(catch_loop_time/50)==0 )
{
printf(".");
}
//DSP backup protect
if ( (_dwStart_Address+CATCH_DRAM_RANGE*dwTemp2) >0x59B00 && (_dwStart_Address+CATCH_DRAM_RANGE*dwTemp2) <0x60000 )
{
continue;
}
//muti write
if (_bReadWriteType==3 || _bReadWriteType==4)
{
for( dwTemp1 = 0; dwTemp1 < CATCH_DRAM_RANGE; dwTemp1 ++)
{
__dwBuff[dwTemp1]=dwTemp1+dwTemp2+dwTemp3+_dwTestData;
}
#ifdef CACHE_RW_ONLY
_WriteDRAMCache(_dwStart_Address+CATCH_DRAM_RANGE*dwTemp2, __dwBuff, CATCH_DRAM_RANGE*4);
#else
_WriteDRAMBurst(_dwStart_Address+CATCH_DRAM_RANGE*dwTemp2, __dwBuff, CATCH_DRAM_RANGE*1);
#endif
}
//single write
else if (_bReadWriteType==1 || _bReadWriteType==2)
{
for(dwTemp1=0; dwTemp1<CATCH_DRAM_RANGE; dwTemp1++)
{
__dwBuff[dwTemp1]=dwTemp1+dwTemp2+dwTemp3+_dwTestData;
W99AV_WriteDRAMData((_dwStart_Address+dwTemp1)+CATCH_DRAM_RANGE*dwTemp2, __dwBuff[dwTemp1]);
}
}
}
printf("\nWrite ok");
#ifdef CACHE_RW_ONLY
printf("\nTest Cache Read \n");
#else
printf("\nTest Burst Read \n");
#endif
for(dwTemp2=0;dwTemp2<catch_loop_time;dwTemp2++)
{
if ( dwTemp2%(DWORD)(catch_loop_time/50)==0 )
{
printf(".");
}
//DSP backup protect
if ( (_dwStart_Address+CATCH_DRAM_RANGE*dwTemp2) >0x59B00 && (_dwStart_Address+CATCH_DRAM_RANGE*dwTemp2) <0x60000 )
{
continue;
}
//muti read
if (_bReadWriteType==2 || _bReadWriteType==4)
{
#ifdef CACHE_RW_ONLY
_ReadDRAMCache(_dwStart_Address+CATCH_DRAM_RANGE*dwTemp2, __dwBuff, CATCH_DRAM_RANGE*4);
#else
_ReadDRAMBurst(_dwStart_Address+CATCH_DRAM_RANGE*dwTemp2, __dwBuff, CATCH_DRAM_RANGE*1);
#endif
for(dwTemp1=0; dwTemp1<CATCH_DRAM_RANGE; dwTemp1++)
{
dwTemp0=dwTemp1+dwTemp2+dwTemp3+_dwTestData;
//show address
//printf("\nk=%lx,i=%lx,j=%lx,Address is[%lx],ORG = %lx, CURRENT = %lx ",k,i,j,((_dwStart_Address+i)+CATCH_DRAM_RANGE*j),dwTemp0, __dwBuff[i]);
if(__dwBuff[dwTemp1] != dwTemp0)
{
////show error
dwReTryTime=0;
RETRY1:
printf("Error0,Addr,O->value,D->value,%lx,%lx,%lx\n", (_dwStart_Address+dwTemp1+CATCH_DRAM_RANGE*dwTemp2), dwTemp0, __dwBuff[dwTemp1]);
_CC_Test_Single_Muti_RW_DrawAddress(30*dwErrorTime,_dwStart_Address+dwTemp1+CATCH_DRAM_RANGE*dwTemp2,dwTemp0,__dwBuff[dwTemp1],_bReadWriteType);
W99AV_ReadDRAMData((_dwStart_Address+dwTemp1)+CATCH_DRAM_RANGE*dwTemp2, &__dwBuff[dwTemp1]);
if (++dwErrorTime>11)
{
goto END;
}
if(__dwBuff[dwTemp1] != dwTemp0)
{
printf("Error1,Addr,O->value,D->value,%lx,%lx,%lx\n", (_dwStart_Address+dwTemp1+CATCH_DRAM_RANGE*dwTemp2), dwTemp0, __dwBuff[dwTemp1]);
_CC_Test_Single_Muti_RW_DrawAddress(30*dwErrorTime,_dwStart_Address+dwTemp1+CATCH_DRAM_RANGE*dwTemp2,dwTemp0,__dwBuff[dwTemp1],_bReadWriteType);
if (++dwReTryTime>1)
{
continue;
}
goto RETRY1;
}
else
{
printf("Right ,Addr,O->value,D->value,%lx,%lx,%lx\n", ((_dwStart_Address+dwTemp1)+CATCH_DRAM_RANGE*dwTemp2), dwTemp0, __dwBuff[dwTemp1]);
}
}
} //for(i=0; i<CATCH_DRAM_RANGE; i++)
}
//single read
else if (_bReadWriteType==1 || _bReadWriteType==3)
{
for(dwTemp1=0; dwTemp1<CATCH_DRAM_RANGE; dwTemp1++)
{
W99AV_ReadDRAMData((_dwStart_Address+dwTemp1)+CATCH_DRAM_RANGE*dwTemp2, &__dwBuff[dwTemp1]);
dwTemp0=dwTemp1+dwTemp2+dwTemp3+_dwTestData;
if(__dwBuff[dwTemp1] != dwTemp0)
{
////show error
dwReTryTime=0;
RETRY2:
if (++dwErrorTime>11)
{
goto END;
}
printf("Error0,Addr,O->value,D->value,%lx,%lx,%lx\n", (_dwStart_Address+dwTemp1+CATCH_DRAM_RANGE*dwTemp2), dwTemp0, __dwBuff[dwTemp1]);
_CC_Test_Single_Muti_RW_DrawAddress(30*dwErrorTime,_dwStart_Address+dwTemp1+CATCH_DRAM_RANGE*dwTemp2,dwTemp0,__dwBuff[dwTemp1],_bReadWriteType);
W99AV_ReadDRAMData((_dwStart_Address+dwTemp1)+CATCH_DRAM_RANGE*dwTemp2, &__dwBuff[dwTemp1]);
if(__dwBuff[dwTemp1] != dwTemp0)
{
printf("Error1,Addr,O->value,D->value,%lx,%lx,%lx\n", (_dwStart_Address+dwTemp1+CATCH_DRAM_RANGE*dwTemp2), dwTemp0, __dwBuff[dwTemp1]);
_CC_Test_Single_Muti_RW_DrawAddress(30*dwErrorTime,_dwStart_Address+dwTemp1+CATCH_DRAM_RANGE*dwTemp2,dwTemp0,__dwBuff[dwTemp1],_bReadWriteType);
if (++dwReTryTime>1)
{
continue;
}
goto RETRY2;
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -