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

📄 sysdebug.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 4 页
字号:
    EA = 0;
    W99AV_Command1(COMMAND_RDEBUGINFO,CMDARG_RDEBUGINFO);  // Chuan2.80p Use define instead of number
    W99AV_OutIndex(0x10000000);
    __dwTemp=W99AV_InData();
    EA = 1;
    printf("\nCmd_Debug1=0x%lx", __dwTemp);

    printf("\n__SetupInfo:");
    printf("\nbSetupVersion=0x%hx", __SetupInfo.bSetupVersion);
    printf("\twDefaultPassword=0x%x", __SetupInfo.wDefaultPassword);
    printf("\tbAspectRatio=0x%hx", __SetupInfo.bAspectRatio);
    printf("\tbSCRControl=0x%hx", __SetupInfo.bSCRControl);
    printf("\tbTVSystem=0x%hx", __SetupInfo.bTVSystem);
    printf("\tbProgressiveScan=0x%hx", __SetupInfo.bProgressiveScan);
    printf("\tbBrightness=0x%hx", __SetupInfo.bBrightness);
    printf("\tbContrast=0x%hx", __SetupInfo.bContrast);
    printf("\nbVideoOutput=0x%hx", __SetupInfo.bVideoOutput);
    printf("\tbAudioOutput=0x%hx", __SetupInfo.bAudioOutput);
    printf("\tbAudioDigitalOut=0x%hx", __SetupInfo.bAudioDigitalOut);
    printf("\tbAudioAnalogOut=0x%hx", __SetupInfo.bAudioAnalogOut);
    printf("\tbAudioLPCM=0x%hx", __SetupInfo.bAudioLPCM);
    printf("\tbRegionControl=0x%hx", __SetupInfo.bRegionControl);
    printf("\tbAPSControl=0x%hx", __SetupInfo.bAPSControl);
    printf("\nwParentalCtl=0x%hx", __SetupInfo.wParentalCtl);
    printf("\tbOSDLanguage=0x%hx", __SetupInfo.bOSDLanguage);
    printf("\tbAudioCenter=0x%hx", __SetupInfo.bAudioCenter);
    printf("\tbAudioRear=0x%hx", __SetupInfo.bAudioRear);
    printf("\tbAudioSubwoofer=0x%hx", __SetupInfo.bAudioSubwoofer);
    printf("\tbAudioDNR=0x%hx", __SetupInfo.bAudioDNR);
    printf("\tbAudioKaraoke=0x%hx", __SetupInfo.bAudioKaraoke);
    printf("\tbParentalControl=0x%hx", __SetupInfo.bParentalControl);
    printf("\nbMenuLanguag=0x%hx", __SetupInfo.bMenuLanguage);
    printf("\tbAudioLanguage=0x%hx", __SetupInfo.bAudioLanguage);
    printf("\tbSPSTLanguage=0x%hx", __SetupInfo.bSPSTLanguage);
    printf("\twMenuLanguageCode=0x%x", __SetupInfo.wMenuLanguageCode);
    printf("\twAudioLanguageCode=0x%x", __SetupInfo.wAudioLanguageCode);
    printf("\twSPSTLanguageCode=0x%x", __SetupInfo.wSPSTLanguageCode);
    printf("\tbAngleMarkDisplay=0x%hx", __SetupInfo.bAngleMarkDisplay);
    printf("\tbVCDControl=0x%hx", __SetupInfo.bVCDControl);
    printf("\tbAudioPrologic=0x%hx", __SetupInfo.bAudioPrologic);
    printf("\tbAngleMarkTime=0x%hx", __SetupInfo.bAngleMarkTime);
    printf("\tbAudioTestTone=0x%hx", __SetupInfo.bAudioTestTone);

    //DVD_037RECOVER
    {
        extern BYTE    _bCheckNVData;
        extern DWORD   __dwVOBUStart;      // it records the logical sector for VOBU start
        extern DWORD   __dwVOBUEnd;        // it records the logical sector for VOBU end
        extern DWORD   gdwNextLBA;
        extern BYTE __bResetRecover; // wyc1.07
        extern BYTE __bTotalRecover; // wyc1.07
        extern  BYTE    __bResetFailCount;
        extern  BYTE    __bTotalFailCount;
        extern  BYTE    _bNVRecover;
        extern  BYTE    __bRecoverStage;
        extern  WORD    __wMonitorLackIFD; 
        void    _ShowServoDebug(void);
        
        // Micky0.85, display below information only when DVD title
        if (__wDiscType & BOOK_DVD)
        {
            printf("\n*******CELL Status**************");
            printf("\n_bCheckNVData=0x%hx; ",_bCheckNVData);
            printf("_bNVRecover=0x%hx; ",_bNVRecover);
            printf("\n__dwVOBUStart-__dwVOBUEnd=0x%lx-0x%lx; ", __dwVOBUStart, __dwVOBUEnd);
            //DVD_038NVRECOVER
        }
        printf("\n*******Hang Status**************");
        printf("\ngdwNextLBA=0x%lu;",gdwNextLBA);
        printf("\n__bRecoverStage=0x%hx; ", __bRecoverStage);
        printf("__wMonitorLackIFD=0x%x; ", __wMonitorLackIFD);
        printf("__bResetRecover=0x%lx; ", __bResetRecover); // wyc1.07
        printf("__bResetFailCount=0x%hx;", __bResetFailCount);
        printf("__bTotalRecover=0x%lx; ", __bTotalRecover); // wyc1.07
        printf("__bTotalFailCount=0x%hx; ", __bTotalFailCount);
        _ShowServoDebug();
    }    
}
*/

