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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fmd.cpp

?? 這是由長(zhǎng)高科技的開發(fā)平臺(tái)
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):

            //  Special case to handle un-aligned buffer pointer.
            if( ((DWORD) pSectorBuff) & 0x3) 
            {
                WrPage512Unalign (pSectorBuff);
            }
            else
            {
                WrPage512(pSectorBuff);                // Write page/sector data.
            }

            // Write the SectorInfo data to the media.
            //
            if(pSectorInfoBuff)
            {
                WrPageInfo((PBYTE)pSectorInfoBuff);
                pSectorInfoBuff++;

            }
            else    // Make sure we advance the Flash's write pointer (even though we aren't writing the SectorInfo data)
            {
                BYTE TempInfo[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
                WrPageInfo(TempInfo);
            }
            pSectorBuff += NAND_PAGE_SIZE;
        }
            
        NF_CMD(CMD_WRITE2);                    // Send write confirm command.
        NF_WAITRB();                        // Wait for command to complete.

        Status = NF_RDDATA();
        if (Status & 1)
        {
            SetKMode (bLastMode);
            // EdbgOutputDebugString("ERROR: FMD_WriteSector: failed sector write.\r\n");
            return(FALSE);
        }

        ++SectorAddr;
    }

    NF_nFCE_H();                            // Deselect the flash chip.

    SetKMode (bLastMode);
    return(TRUE);
}


VOID FMD_PowerUp(VOID)
{
}


VOID FMD_PowerDown(VOID)
{
}

BOOL FMD_OEMIoControl(DWORD dwIoControlCode, PBYTE pInBuf, DWORD nInBufSize, PBYTE pOutBuf, DWORD nOutBufSize, PDWORD pBytesReturned)
{
    return(TRUE);
}

BOOL FMD_Deinit(PVOID hFMD)
{
    return(TRUE);
}


/*
    @func   BOOL | FMD_GetInfo | Provides information on the NAND flash.
    @rdesc  TRUE = Success, FALSE = Failure.
    @comm    
    @xref   
*/
BOOL FMD_GetInfo(PFlashInfo pFlashInfo)
{

    if (!pFlashInfo)
        return(FALSE);

    pFlashInfo->flashType            = NAND;
    pFlashInfo->wDataBytesPerSector = NAND_PAGE_SIZE;
    pFlashInfo->dwNumBlocks         = NAND_BLOCK_CNT;
    pFlashInfo->wSectorsPerBlock    = NAND_PAGE_CNT;
    pFlashInfo->dwBytesPerBlock        = (pFlashInfo->wSectorsPerBlock * pFlashInfo->wDataBytesPerSector);

    return(TRUE);
}


static BOOL IsBlockBad(BLOCK_ID blockID)
{
    BYTE Data;
    SECTOR_ADDR blockPage = (blockID * NAND_PAGE_CNT);

    BOOL bLastMode = SetKMode(TRUE);

    NF_nFCE_L();            // Select the flash chip.
    NF_CMD(CMD_RESET);        // Send reset command.
    NF_WAITRB();            // Wait for flash to complete command.
    NF_CMD(CMD_READ2);        // Send read confirm command.
    NF_ADDR(0);                            // Column = 0.
    NF_ADDR(blockPage         & 0xff);    /* The mark of bad block is in 0 page   */
    NF_ADDR((blockPage >>  8) & 0xff);  /* For block number A[24:17]            */
    NF_ADDR((blockPage >> 16) & 0xff);  /* For block number A[25]               */
    NF_WAITRB();            // Wait for flash to complete command.

    // TODO
    Data = NF_RDDATA();        // Read command status.
    Data = NF_RDDATA();        // Read command status.
    Data = NF_RDDATA();        // Read command status.
    Data = NF_RDDATA();        // Read command status.
    Data = NF_RDDATA();        // Read command status.
    Data = NF_RDDATA();        // Read command status.

    if(0xff != Data)
    {
        SetKMode (bLastMode);
        return(TRUE);
    }

    NF_nFCE_H();            // Deassert the flash chip.

    SetKMode (bLastMode);
   
    return(FALSE);
}


/*
    @func   DWORD | FMD_GetBlockStatus | Returns the status of the specified block.
    @rdesc  Block status (see fmd.h).
    @comm    
    @xref   
*/
DWORD FMD_GetBlockStatus(BLOCK_ID blockID)
{
    SECTOR_ADDR Sector = (blockID * NAND_PAGE_CNT);
    SectorInfo SI;
    DWORD dwResult = 0;
    
    if (IsBlockBad(blockID))
        return BLOCK_STATUS_BAD;

    if (!FMD_ReadSector(Sector, NULL, &SI, 1)) 
        return BLOCK_STATUS_UNKNOWN;

    if (!(SI.bOEMReserved & OEM_BLOCK_READONLY))  
        dwResult |= BLOCK_STATUS_READONLY;

    if (!(SI.bOEMReserved & OEM_BLOCK_RESERVED))  
        dwResult |= BLOCK_STATUS_RESERVED;

    return(dwResult);
}


/*
    @func   BOOL | MarkBlockBad | Marks the specified block as bad.
    @rdesc  TRUE = Success, FALSE = Failure.
    @comm    
    @xref   
*/
static BOOL MarkBlockBad(BLOCK_ID blockID)
{
    BYTE Status;
    ULONG blockPage = (blockID * NAND_PAGE_CNT);    // Convert block address to page address.

    BOOL bLastMode = SetKMode(TRUE);

    NF_nFCE_L();            // Select the flash chip.
    NF_CMD(CMD_RESET);        // Send reset command.
    NF_WAITRB();            // Wait for flash to complete command.
    NF_CMD(CMD_READ2);        // Send read confirm command.
    NF_CMD(CMD_WRITE);        // Send write command.
    NF_ADDR(0);                            // Column = 0.
    NF_ADDR(blockPage         & 0xff);    /* The mark of bad block is in 0 page   */
    NF_ADDR((blockPage >>  8) & 0xff);  /* For block number A[24:17]            */
    NF_ADDR((blockPage >> 16) & 0xff);  /* For block number A[25]               */

    // TODO
    NF_WRDATA(0xFF);            // Write bad block marker.
    NF_WRDATA(0xFF);            // Write bad block marker.
    NF_WRDATA(0xFF);            // Write bad block marker.
    NF_WRDATA(0xFF);            // Write bad block marker.
    NF_WRDATA(0xFF);            // Write bad block marker.

    NF_WRDATA(0);            // Write bad block marker.
    NF_CMD(CMD_WRITE2);        // Send write confirm command.
    NF_WAITRB();            // Wait for flash to complete command.

    Status = NF_RDDATA();    // Read command status.
    NF_nFCE_H();            // Deassert the flash chip.

    SetKMode (bLastMode);
    return((Status & 1) ? FALSE : TRUE);
}

