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

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

?? cycle_u.c

?? Utils and test SD card read write cycles
?? C
字號:
#include "Cycle.h"

/*****************************************************************************
* Function name:  STATUS_T createBG_buffer(int *sector)
*
* Description : This function Evaluate a 512 buffer with BG pattern
* 
* Parameters:   sector: The buffer that included the pattern 
*
* Return:      STATUS_T
* 
****************************************************************************/ 

STATUS_T createBG_buffer(int *sector)
{
    unsigned int i;

    for (i = 0; i < SECTOR_SIZE; i++)
    {
        *sector++ = BG_PATTERN;
    }
    return OK;
}

/*****************************************************************************
* Function name:  STATUS_T createNUP_buffer(int *sector)
*
* Description : This function Evaluate a 512 buffer with NUP pattern
* 
* Parameters:   sector: The buffer that included the pattern 
*
* Return:      STATUS_T
* 
****************************************************************************/ 
STATUS_T createNUP_buffer(int *sector)
{
    unsigned int i;

    for (i = 0; i < (SECTOR_SIZE - 2); i += 5)
    {
        *sector++ = NUP_PATTERN_1;
        *sector++ = NUP_PATTERN_2;
        *sector++ = NUP_PATTERN_3;
        *sector++ = NUP_PATTERN_4;
        *sector++ = NUP_PATTERN_5;
    }
    *sector++ = NUP_PATTERN_1;
    *sector++ = NUP_PATTERN_2;
    return OK;
}

/*****************************************************************************
* Function name:  STATUS_T createBG_buffer(int *sector)
*
* Description : This function Evaluate a 512 buffer with BG pattern
* 
* Parameters:   sector: The buffer that included the pattern 
*
* Return:      STATUS_T
* 
****************************************************************************/ 
STATUS_T ProgramBG(int *phasecounter)
{
    unsigned int Overhead;
    unsigned int index;
    STATUS_T ret = OK;

    Overhead = 0;
    WRITE_BACK_PTR(Overhead, 0);
    createBG_buffer(cycBuffer_ref);

    for (index = 1; index < NumberOfSectors; index++)
    {
        ret |= WriteSector(&index, cycBuffer_ref, Overhead);
        if (ret)
        {
            ret |= RegisterCycError(index, ret, PROGRAM_BG, phasecounter);
            ret |= RegisterBBError(index, phasecounter);
        }
    }

    for (index = 1; index < NumberOfSectors; index++)
    {
        ret |= ReadSectorFromFlash(index, (unsigned char *)cycBuffer_read);
        ret |= CheckSector((unsigned int *) cycBuffer_ref, (unsigned int *) cycBuffer_read) ;
        if (ret)
        {
            ret |= RegisterCycError(index, ret, PROGRAM_BG, phasecounter);
        }
    }
    *phasecounter++;

    return OK;
}

/*****************************************************************************
* Function name:  STATUS_T Cycle(int statrtBlock, int NumberOfBlocks)
*
* Description : This function write read and verify NumberOfBlocks  
* 
* Parameters:  statrtBlock      - statrt Block 
*              NumberOfBlocks   - Number Of Blocks
*
* Return:      STATUS_T
* 
****************************************************************************/ 
STATUS_T  Cycle(int statrtBlock, int NumberOfBlocks, int *phasecounter)
{
    STATUS_T ret = OK;
    unsigned int Overhead = 0;
    int index;
    
    ret |= EraseBlocks(statrtBlock, NumberOfBlocks, phasecounter);
    for (index = statrtBlock; index < NumberOfBlocks; index++)
    {
        ret |= WriteSector(&index, cycBuffer_ref, Overhead);
        if (ret)
        {
            ret |= RegisterCycError(index, ret, CYCLE, phasecounter);
            ret |= RegisterBBError(index, phasecounter);
        }
    }

    for (index = statrtBlock; index < NumberOfBlocks; index++)
    {
        ret |= ReadSectorFromFlash(index, (unsigned char *)cycBuffer_read);
        ret |= CheckSector((unsigned int *) cycBuffer_ref, (unsigned int *) cycBuffer_read) ;
        if (ret)
        {
            ret |= RegisterCycError(index, ret, CYCLE, phasecounter);
        }

    }
    *phasecounter++;
    return ret;
}

/*****************************************************************************
* Function name:  STATUS_T Cycle25()
*
* Description : This function cycle 600 times 25% of the card capacity  
* 
* Parameters:   
*
* Return:      STATUS_T
* 
****************************************************************************/ 
STATUS_T Cycle25(int *phasecounter)
{
    int statrtBlock; 
    int NumberOfBlocks;
    int sector[SECTOR_SIZE_INT];
    int cycle_no;
    STATUS_T ret = OK;

    statrtBlock = 1;
    NumberOfBlocks = 1 << 15;
    createNUP_buffer(sector);
    for (cycle_no = 1; cycle_no <= 600; cycle_no++)
    {
        ret |= Cycle(0, NumberOfBlocks, &phasecounter);
        
        if (NumberOfSectors > (1 << 17))
        {
            ret |= Cycle(1 << 17, NumberOfBlocks, &phasecounter);
        }
        if (NumberOfSectors > (1 << 18))
        {
            ret |= Cycle(2 << 17, NumberOfBlocks, &phasecounter);
            ret |= Cycle(3 << 17, NumberOfBlocks, &phasecounter);
        }
        if (NumberOfSectors > (1 << 19))
        {
            ret |= Cycle(4 << 17, NumberOfBlocks, &phasecounter);
            ret |= Cycle(5 << 17, NumberOfBlocks, &phasecounter);
            ret |= Cycle(6 << 17, NumberOfBlocks, &phasecounter);
            ret |= Cycle(7 << 17, NumberOfBlocks, &phasecounter);
        }
    }
    return ret;
}


/*****************************************************************************
* Function name:  STATUS_T RternPre()
*
* Description : This function execute pre retention actions. 
*               It erase all the SD flash memory and write BG pattern on it.
* 
* Parameters:   
*
* Return:      STATUS_T
* 
****************************************************************************/ 

STATUS_T RternPre(int *phasecounter)
{
    int statrtBlock; 
    unsigned int index;
    unsigned int Overhead = 0;
    STATUS_T ret = OK;
    
    statrtBlock = 1;
    ret |= EraseBlocks(statrtBlock, NumberOfSectors, phasecounter);
    ret |= createBG_buffer(cycBuffer_ref);

    for (index = 1; index < NumberOfSectors; index++)
    {
        ret |= WriteSector(&index, cycBuffer_ref, Overhead);
        if (ret)
        {
            ret |= RegisterCycError(index, ret, RETEN_PRE, phasecounter);
            ret |= RegisterBBError(index, phasecounter);
        }

    }
    *phasecounter++;
    return ret;
}

/*****************************************************************************
* Function name:  STATUS_T RDAfterReten()
*
* Description : This function execute after retention actions. 
*               It read and check all the buffers on the SD flash memeory.
* 
* Parameters:   
*
* Return:      STATUS_T
* 
****************************************************************************/ 

STATUS_T RDAfterReten(int *phasecounter)
{
    unsigned int index;
    int raedSectorBuffer[SECTOR_SIZE_INT];
    unsigned int Overhead = 0;
    STATUS_T ret = OK;
    
    createBG_buffer(cycBuffer_ref);

    for (index = 1; index < NumberOfSectors; index++)
    {
        ret |= ReadSectorFromFlash(index, (unsigned char *)raedSectorBuffer);
        ret |= CheckSector((unsigned int *) raedSectorBuffer, (unsigned int *) cycBuffer_ref) ;
        if (ret)
        {
            ret |= RegisterCycError(index, ret, RETEN_PRE, phasecounter);
        }
    }
    *phasecounter++;
    return ret;
}

/*****************************************************************************
* Function name:  STATUS_T TestAfterReten()
*
* Description : This function test after retention actions. 
*               It write and check all the buffers on the SD flash memeory.
* 
* Parameters:   
*
* Return:      STATUS_T
* 
****************************************************************************/ 
STATUS_T TestAfterReten(int *phasecounter)
{
    int statrtBlock = 0; 
    unsigned int index;
    int raedSectorBuffer[SECTOR_SIZE_INT];
    unsigned int Overhead = 0;
    STATUS_T ret = OK;

    EraseBlocks(statrtBlock, NumberOfSectors, phasecounter);
    for (index = 1; index < NumberOfSectors; index++)
    {
        ret |= WriteSector(&index, cycBuffer_ref, Overhead);
        if (ret)
        {
            ret |= RegisterCycError(index, ret, RETEN_PRE, phasecounter);
            ret |= RegisterBBError(index, phasecounter);
        }
    }

    for (index = 1; index < NumberOfSectors; index++)
    {
        ret |= ReadSectorFromFlash(index, (unsigned char *)raedSectorBuffer);
        ret |= CheckSector((unsigned int *) raedSectorBuffer, (unsigned int *) cycBuffer_ref) ;
        if (ret)
        {
            ret |= RegisterCycError(index, ret, RETEN_PRE, phasecounter);
        }
    }
    *phasecounter++;
    return OK;
}