/****************************************************************************
 ** Function:           _SYSDEBUG_DumpMem
 ** Description:        This function will deump the data from memory.(48 bytes)
 ** Parameters:         wAddress==>the memory address.
 ** Return:             none.
 ***************************************************************************/
#ifndef SYSDEBUG_SUPPORT_MIN_FUNCTION
void _SYSDEBUG_DumpMem(BYTE bType, WORD wAddress, WORD wSize)
{
    BYTE _bTemp;
    _wSYSDEBUGTemp = wAddress;

    if (bType == SYSDEBUG_MEM_XDATA)
        pbMem=(BYTE xdata *) wAddress;
    else if (bType == SYSDEBUG_MEM_IDATA)
        pbMem=(BYTE IDATA *) wAddress;
    else //DATA
        pbMem=(BYTE DATA *) wAddress;

    for (_wSYSDEBUGTemp1 = 0; _wSYSDEBUGTemp1 < wSize; _wSYSDEBUGTemp1++)
    {
        if ((_wSYSDEBUGTemp1 % 16) == 0)
        {
            _printf("\n");
            put_WORD(_wSYSDEBUGTemp);
            putchar_SBUF(':');
        }

        _wSYSDEBUGTemp++;
        putHEX(*pbMem++);
        putchar_SBUF(' ');
    }
}

/****************************************************************************
 ** Function:           _SYSDEBUG_DumpDRAMOrDM
 ** Description:        This function will deump the data from DRAM or DM.(48 bytes)
 ** Parameters:         dwAddress==>the DRAM address
 **                     dwSize==>Total size
 **                     bType==>memory type
 ** Return:             none.
 ***************************************************************************/
void _SYSDEBUG_DumpDRAMOrDM(DWORD dwAddress, DWORD dwSize, BYTE bType)
{
    for (_dwSYSDEBUGTemp1=0; _dwSYSDEBUGTemp1 < dwSize; _dwSYSDEBUGTemp1++)
    {        
        if ((_dwSYSDEBUGTemp1 % 4) == 0)
        {
            _printf("\n");
            put_DWORD(dwAddress); //The starting DRAM address
            putchar_SBUF(':');
        }
        if (bType == SYSDEBUG_DRAM_DATA)
        {
            W99AV_ReadDRAMData(dwAddress, &_dwSYSDEBUGTemp2);
            dwAddress++;
        }
        else
        {
            W99AV_ReadDM(dwAddress, &_dwSYSDEBUGTemp2);
            dwAddress++;
        }
        put_DWORD(_dwSYSDEBUGTemp2);
        putchar_SBUF(' ');
    }
}

/****************************************************************************
 ** Function:           _SYSDEBUG_DumpI2C
 ** Description:        
 ** Parameters:         
 ** Return:             none.
 ***************************************************************************/
void _SYSDEBUG_DumpI2C(BYTE bAddress, BYTE bValue)
{
    _printf("0x");
    putHEX(bAddress);
    putchar_SBUF(':');
    _printf("0x");
    putHEX(bValue);
    _printf("\n");
} 
/****************************************************************************
 ** Function:           _SYSDEBUG_SearchCommand
 ** Description:        This function will search if the command has a "SPACE" 
 ** Parameters:         bStart ==>the starting index in command buffer
 ** Return:             HIBYTE != 0 ==>has space
 **                     LOBYTE ==> numbers of the characters for the first parameter
 ***************************************************************************/
