亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ucode.c

?? 車載電子影音系統dvd播放系統原程序代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
BIT UCODE_Check(void)
{
// Chuan1.05, define it to check ucode
#ifdef  CHECK_UCODE_LOAD    
    // Check IRAM
    if (!UCODE_CheckCode (UCODE_IRAM, (BYTE)NULL))
        return FALSE ;

    ////////////////////////////////////////
    // Check download PRAM procedure
    if (!UCODE_CheckCode (UCODE_PRAM, UCODE_PRAM_VCD))
        return FALSE ;

    // TCC041.2, should load dsp code according to setup's setting.
    // Or next power-on will still load normal one.
    // TCC2.78b-2, fix setup as spdif_raw, start up as CDDA mode, it will hang problem, reported by Paragon/Mustek(IC issue).
    // The solution is to load normal set of dsp code first, then load iec part. Don't know why.
    // Chuan 2002/10/28: Check DSP PRAM/ERAM together
    // Chuan0.8x, Move DSP Code to UCODE 2
    if (!UCODE2_CheckCode (UCODE_DSPRAM, UCODE_DSPRAM_NORMAL))
        return FALSE ;
#endif
    return TRUE;
}


// ********************************************************************
//  Function    :   UCODE_LoadCode
//  Description :   Download the desired micro-code
//  Arguments   :   bRam, the desired ucode;
//                  bCode, the subtype of the desired code
//  Return      :   TRUE or FALSE
//  Side Effect :
// ********************************************************************
#pragma DISABLE
BYTE UCODE_LoadCode(BYTE bRam, BYTE bCode)
{
    extern  void _WriteInternalRegW_IO(BYTE bReg, WORD wLo);

    // DWORD   dwRegister; // Chuan DVD_171 12/11/2001: Useless variable
    // for download uram code variable
    // Chuan DVD_171 12/11/2001: Declare as code *. If want know in detail, please refer to tracernote 100
    // Chuan 278 2002/10/28: Move to Global
    // WORD code *wptr;  // pointer to WORD

    bRet = TRUE ;

    switch (bRam)
    {
    case UCODE_IRAM :
#ifdef SYSTEM_8051
        dwRAM = _dwIRAM;
#else   
        // Read iram.inc and copy to _dwUcode
        bRet = _OpenUCODE ("iram.inc"); 
#endif  

#ifdef SUPPORT_DRAM_PROTECTION
        //Kevin1.01, unprotect IRAM
        W99AV_WriteRegDW( UPR, 0x0000, 0x1E00);
#endif

        // ** TCH-Lucky; begin...
        // First 14 DW IRAM.INC must download in last time.
        // So must re-adjust the download procedure.
        // [1] download 15 ~ end first
        // Chuan2.80a, Now 28AF has 16 ret code. CT908 has 17 ret code.
        if ( ! W99AV_WriteDRAMBurst( (IRAM_ADDR+17), &dwRAM[START+17], (WORD)(dwRAM[1]-17)))
        {
#ifdef SUPPORT_PRINTF
            printf ( "\n **** DownLoad IRAM Failure...." );
#endif
            bRet = FALSE ;
        }

        // [2] Download 1 ~ 17 last
        if ( ! W99AV_WriteDRAMBurst (IRAM_ADDR, &dwRAM[START], (WORD)(17)))
        {
#ifdef SUPPORT_PRINTF
            printf ( "\n **** DownLoad IRAM Failure...." );
#endif
            bRet = FALSE ;
        }

#ifdef SUPPORT_DRAM_PROTECTION        
        //Kevin1.01, protect IRAM form IRAM_ADDR to IRAM_END_ADDR
        dwTemp = 0x1F000000 | ((DWORD)(IRAM_END_ADDR>>8)<<12) | IRAM_ADDR>>8;
        W99AV_WriteRegDW( UPR, LOWORD(dwTemp), HIWORD(dwTemp));
#endif

        // ** TCH-Lucky; end...         
        break ;

     case UCODE_PRAM :
        if (bCode == _bPramCur)
        {
            // TCC040, let upper level know that code not changed
            bRet = UCODE_LOAD_NONE ;
            break ;
        }

        // Keep the desired subtype code in current variable
        _bPramCur = bCode ;
        // Chuan1.10, Move Parser Code to UCODE4
        UCODE4_LoadCode(bRam, bCode);
        break ;
 
    case    UCODE_URAM :
#ifdef SUPPORT_DRAM_SCAN_POWERON //alex1.24a, Scan Dram
    case    UCODE_URAM_DRAMTEST :     
      if (bRam == UCODE_URAM_DRAMTEST)
      {
#ifdef SYSTEM_8051
        dwRAM = _dwURAMTest;
#else
        bRet = _OpenUCODE ("uramtest.inc");   
#endif
      }  
      else  
#endif //#ifdef SUPPORT_DRAM_SCAN_POWERON
      {
#ifdef SYSTEM_8051
        dwRAM = _dwURAM;
#else
        bRet = _OpenUCODE ("uram.inc"); 
#endif
      }

        wptr=(WORD code *)& dwRAM[START];

        // Step 1 : Reset URAM
        __dwW99AVCmdArg[0]=1;
        __dwW99AVCmdArg[1]=CMDARG_URAMRST;
        if(!W99AV_CommandN(COMMAND_URAMRST))  // Chuan2.80p, Use define instead of number
            bRet =FALSE;

        // Step 2 : set URAM write enable
        _WriteInternalRegW_IO(CFR,0x0060);    // CF, to stall CPU
        _WriteInternalRegW_IO(RMADRR,0x0080);    // rm_adr
        _WriteInternalRegDW_IO(DCCTLR,0x0,0x1); // Chuan-Test0.01
        
        // Step 3 : load nonzero URAM data to register

        for(_UCODEIndex=0; _UCODEIndex<dwRAM[1];_UCODEIndex++)
        {
            if(dwRAM[_UCODEIndex+START]!=0)
            {
                _WriteInternalRegW_IO(RMADRR,(WORD)(0x0080|((_UCODEIndex&0x00FF)<<8)));
#ifdef USE_LITTLE_ENDIAN
                _WriteInternalRegW_IO (DIR0R, (*wptr)) ;
                _WriteInternalRegW_IO (DIR1R, (*(wptr+1))) ;
#else
                _WriteInternalRegW_IO (DIR0R, (*(wptr+1))) ;
                _WriteInternalRegW_IO (DIR1R, (*wptr)) ;
#endif
            }
            wptr+=2;
        }
        // Step 4 : set URAM write disable
        _WriteInternalRegW_IO(RMADRR,0x0000);
        _WriteInternalRegW_IO(CFR,0x0000);
        // Chuan-Test0.01, Enable URAM_EN
        __wW99AVPCRHigh |= 0x0004;  // PCR[18]:URAM_EN
        W99AV_WriteRegDW(PCR,(WORD)(__wW99AVPCRLow|0x10), __wW99AVPCRHigh);
        W99AV_WriteRegDW(PCR,(WORD)__wW99AVPCRLow, __wW99AVPCRHigh);        
        break ;
    /*        
    case    UCODE_CRAM :
        // Chuan2.80, Load CRAM Code for CT908.
#ifdef SYSTEM_8051
        dwRAM = _dwCRAM ;
#else
        bRet = _OpenUCODE ( "cram.inc" );
#endif
        for (_UCODEIndex=0; _UCODEIndex<dwRAM[1]; _UCODEIndex++)
        {
            W99AV_OutIndex (W99AV_AIRID_RISCCRAM | _UCODEIndex) ;
            W99AV_OutData (dwRAM [_UCODEIndex+START]) ;            
        }
        break;
    */       
    
//alex1.24a SCAN DRAM at poweron
#ifdef SUPPORT_DRAM_SCAN_POWERON
    case    UCODE_CRAM_DRAMTEST :
#ifdef SYSTEM_8051
        dwRAM = _dwCRAMTest ;
#else
        bRet = _OpenUCODE ("cramtest.inc");   
#endif
        for (_UCODEIndex=0; _UCODEIndex<dwRAM[1]; _UCODEIndex++)
        {
            W99AV_OutIndex (W99AV_AIRID_RISCCRAM | _UCODEIndex) ;
            W99AV_OutData (dwRAM [_UCODEIndex+START]) ;            
        }
        break;       
#endif //#ifdef SUPPORT_DRAM_SCAN_POWERON    
     
    }

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

    return bRet ;
}


