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

📄 ucode4.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 2 页
字号:
        }
#endif
        // Chuan 278 2002/10/28: Load DSP ERAM
        switch (bCode)
        {
/*
        case UCODE_DSPRAM_TONE:
    #ifdef SYSTEM_8051
            dwRAM = _dwTONERAM ;
    #else
            bRet = _OpenUCODE ( "toneram.inc" );
    #endif
            break ;
*/
        case UCODE_DSPRAM_DVD:
    #ifdef SYSTEM_8051
            dwRAM = _dwDVDERAM ;
    #else
            bRet = _OpenUCODE ( "dvderam.inc" );
    #endif
            break ;
#ifdef SUPPORT_WMA
        case UCODE_DSPRAM_WMA: //Kevin1.08
    #ifdef SYSTEM_8051
            dwRAM = _dwWMAERAM ;
    #else
            bRet = _OpenUCODE ( "wmaeram.inc" );
    #endif
            break ;
#endif
        }
#ifdef SUPPORT_DRAM_PROTECTION
        //Chuan1.02, unprotect ERAM
        W99AV_WriteRegDW( UCPR1, 0x0000, 0x0000);
#endif
        if (!W99AV_WriteDRAMBurst (ERAM_ADDR, &(dwRAM[START]), (WORD)dwRAM[1]))
        {
#ifdef SUPPORT_PRINTF
            printf ("\nWrite ERAM Error [0x%x] = [0x%lx]", ERAM_ADDR+_UCODEIndex, dwRAM[_UCODEIndex+2]) ;
#endif
            bRet = FALSE ;
        }
#ifdef SUPPORT_DRAM_PROTECTION
        //Chuan1.02, protect ERAM form ERAM_ADDR to ERAM_END_ADDR 
        dwTemp = 0x01000000 | ((DWORD)(ERAM_END_ADDR>>8)<<12) | ERAM_ADDR>>8;
        W99AV_WriteRegDW( UCPR1, LOWORD(dwTemp), HIWORD(dwTemp));
#endif
        // Chuan 278 2002/10/28: Release A_RST
        W99AV_WriteRegDW (PCR, __wW99AVPCRLow, __wW99AVPCRHigh) ;
        break ;
    }

#ifndef SYSTEM_8051
    if (pdwUcode)
    {
        _hfree(pdwUcode);
        pdwUcode = NULL;
    }
#endif
    return bRet ;
}