WORD _SYSDEBUG_SearchCommand(BYTE bStart)
{
    _wSYSDEBUGTemp = 0;
    for (_bSYSDEBUGTemp = bStart; _bSYSDEBUGTemp < _bRXCommandLen; _bSYSDEBUGTemp++)
    {
        //if "SPACE" or "ENTER" key is detected, break
        if (_bRXCommandData[_bSYSDEBUGTemp] == 0x20) //SPACE
        {
           _wSYSDEBUGTemp |= SYSDEBUG_COMMAND_SPACE;
           break;
        }
        else if (_bRXCommandData[_bSYSDEBUGTemp] == 0x0D) //ENTER
            break;
        else
            _wSYSDEBUGTemp++;
    }

    return _wSYSDEBUGTemp;
}


/****************************************************************************
 ** Function:           _SYSDEBUG_ModifyMem
 ** Description:        This function will modify the data in SRAM. 
 ** Parameters:         pbCommandData ==> The command buffer
 **                     wAddress ==> The address to stored the modified data
 **                     bStart ==> The "data" starting index in command buffer
 **                     bSize ==> the length of the data
 ** Return:             
 ***************************************************************************/
void _SYSDEBUG_ModifyMem(BYTE bType, WORD wAddress, BYTE bStart, BYTE bSize, BYTE bAndOr)
{
    if (bType == SYSDEBUG_MEM_XDATA)
        pbMem = (BYTE xdata *)wAddress;
    else if (bType == SYSDEBUG_MEM_IDATA)
        pbMem = (BYTE IDATA *)wAddress;
    else //DATA
        pbMem = (BYTE DATA *)wAddress;

    switch (bSize)
    {
    case 1: //Modify a BYTE
    case 2:   
        _bSYSDEBUGTemp = (BYTE)_SYSDEBUG_StrToHexval(&_bRXCommandData[bStart], bSize);
        if (bAndOr == SERIAL_DEBUG_OPERATE_AND) //And
            *pbMem &= _bSYSDEBUGTemp;
        else if (bAndOr == SERIAL_DEBUG_OPERATE_OR) //Or
            *pbMem |= _bSYSDEBUGTemp;
        else
            *pbMem = _bSYSDEBUGTemp;

        _dwSYSDEBUGTemp1 = 1; //Dump one BYTE
        break;
    case 3: //Modify a WORD
    case 4: 
        _wSYSDEBUGTemp = (WORD)_SYSDEBUG_StrToHexval(&_bRXCommandData[bStart], bSize);
        if (bAndOr == SERIAL_DEBUG_OPERATE_AND) //And
        {
            *pbMem++ &= HIBYTE(_wSYSDEBUGTemp);
            *pbMem &= LOBYTE(_wSYSDEBUGTemp);
        }
        else if (bAndOr == SERIAL_DEBUG_OPERATE_OR) //Or
        {
            *pbMem++ |= HIBYTE(_wSYSDEBUGTemp);
            *pbMem |= LOBYTE(_wSYSDEBUGTemp);
        }
        else
        {
            *pbMem++ = HIBYTE(_wSYSDEBUGTemp);
            *pbMem = LOBYTE(_wSYSDEBUGTemp);
        }
        _dwSYSDEBUGTemp1 = 2; //Dump two BYTEs
        break;
    case 5: //Modify a DWORD
    case 6:
    case 7:
    case 8:
        _dwSYSDEBUGTemp2 = (DWORD)_SYSDEBUG_StrToHexval(&_bRXCommandData[bStart], bSize);
        if (bAndOr == SERIAL_DEBUG_OPERATE_AND) //And
        {
            *pbMem++ &= HIBYTE(HIWORD(_dwSYSDEBUGTemp2));
            *pbMem++ &= LOBYTE(HIWORD(_dwSYSDEBUGTemp2));
            *pbMem++ &= HIBYTE(LOWORD(_dwSYSDEBUGTemp2));
            *pbMem &= LOBYTE(LOWORD(_dwSYSDEBUGTemp2));
        }
        else if (bAndOr == SERIAL_DEBUG_OPERATE_OR) //Or
        {
            *pbMem++ |= HIBYTE(HIWORD(_dwSYSDEBUGTemp2));
            *pbMem++ |= LOBYTE(HIWORD(_dwSYSDEBUGTemp2));
            *pbMem++ |= HIBYTE(LOWORD(_dwSYSDEBUGTemp2));
            *pbMem |= LOBYTE(LOWORD(_dwSYSDEBUGTemp2));
        }
        else
        {
            *pbMem++ = HIBYTE(HIWORD(_dwSYSDEBUGTemp2));
            *pbMem++ = LOBYTE(HIWORD(_dwSYSDEBUGTemp2));
            *pbMem++ = HIBYTE(LOWORD(_dwSYSDEBUGTemp2));
            *pbMem = LOBYTE(LOWORD(_dwSYSDEBUGTemp2));
        }
        _dwSYSDEBUGTemp1 = 4; //Dump 4 BYTEs
        break;
    default:
        break;
    }
}