// ********************************************************************
//  Function    :   UCODE_CheckCode
//  Description :   Check the desired micro-code
//  Arguments   :   bRam, the desired ucode;
//                  bCode, the subtype of the desired code
//  Return      :   TRUE or FALSE
//  Side Effect :
// ********************************************************************
#pragma DISABLE
BYTE UCODE_CheckCode (BYTE bRam, BYTE bCode)
{
    bRet = TRUE ;
// Chuan1.05, define it to check ucode
#ifdef  CHECK_UCODE_LOAD

    switch (bRam)
    {
    case UCODE_IRAM :
#ifdef SYSTEM_8051
        dwRAM = _dwIRAM;
#else
        bRet = _OpenUCODE ("iram.inc"); 
#endif

        for (_UCODEIndex=0; _UCODEIndex<dwRAM[1]; _UCODEIndex++)
        {
            W99AV_ReadDRAMData (IRAM_ADDR+_UCODEIndex, &dwData);
            if (dwData != dwRAM[_UCODEIndex+START])
            {
#ifdef SUPPORT_PRINTF
                printf ("\nCheck IRAM code %d error, [0x%lx]--[0x%lx]", _UCODEIndex, dwData, dwRAM[_UCODEIndex+START]) ;
#endif
                bRet = FALSE ;
                break ;
            }
        }
        break;

    case UCODE_PRAM :
        // Chuan1.10, Move Parser Code to UCODE4
        UCODE4_CheckCode(bRam, bCode);
        break;
        
    case UCODE_URAM :
#ifdef SYSTEM_8051
        dwRAM = _dwURAM;
#else
        bRet = _OpenUCODE ("uram.inc");
#endif
        wptr=(WORD code *)& dwRAM[START];

        // Step 2 : set URAM write enable
        _WriteInternalRegW_IO(CFR,0x0060);    // CF, to stall CPU
        _WriteInternalRegW_IO(RMADRR,0x00c0);    // rm_adr
        __wW99AVPCRHigh |= 0x0004;  // PCR[18]:URAM_EN
        W99AV_WriteRegDW(PCR,(WORD)__wW99AVPCRLow, __wW99AVPCRHigh);
        
        // Step 3 : load nonzero URAM data to register

        for(_UCODEIndex=0; _UCODEIndex<dwRAM[1];_UCODEIndex++)
        {
            _WriteInternalRegW_IO(PCRR,(WORD)(_UCODEIndex+0x800));
            _WriteInternalRegW_IO(RMADRR,(WORD)(0x00c4|((_UCODEIndex&0x00FF)<<8)));
            dwData = _ReadInternalRegW_IO (DIR0R) ;
            dwTemp = _ReadInternalRegW_IO (DIR1R) ;
            dwData = MAKELONG(dwData,dwTemp);
            if(dwData!=dwRAM[_UCODEIndex+START])
            {
#ifdef SUPPORT_PRINTF
                printf ("\nCheck URAM %d Error [0x%lx] != [0x%lx]", _UCODEIndex, dwData, dwRAM[_UCODEIndex+START]) ;
#endif
                bRet = FALSE ;
                break ;
            }
        }

        // Step 4 : set URAM write disable
        _WriteInternalRegW_IO(RMADRR,0x0000);
        _WriteInternalRegW_IO(CFR,0x0000);
        W99AV_WriteRegDW(PCR,(WORD)(__wW99AVPCRLow|0x10), __wW99AVPCRHigh);
        W99AV_WriteRegDW(PCR,(WORD)(__wW99AVPCRLow), __wW99AVPCRHigh);
        break ;
    }

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

#endif // #ifdef  CHECK_UCODE_LOAD
    return bRet ;
}