/*
    @func   BOOL | FMD_SetBlockStatus | Marks the block with the specified block status.
    @rdesc  TRUE = Success, FALSE = Failure.
    @comm    
    @xref   
*/
BOOL FMD_SetBlockStatus(BLOCK_ID blockID, DWORD dwStatus)
{
    if (dwStatus & BLOCK_STATUS_BAD)
    {
        if (!MarkBlockBad(blockID))
            return(FALSE);
    }

    if (dwStatus & (BLOCK_STATUS_READONLY | BLOCK_STATUS_RESERVED)) {
        
        SECTOR_ADDR Sector = blockID * NAND_PAGE_CNT;
        SectorInfo SI;

        if (!FMD_ReadSector(Sector, NULL, &SI, 1)) {
            return FALSE;
        }

        if (dwStatus & BLOCK_STATUS_READONLY) {
            SI.bOEMReserved &= ~OEM_BLOCK_READONLY;
        }
        
        if (dwStatus & BLOCK_STATUS_RESERVED) {
            SI.bOEMReserved &= ~OEM_BLOCK_RESERVED;
        }

        if (!FMD_WriteSector (Sector, NULL, &SI, 1)) {
            return FALSE;
        }

    }    
    
    return(TRUE);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性色aⅴ视频一区日韩精品| 亚洲欧美日韩综合aⅴ视频| 国产精品毛片无遮挡高清| 亚洲欧美日韩在线| 日本欧美韩国一区三区| 精品系列免费在线观看| 97国产一区二区| 欧美性xxxxx极品少妇| 精品久久久久一区二区国产| 中文字幕中文字幕一区| 日韩精品久久久久久| 成人免费的视频| 欧美三级乱人伦电影| 久久久久久久久99精品| 亚洲影院理伦片| 国产伦理精品不卡| 欧美日韩一区二区在线视频| 国产午夜精品久久久久久免费视| 亚洲国产视频a| 三级亚洲高清视频| 不卡av在线网| 国产精品一区二区免费不卡| 在线欧美小视频| 中文字幕亚洲欧美在线不卡| 国产精品一二三四五| 日韩欧美国产一区二区在线播放 | 99久久精品久久久久久清纯| 日韩精品自拍偷拍| 五月综合激情日本mⅴ| 91久久久免费一区二区| 中文字幕视频一区| 国产mv日韩mv欧美| xfplay精品久久| 蜜桃视频第一区免费观看| 欧美日韩情趣电影| 亚洲国产视频在线| 在线观看成人小视频| 亚洲欧洲制服丝袜| 99久久国产综合精品色伊| 国产午夜精品美女毛片视频| 国产盗摄女厕一区二区三区| 久久伊人蜜桃av一区二区| 奇米影视在线99精品| 日韩一区二区三区三四区视频在线观看| 亚洲福利视频导航| 欧美无人高清视频在线观看| 亚洲精品一卡二卡| 色拍拍在线精品视频8848| 中文字幕一区三区| 99久久99久久精品免费看蜜桃| 中文字幕一区三区| 91小视频在线免费看| 亚洲人成7777| 日本二三区不卡| 亚洲最新视频在线播放| 欧美天天综合网| 日韩影院在线观看| 日韩视频一区二区| 国产呦萝稀缺另类资源| 国产婷婷色一区二区三区| 国产不卡视频一区二区三区| 国产精品久久久久久久久动漫| 不卡在线观看av| 亚洲精品写真福利| 欧美午夜精品久久久久久孕妇| 亚洲午夜精品17c| 欧美一区二区三区喷汁尤物| 精品亚洲国内自在自线福利| 久久综合色播五月| 成人黄色综合网站| 一区二区在线免费观看| 欧美群妇大交群的观看方式| 欧美96一区二区免费视频| 精品日韩一区二区三区| 成人性生交大片免费看中文网站| 中文字幕一区二区三区精华液| 欧美影院午夜播放| 日本最新不卡在线| 国产亚洲欧美日韩日本| 97精品视频在线观看自产线路二| 亚洲一区二区欧美日韩| 日韩欧美高清dvd碟片| 国产一区久久久| ...xxx性欧美| 欧美精品aⅴ在线视频| 久久99国产精品尤物| 亚洲欧洲韩国日本视频| 欧美日韩aaaaaa| 国产最新精品精品你懂的| 亚洲视频综合在线| 欧美丰满高潮xxxx喷水动漫| 国产麻豆精品久久一二三| 亚洲男人的天堂在线aⅴ视频| 欧美一级夜夜爽| 国产精品91xxx| 一区二区三区美女| 精品人在线二区三区| a亚洲天堂av| 麻豆精品一区二区综合av| 国产精品激情偷乱一区二区∴| 欧美日韩一级片在线观看| 国产精品88av| 午夜成人免费视频| 国产欧美日本一区二区三区| 91免费精品国自产拍在线不卡 | 精品国产一区二区三区四区四| hitomi一区二区三区精品| 午夜欧美视频在线观看| 国产婷婷色一区二区三区在线| 欧美精品黑人性xxxx| 99热在这里有精品免费| 久久超碰97中文字幕| 日韩美女久久久| 337p粉嫩大胆色噜噜噜噜亚洲| 91久久香蕉国产日韩欧美9色| 国产一区二区三区不卡在线观看 | 欧美激情在线一区二区三区| 欧美日韩视频专区在线播放| 成人a免费在线看| 视频精品一区二区| 成人欧美一区二区三区| 精品对白一区国产伦| 欧美日韩一区成人| 91亚洲精品久久久蜜桃网站| 国产一区在线精品| 日本欧美加勒比视频| 一区二区理论电影在线观看| 国产欧美日韩精品一区| 欧美一区二视频| 欧美日韩aaa| 91福利精品视频| 北条麻妃一区二区三区| 国产精品一区二区x88av| 天天综合色天天综合| 一区二区在线电影| 中文字幕一区在线观看视频| 国产丝袜美腿一区二区三区| 日韩免费高清视频| 久久麻豆一区二区| 日韩一区二区麻豆国产| 欧美日韩亚洲国产综合| 一本色道久久综合精品竹菊| 成人精品免费看| 国产精品一区专区| 国内精品写真在线观看| 久久精品国产一区二区三区免费看| 亚洲va欧美va人人爽| 亚洲一区在线视频| 一卡二卡三卡日韩欧美| 亚洲激情自拍偷拍| ㊣最新国产の精品bt伙计久久| 欧美国产亚洲另类动漫| 久久久午夜精品理论片中文字幕| 26uuu精品一区二区三区四区在线| 6080yy午夜一二三区久久| 欧美天天综合网| 欧美日韩mp4| 欧美精品v日韩精品v韩国精品v| 欧美视频中文字幕| 欧美日韩一区二区三区四区五区| 色一情一乱一乱一91av| aaa欧美色吧激情视频| 99久久精品免费| 色欧美日韩亚洲| 欧美中文字幕不卡| 欧美日韩亚洲综合一区二区三区| 欧美日韩亚洲另类| 欧美群妇大交群的观看方式| 欧美日韩高清一区二区不卡| 欧美精品vⅰdeose4hd| 欧美一区在线视频| 欧美电视剧在线观看完整版| 精品国产一区二区三区忘忧草| 久久婷婷一区二区三区| 久久久亚洲午夜电影| 国产视频视频一区| 国产精品美女久久久久久久久久久 | 久久99九九99精品| 国产一区二区三区在线观看精品| 国产在线一区二区| 国产91精品免费| 中文字幕第一区第二区| 欧美一级爆毛片| 精品国产一区二区三区久久影院 | 欧美日韩国产天堂| 在线不卡免费欧美| 精品国产乱码久久久久久夜甘婷婷 | 暴力调教一区二区三区| 成人av在线电影| 在线一区二区三区四区五区| 7777精品伊人久久久大香线蕉完整版 | 91成人网在线| 日韩精品乱码免费| 国产老妇另类xxxxx| 北岛玲一区二区三区四区| 欧美性感一类影片在线播放| 欧美一卡二卡三卡| 国产日产欧美一区| 一区二区三区在线观看国产| 日韩高清一级片|