/****************************************************************************
 ** Function:           _SYSDEBUG_Help
 ** Description:        This function will display help message
 ** Parameters:         none.
 ** Return:             none.
 ***************************************************************************/
#ifdef SYSDEBUG_SUPPORT_HELP
void _SYSDEBUG_Help(void)
{
    _printf("\n(C)Copyright Cheertek Inc. 2002\n");
    _printf("   D300, all right reserved\n");
    _printf("      Version 1.00\n");
    _printf("?/H                             : Print help message.\n");
    _printf("P                               : Repeat last command.\n");
    _printf("DSMxxxx/DSMxxxx xxxx            : Dump the data from the memory (SRAM).\n");
    _printf("DDRxxxxxxxx/DDRxxxxxxxx xxxxxxxx: Dump the data from DRAM.\n");
    _printf("DDMxxxxxxxx/DDMxxxxxxxx xxxxxxxx: Dump the data from DM.\n");
    _printf("MSMxxxx xx                      : Modify a BYTE in SRAM.\n");
    _printf("MDRxxxxxxxx xxxxxxxx            : Modify a data in DRAM.\n");
    _printf("MDMxxxxxxxx xxxxxxxx            : Modify a data in DM.\n");
    _printf("USMxxxx                         : Upload a file to SRAM.\n");
    _printf("UDRxxxxxxxx                     : Upload a file to DRAM.\n");
    _printf("UDMxxxxxxxx                     : Upload a file to DM.\n");
    _printf("Kxx                             : Modify a IR key.\n");
    _printf("I                               : Show the debug information of W9922QF.\n");
    _printf("RRxx                            : Read W9922QF/W9928AF's register.\n");
    _printf("WRxx xxxxxxxx                   : Write a value to W9922QF's register.");
}
#endif

/****************************************************************************
 ** Function:           _SYSDEBUG_ProcessCommand
 ** Description:        
 ** Parameters:         none.
 ** Return:             none.
 ***************************************************************************/
void _SYSDEBUG_ProcessCommand(void)
{      
    _bSYSDEBUGTemp1=EMPTY_DATA_IN_BUFFER;
    _bSYSDEBUGTemp=_SYSDEBUG_ReadAndCheckInBuffer(&_bSYSDEBUGTemp1);
    _bCurrentCommand = _bSYSDEBUGTemp1;
    switch (_bCurrentCommand) /* read data from rx buffer */
    { 
    case START_BIN_MODE_CMD:
        _bSYSDEBUGTemp = _SYSDEBUG_ReadAndCheckInBuffer(&_bSYSDEBUGTemp1);
        if (_bSYSDEBUGTemp1 == END_CMD)    
        {
            EX0 = 0; 
            putchar_SBUF(START_BIN_MODE_ACK);
        }
        /*
        else if (_bSYSDEBUGTemp1 == ERROR_RECOVER_CMD) //to fix the problem about can't enter bin mode.
        {
            if (_SYSDEBUG_ReadInBuffer() == END_CMD)
            {
                _bBinMode = FALSE;
                _SYSDEBUG_EndCommand();
            }
        }
        */
        else
        {
            _SYSDEBUG_EndCommand();
            putchar_SBUF(ERROR_START_BIN_MODE);
        }
        break;
    case END_BIN_MODE_CMD:
        _bSYSDEBUGTemp = _SYSDEBUG_ReadAndCheckInBuffer(&_bSYSDEBUGTemp1);
        if (_bSYSDEBUGTemp1 == END_CMD)     
        {
            EX0 = 1; 
            _bBinMode = FALSE;
            _bpROMBuf = _bROMDataBuf;
            putchar_SBUF(END_BIN_MODE_ACK);
        }
        else
        {
            _SYSDEBUG_EndCommand();
            putchar_SBUF(ERROR_END_BIN_MODE);
        }
        break;
    case READ_DRAMDM_CMD:
        //Get DRAM, DM address
        _bSYSDEBUGType = _SYSDEBUG_ReadInBuffer(); //To get DRAM or DM
        _wROMSize = _SYSDEBUG_ReadInBuffer();  
        _wROMSize <<= 8;
        _wROMSize |= _SYSDEBUG_ReadInBuffer();
        _bSYSDEBUGTemp = _SYSDEBUG_ReadAndCheckInBuffer(&_bSYSDEBUGTemp1);        
        if (_bSYSDEBUGTemp1 == END_CMD) 
        {
            _bChangeRxToRomBuffer = TRUE;
            _wROMdataBufIndex = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -