⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cc1.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 3 页
字号:
                            __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 + -