// ********************************************************************
//  Function    :   UCODE4_CheckCode
//  Description :   Check the desired micro-code
//  Arguments   :   bRam, the desired ucode;
//  Return      :   TRUE or FALSE
//  Side Effect :
// ********************************************************************
#pragma DISABLE
BYTE UCODE4_CheckCode (BYTE bRam, BYTE bCode)
{
    bRet = TRUE ;
#ifdef  CHECK_UCODE_LOAD

    switch (bRam)
    {
    // Chuan1.10, Move Parser Code to UCODE4
    case UCODE_PRAM :
            switch (bCode)
            {
            case UCODE_DVDPRAM :
#ifdef SYSTEM_8051
                dwRAM = _dwDVDPAR ;
#else
                bRet = _OpenUCODE ("dvdpar.inc");  
#endif
                break ;
            // Chuan 278 2002/10/30: The code related to CSS key management in DVDPRAM.INC has been moved out.
            case UCODE_KEYPRAM :
#ifdef SYSTEM_8051
                dwRAM = _dwKEYPAR ;
#else
                bRet = _OpenUCODE ("keypar.inc"); 
#endif
                break ;
            case UCODE_CDROMPRAM :
#ifdef SYSTEM_8051
                dwRAM = _dwCDROMPAR ;
#elif defined(BITSTREAM_WITHOUT_SYNC)
                bRet = _OpenUCODE ( "dosall.inc" ); // Chuan2.80p, DosTest - Host path w/o SYNC
#else
                bRet = _OpenUCODE ( "cdrompar.inc" ); // Chuan2.80p, Emulator ATAPIIF/CDIF only
#endif
                break ;
            case UCODE_ALLPRAM :
#ifdef SYSTEM_8051
                dwRAM = _dwALLPAR ;
#elif defined(BITSTREAM_WITHOUT_SYNC)
                bRet = _OpenUCODE ( "dosall.inc" ); // Chuan2.80p, DosTest - Host path w/o SYNC
#else
                bRet = _OpenUCODE ( "allpar.inc" ); // Chuan2.80p, Emulator ATAPIIF/CDIF only
#endif
                break ;
    
            // wyc1.10, new parser code to play DVD-DAT / CD-DAT files.
            case UCODE_DATPRAM:
#ifdef SYSTEM_8051
                dwRAM = _dwDATPAR ;
#else
                bRet = _OpenUCODE ( "datpar.inc" ); // Chuan2.80p, Emulator ATAPIIF/CDIF only
#endif
                break;
    
#ifdef BITSTREAM_WITHOUT_SYNC
            case UCODE_DOSJPEG:
                bRet = _OpenUCODE ( "dosjpeg.inc" ); // Chuan2.80p, DosTest - Host path w/o SYNC
                break ;
#endif
            default :
#ifdef SUPPORT_PRINTF
                printf ("\nWrong Parser Ramcode specified !") ;
#endif
                return FALSE ;
            }
    
            ////////////////////////////////////////
            // Check download PRAM procedure
            __wW99AVPCRLow &= 0xDFFF ;  //(Bit 13, Parser Disable)
            W99AV_WriteRegDW (PCR, __wW99AVPCRLow, __wW99AVPCRHigh) ;
            // Soft Reset Parser
            __wW99AVPCRLow |= 0x1000 ;  //(Bit 12, Parser Reset)
            W99AV_WriteRegDW (PCR, __wW99AVPCRLow, __wW99AVPCRHigh) ;
            // LLY.043 end ...
    
            for(_UCODEIndex=0; _UCODEIndex<dwRAM[1];_UCODEIndex++)
            {
                W99AV_OutIndex(W99AV_AIRID_PARRAM | _UCODEIndex) ;
                W99AV_InData();
                W99AV_OutIndex(W99AV_AIRID_PARRAM | _UCODEIndex) ;
                dwData=W99AV_InData()&0xfffff;
                if(dwData!=dwRAM[_UCODEIndex+START])
                {
#ifdef SUPPORT_PRINTF
                    printf ("\nCheck PRAM %d Error [0x%lx] != [0x%lx]", _UCODEIndex, dwData, dwRAM[_UCODEIndex+START]) ;
#endif
                    bRet = FALSE ;
                    break ;
                }
            }
            // LLY.043, fix recursive call -- expand HAL_ControlParser(HAL_PARSER_ENABLE) procedure
            // Restore previous state
            __wW99AVPCRLow &= 0xEFFF ;  //(Bit 12, Parser Reset)
            W99AV_WriteRegDW (PCR, __wW99AVPCRLow, __wW99AVPCRHigh) ;
            //DVD016MICKY
            __wW99AVPCRLow |= 0x2000 ;  //(Bit 13, Parser Enable)
            W99AV_WriteRegDW (PCR, __wW99AVPCRLow, __wW99AVPCRHigh) ;
            // LLY.043 end ...
            break ;

    case UCODE_DSPRAM :
        // Chuan 278 2002/10/28: Check DSP PRAM first.
        switch (bCode)
        {
/*
        case UCODE_DSPRAM_TONE:
    #ifdef SYSTEM_8051
            dwRAM = _dwTONPRAM ;
    #else
            bRet = _OpenUCODE ( "tonpram.inc" );
    #endif
            break ;
*/
#ifdef SUPPORT_WMA
        case UCODE_DSPRAM_WMA: //Kevin1.08
    #ifdef SYSTEM_8051
            dwRAM = _dwWMAPRAM ;
    #else
            bRet = _OpenUCODE ( "wmapram.inc" );
    #endif
            break ;
#endif
        }
        dwData = W99AV_AIRID_DSPMEM | 0x00010000L ;
        // Chuan 278 2002/10/28: Keep A_RST high        
        W99AV_WriteRegDW (PCR,(WORD)(__wW99AVPCRLow|0x0020), __wW99AVPCRHigh) ;
        for (_UCODEIndex=0; _UCODEIndex<dwRAM[1]; _UCODEIndex++)
        {
            W99AV_OutIndex(dwData | _UCODEIndex) ;
            W99AV_InData();
            W99AV_OutIndex(dwData | _UCODEIndex) ;
            dwTemp=W99AV_InData() & 0x0fffffff;
            if(dwTemp!=dwRAM[_UCODEIndex+START])
            {
#ifdef SUPPORT_PRINTF
                printf ("\nCheck DSP PM RAM %d Error [0x%lx] != [0x%lx]", _UCODEIndex, dwTemp, dwRAM[_UCODEIndex+START]) ;
#endif
                bRet = FALSE ;
                break ;
            }
        }
#ifndef SYSTEM_8051
        if (pdwUcode)
        {
            _hfree(pdwUcode);
            pdwUcode = NULL;
        }
#endif
        // Chuan 278 2002/10/28: Check DSP ERAM
        switch (bCode)
        {
/*
        case UCODE_DSPRAM_TONE:
    #ifdef SYSTEM_8051
            dwRAM = _dwTONERAM ;
    #else
            bRet = _OpenUCODE ( "toneram.inc" );
    #endif
            break ;
*/
#ifdef SUPPORT_WMA
        case UCODE_DSPRAM_WMA: //Kevin1.08
    #ifdef SYSTEM_8051
            dwRAM = _dwWMAERAM ;
    #else
            bRet = _OpenUCODE ( "wmaeram.inc" );
    #endif
            break ;
#endif
        }
        for (_UCODEIndex=0; _UCODEIndex<dwRAM[1]; _UCODEIndex++)
        {
            W99AV_ReadDRAMData (ERAM_ADDR+_UCODEIndex, &dwTemp) ;
            if(dwTemp!=dwRAM[_UCODEIndex+START])
            {
#ifdef SUPPORT_PRINTF
                printf ("\nCheck ERAM %d Error [0x%lx] != [0x%lx]", _UCODEIndex, dwTemp, dwRAM[_UCODEIndex+START]) ;
#endif
                bRet = FALSE ;
                break ;
            }
        }
        W99AV_WriteRegDW (PCR, __wW99AVPCRLow, __wW99AVPCRHigh) ;
        break ;
    }

#ifndef SYSTEM_8051
    if (pdwUcode)
    {
        _hfree(pdwUcode);
        pdwUcode = NULL;
    }
#endif
#endif // #ifdef  CHECK_UCODE_LOAD
    return bRet ;
}
#endif    // #ifndef SUPPORT_GZIP_COMPRESSION



⌨️ 快捷键说明

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