#endif  // #ifdef SUPPORT_GZIP_COMPRESSION

#ifndef SYSTEM_8051
void _ReadUcode(FILE *stream, DWORD *pdwUcodeBuffer)
{
    char ch;
    char *pcFile;
    char *cStopString;
    BYTE bSize = 0;
    WORD wIndex = 0;
    DWORD   *pdwBuffer;

    WORD   TCHCount= 0;

    pdwBuffer = pdwUcodeBuffer;

    pcFile = cFile;

    while (!feof(stream))
    {
        ch = fgetc(stream);

        if ((ch != 10) && (ch != ','))
        {
            *pcFile = (char)ch;
            pcFile++;
            bSize++;
        }

        if ( bSize >= 20 )
        {
            printf ( "**** ERROR...." );
            EXIT_APP_MACRO(); // Chuan 172r 2002/03/29: call EXIT_APP_MACRO() instead of exit(0)
        }

        if (ch == ',')
        {
            wIndex++;
            if (wIndex > 2)
                *pdwBuffer = strtoul(&cFile[2], &cStopString, 16);
            else
                *pdwBuffer = atol(cFile);

            pdwBuffer++;
            TCHCount++;
            pcFile = cFile;
            for (_UCODEIndex = 0; _UCODEIndex < bSize; _UCODEIndex++)
                cFile[_UCODEIndex] = 0;
            bSize = 0;
        }
    }

#ifdef SUPPORT_PRINTF
///    printf ( "\n *** Size = %d * 4 (DWORD unit..." , TCHCount );
#endif
}
#endif

#ifndef SYSTEM_8051
BYTE   _OpenUCODE ( char * pName )
{
    char        ch;
    FILE        * file;
    DWORD       dwLen;

    if( (file = fopen( pName, "r+t" )) == NULL )
    {
#ifdef SUPPORT_PRINTF
        printf ("\nFile (%s) Open failure!", pName );
#endif
        return  FALSE;
    }

    dwLen= 0;
    while ( ! feof(file) )
    {
        ch = fgetc(file);
        if (ch == ',')
            dwLen++;
    }
    //dwLen= (dwLen+ 1)/ 2;     // 2 char == 1 bytes max.

    fseek ( file, NULL, SEEK_SET );

    // Allocate the buffer
    pdwUcode = (DWORD *) _halloc ( dwLen*4, 1);
    if (pdwUcode == NULL)
    {
#ifdef SUPPORT_PRINTF
        printf ("\nUcode allocate buffer error!");
#endif
        fclose ( file );
        return FALSE;
    }

    _ReadUcode ( file, pdwUcode );
    fclose (file);

    dwRAM = pdwUcode;

    return TRUE;
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久一本精品 | 一区二区三区中文在线观看| 色8久久精品久久久久久蜜| 国产真实乱子伦精品视频| 亚洲sss视频在线视频| 国产精品热久久久久夜色精品三区 | 欧美一区二区三区影视| 91黄视频在线观看| 色94色欧美sute亚洲线路一久| 成人精品亚洲人成在线| 国产91富婆露脸刺激对白| 国产精品自拍毛片| 久久精品国产亚洲高清剧情介绍 | 狠狠色丁香久久婷婷综| 蜜桃av一区二区三区电影| 亚洲午夜一区二区| 亚洲一级不卡视频| 狠狠狠色丁香婷婷综合激情| 天天av天天翘天天综合网 | 成人午夜激情视频| 一本色道久久综合亚洲aⅴ蜜桃 | 国产在线视频不卡二| 看电视剧不卡顿的网站| 久久国产精品第一页| 国产麻豆精品久久一二三| 国产精品一区在线观看你懂的| 国产成人午夜精品5599| 日韩一级片在线观看| **性色生活片久久毛片| 免费看精品久久片| 欧美伊人久久大香线蕉综合69| 国产精品伦一区二区三级视频| 日韩国产精品久久久久久亚洲| 成人动漫视频在线| 日本一区二区三区久久久久久久久不| 天天av天天翘天天综合网色鬼国产| 色综合咪咪久久| 国产精品久久久久久久久动漫| 国产精品夜夜嗨| 久久久久久久久久久久电影| 日韩精品91亚洲二区在线观看 | 精品三级av在线| 午夜精品爽啪视频| 欧美日本国产视频| 国产精品不卡一区| 石原莉奈一区二区三区在线观看| 欧美怡红院视频| 日产精品久久久久久久性色| 日韩精品一区二区三区视频在线观看 | 日本大香伊一区二区三区| 亚洲一区视频在线| 欧美人牲a欧美精品| 免费精品视频最新在线| 国产精品乱码妇女bbbb| 色欧美日韩亚洲| 亚洲线精品一区二区三区八戒| 欧美日韩激情一区二区| 成人毛片视频在线观看| 亚洲午夜一区二区| 久久久久久97三级| 日本韩国精品在线| 美洲天堂一区二卡三卡四卡视频| 国产欧美一区二区精品性色| 色综合中文字幕| 韩日av一区二区| 国产精品成人免费精品自在线观看 | 99久久免费精品高清特色大片| 亚洲一本大道在线| 久久精品水蜜桃av综合天堂| 91精品国产一区二区三区香蕉| www.99精品| 国产一区二区免费视频| 中文字幕色av一区二区三区| 欧美精品一区二区三区四区| 欧美日韩日日夜夜| 成人免费视频网站在线观看| 开心九九激情九九欧美日韩精美视频电影| 国产精品视频第一区| 国产精品免费网站在线观看| 欧美成人性福生活免费看| 欧美亚洲综合在线| 99久久久精品| eeuss国产一区二区三区| 成人av综合一区| 国产乱色国产精品免费视频| 久久不见久久见免费视频1| 老色鬼精品视频在线观看播放| 久久av中文字幕片| 盗摄精品av一区二区三区| 国产精品影视在线| 成人app下载| 99精品视频在线播放观看| 成人毛片视频在线观看| 91伊人久久大香线蕉| 欧美亚洲自拍偷拍| 欧美日本韩国一区二区三区视频| 99久久99久久久精品齐齐| 欧美色综合网站| 欧美一区二区三区视频在线| 欧美一区二区三区思思人| 日韩一区二区精品| 国产校园另类小说区| 亚洲精品国产无天堂网2021| 亚洲欧美激情插| 久久精品国产免费| 91免费精品国自产拍在线不卡| 精品视频一区二区不卡| 日本一区二区三区在线观看| 午夜免费欧美电影| av高清不卡在线| 欧美日韩精品专区| 欧美国产日韩亚洲一区| 亚洲国产一区二区三区青草影视| 久久国产成人午夜av影院| 99re成人精品视频| 久久久久久久久久电影| 天天av天天翘天天综合网色鬼国产| 国产精品99久| 欧美日韩精品系列| 亚洲18色成人| 在线免费不卡电影| 免费观看成人av| 欧美人与z0zoxxxx视频| 亚洲欧美色图小说| 99久久免费精品| 有码一区二区三区| 色婷婷一区二区| 亚洲免费观看高清完整版在线观看熊| 国产资源精品在线观看| 中文字幕精品—区二区四季| 国产精品午夜电影| 国产91丝袜在线观看| 337p亚洲精品色噜噜| 免费观看一级欧美片| 久久综合久久99| 99re66热这里只有精品3直播| 国产精品久久久久久福利一牛影视| 国模少妇一区二区三区| 久久夜色精品一区| 99视频精品在线| 亚洲不卡一区二区三区| 国产亚洲人成网站| 国产麻豆视频一区二区| 国产精品高潮呻吟| 欧美日韩一级二级三级| 激情小说亚洲一区| 亚洲蜜臀av乱码久久精品 | 欧美高清在线视频| 色综合久久综合| 久久www免费人成看片高清| 久久久777精品电影网影网 | 欧美www视频| 国产成人综合网站| 亚洲制服丝袜av| 亚洲精品在线免费播放| 不卡大黄网站免费看| 亚洲一区二区三区中文字幕| 精品精品国产高清一毛片一天堂| 97aⅴ精品视频一二三区| 亚洲成人av在线电影| 国产肉丝袜一区二区| 色婷婷综合激情| 国产在线精品一区二区三区不卡| 亚洲精品一二三四区| 国产亚洲欧美日韩在线一区| 色屁屁一区二区| 国产一区二区调教| 五月婷婷色综合| 亚洲www啪成人一区二区麻豆| 久久综合久久鬼色中文字| 欧美久久久久中文字幕| 在线免费观看一区| 成人av资源在线观看| 91丨porny丨在线| 色视频欧美一区二区三区| 国产91精品一区二区麻豆亚洲| 韩国午夜理伦三级不卡影院| 久久97超碰国产精品超碰| 日本v片在线高清不卡在线观看| 一区二区高清视频在线观看| 亚洲欧美日韩国产综合在线| 欧美国产视频在线| 综合色天天鬼久久鬼色| 亚洲精品免费视频| 亚洲国产成人va在线观看天堂 | 国产风韵犹存在线视精品| 石原莉奈一区二区三区在线观看| 三级不卡在线观看| 国产在线视频一区二区三区| 蜜臀国产一区二区三区在线播放 | 国产欧美综合在线观看第十页| 国产精品伦理在线| 香蕉成人啪国产精品视频综合网| 美女网站视频久久| 国产91清纯白嫩初高中在线观看| 99久久久免费精品国产一区二区| 91精品国产综合久久久久久久久久 | yourporn久久国产精品| 91精品麻豆日日躁夜夜躁| 国产欧美日韩三区|