/*****************************************************************************
* Function name:  STATUS_T EraseFW()
*
* Description : This function erase all SD flash memory
* 
* Parameters:   
*
* Return:      STATUS_T
* 
****************************************************************************/ 
STATUS_T EraseFW(int *phasecounter)
{
    int statrtBlock = 0; 
    STATUS_T ret = OK;

    ret |= EraseBlocks(statrtBlock, NumberOfSectors, phasecounter);

    return ret;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区日韩| 国产乱码精品1区2区3区| 国产精品网站一区| 欧美成人a视频| 欧美电影免费观看高清完整版在 | 午夜在线成人av| 亚洲精品高清在线| 精品日本一线二线三线不卡| 亚洲精选在线视频| 免费精品视频最新在线| 91免费版pro下载短视频| 亚洲夂夂婷婷色拍ww47| 精品999久久久| 日韩欧美在线影院| 精品黑人一区二区三区久久 | 精品国产精品一区二区夜夜嗨| 69堂国产成人免费视频| 337p亚洲精品色噜噜狠狠| 欧美一区二区三区四区视频| 欧美一区二区美女| 国产日韩欧美a| 亚洲激情图片小说视频| 日韩精品欧美成人高清一区二区| 亚洲一区二区欧美| 成人精品一区二区三区中文字幕| 91麻豆国产福利在线观看| 亚洲另类在线一区| 日韩专区在线视频| 国产在线视视频有精品| 99久久精品免费精品国产| 欧美最猛黑人xxxxx猛交| 欧美精三区欧美精三区| 久久综合九色综合97_久久久 | 爽爽淫人综合网网站| 久久国内精品自在自线400部| 国产真实乱偷精品视频免| 成人av电影在线| 欧美美女一区二区在线观看| 26uuu另类欧美| 亚洲图片欧美视频| 福利电影一区二区| 91精品欧美久久久久久动漫| 中文av一区二区| 亚洲电影一区二区三区| 国产精品1区2区| 在线观看91av| 中文字幕一区视频| 加勒比av一区二区| 91久久线看在观草草青青| 精品免费国产一区二区三区四区| 18成人在线视频| 国内成人精品2018免费看| 在线精品国精品国产尤物884a| 精品成人一区二区三区| 亚洲一二三区视频在线观看| 国产美女视频91| 91精品国产91热久久久做人人| 蜜臂av日日欢夜夜爽一区| 一本久道中文字幕精品亚洲嫩| www久久精品| 久久精品99国产精品日本| 国产精品一区二区久激情瑜伽| 美女在线视频一区| 日韩免费高清视频| 日韩伦理av电影| 国产福利一区在线| 精品国产一区二区国模嫣然| 亚洲不卡在线观看| 欧美午夜精品理论片a级按摩| 国产精品国产三级国产a| 国产成人高清在线| 久久久久久电影| 国内精品嫩模私拍在线| 精品理论电影在线| 精品系列免费在线观看| 日韩美女一区二区三区四区| 日韩电影免费在线观看网站| 欧美色精品在线视频| 亚洲女性喷水在线观看一区| 成人激情图片网| 亚洲图片你懂的| 色伊人久久综合中文字幕| 亚洲另类春色国产| 欧美日韩三级视频| 天天综合色天天综合| 4438成人网| 日韩成人免费电影| 欧美成人精品福利| 国产经典欧美精品| 中文字幕一区二区三区在线不卡| 欧美一级黄色大片| 日本系列欧美系列| 久久久久久97三级| 91在线你懂得| 图片区日韩欧美亚洲| 精品美女一区二区| 成人爱爱电影网址| 亚洲欧美日韩国产成人精品影院| 在线精品视频免费播放| 视频一区在线播放| 久久久三级国产网站| av在线这里只有精品| 亚洲精品视频在线看| 欧美一级夜夜爽| 成人夜色视频网站在线观看| 一区二区三区国产| 欧美一级二级在线观看| 国产aⅴ综合色| 亚洲成人av免费| 久久亚洲综合色一区二区三区| 成人丝袜18视频在线观看| 亚洲综合激情小说| 亚洲综合丁香婷婷六月香| 日韩一区二区中文字幕| 成人久久18免费网站麻豆| 午夜久久福利影院| 国产精品卡一卡二卡三| 这里是久久伊人| 成人h精品动漫一区二区三区| 亚洲午夜在线电影| 中文字幕乱码一区二区免费| 欧美丰满嫩嫩电影| 99久久国产免费看| 国产一区二区在线观看视频| 亚洲欧美国产三级| 欧美不卡视频一区| 在线一区二区三区做爰视频网站| 奇米888四色在线精品| 亚洲三级理论片| 久久久蜜臀国产一区二区| 在线观看亚洲精品| 岛国av在线一区| 麻豆精品视频在线观看免费| 一区二区三区蜜桃| 1区2区3区精品视频| wwwwxxxxx欧美| 欧美一区二区人人喊爽| 欧美性猛交xxxx乱大交退制版| 高清成人在线观看| 久久99精品国产.久久久久久| 午夜精品久久久久久| 一区av在线播放| 亚洲精品久久久蜜桃| 中文久久乱码一区二区| 久久午夜国产精品| 精品乱人伦一区二区三区| 在线播放欧美女士性生活| 欧美亚洲图片小说| 欧美性猛交xxxxxx富婆| 91视频com| fc2成人免费人成在线观看播放| 国产麻豆精品95视频| 国模娜娜一区二区三区| 裸体健美xxxx欧美裸体表演| 亚洲一卡二卡三卡四卡无卡久久 | 国产精品一区二区在线看| 日本不卡一区二区三区高清视频| 亚洲私人黄色宅男| 亚洲人成小说网站色在线| 亚洲蜜臀av乱码久久精品蜜桃| 中文字幕一区二区在线观看| 成人免费在线视频观看| 亚洲精品视频免费看| 亚洲最快最全在线视频| 亚洲a一区二区| 视频一区视频二区在线观看| 丝袜脚交一区二区| 国产综合色精品一区二区三区| 国产一区二区三区电影在线观看| 国产一区二区三区香蕉| 成人美女在线观看| 欧美午夜在线一二页| 日韩欧美在线综合网| 久久精品综合网| 亚洲婷婷综合色高清在线| 亚洲va欧美va天堂v国产综合| 五月综合激情日本mⅴ| 国产一区二区三区免费播放| 成人在线一区二区三区| 色综合色狠狠天天综合色| 欧美一卡二卡在线| 欧美激情一区二区| 亚洲精品国产a久久久久久| 92国产精品观看| 欧美一区二区视频免费观看| 国产日韩欧美精品一区| 亚洲一级片在线观看| 精品一区二区三区蜜桃| 91片黄在线观看| 日韩一级片网站| 亚洲欧洲一区二区在线播放| 亚洲成人资源在线| 国产精品亚洲第一区在线暖暖韩国| www.激情成人| 欧美一激情一区二区三区| 国产精品私人影院| 美女爽到高潮91| 色综合色狠狠天天综合色| 337p粉嫩大胆噜噜噜噜噜91av | 色噜噜偷拍精品综合在线|