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

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

?? rwsec.c

?? 基于lpc2378的SD/MMC卡讀寫(xiě)程序
?? C
字號(hào):
/****************************************Copyright (c)**************************************************
**                               廣州周立功單片機(jī)發(fā)展有限公司
**                                     研    究    所
**                                        ARM開(kāi)發(fā)組
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: disk.c
**創(chuàng)   建   人: 陳明計(jì)
**最后修改日期: 2004年3月11日
**描        述: FAT文件系統(tǒng)關(guān)于cache管理的部分
**              
**--------------歷史版本信息----------------------------------------------------------------------------
** 創(chuàng)建人: 陳明計(jì)
** 版  本: V1.0
** 日 期: 2003年9月3日
** 描 述: 原始版本
**
**--------------當(dāng)前版本修訂------------------------------------------------------------------------------
** 修改人: 陳明計(jì)
** 日 期: 2004年4月10日
** 描 述: 增加注釋
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define IN_RWSEC
#include "config.h"
Disk_cache DiskCache[MAX_DISK_CACHES];      /* 磁盤cache */

/*********************************************************************************************************
** 函數(shù)名稱: CacheInit
** 功能描述: 初始化磁盤cache
**
** 輸 入: 無(wú)
**
** 輸 出: 無(wú)
**         
** 全局變量: DiskCache
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2003年9月3日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計(jì)
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void CacheInit(void)
{
    uint16 i;
    
    for (i = 0; i < MAX_DISK_CACHES; i++)
    {
        DiskCache[i].Drive = EMPTY_DRIVE;   /* cache空閑 */
        DiskCache[i].Flag = 0;              /* 扇區(qū)無(wú)需回寫(xiě) */
        DiskCache[i].RW_ID = 0;             /* 訪問(wèn)紀(jì)錄 */
        DiskCache[i].RW_ID--;               /* 訪問(wèn)紀(jì)錄 */
        DiskCache[i].SecIndex = 0;          /* 緩沖的扇區(qū)號(hào)  */
    }
}


/*********************************************************************************************************
** 函數(shù)名稱: CloseSec
** 功能描述: 解鎖指定cache(允許切換出內(nèi)存)
**
** 輸 入: Drive:邏輯驅(qū)動(dòng)器號(hào)
**        Index:緩沖的扇區(qū)號(hào)
** 輸 出: 無(wú)
**         
** 全局變量: DiskCache
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2003年9月3日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計(jì)
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void CloseSec(uint8 Drive, uint32 Index)
{
    Drive = Drive;
    Index = Index;
}

/*********************************************************************************************************
** 函數(shù)名稱: CacheWriteBack2
** 功能描述: 把指定扇區(qū)寫(xiě)回邏輯盤
**
** 輸 入: Index:cache索引
**
** 輸 出: 無(wú)
**         
** 全局變量: DiskCache
** 調(diào)用模塊: GetDiskInfo
**
** 作 者: 陳明計(jì)
** 日 期: 2003年9月3日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計(jì)
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void CacheWriteBack2(uint16 Index)
{
    Disk_RW_Parameter Pa;
    Disk_Info * Disk;

    Disk = GetDiskInfo(DiskCache[Index].Drive);     // 獲取邏輯盤信息
    if (Disk != NULL)
    if (Disk->DiakCommand != NULL)
    {
        DiskCache[Index].Flag &= ~CACHE_WRITED;     // cache 不再需要回寫(xiě)
        /* 傳遞參數(shù) */
        Pa.Drive = DiskCache[Index].Drive;               
        Pa.SectorIndex = DiskCache[Index].SecIndex;
        Pa.RsvdForLow = Disk->RsvdForLow;
        Pa.Buf = DiskCache[Index].buf;
        
        Disk->DiakCommand(DISK_WRITE_SECTOR, &Pa);  /* 調(diào)用底層驅(qū)動(dòng)寫(xiě)扇區(qū) */ 
    }
}

/*********************************************************************************************************
** 函數(shù)名稱: CacheWriteBack
** 功能描述: 把指定cache寫(xiě)回邏輯盤
**
** 輸 入: Drive:邏輯驅(qū)動(dòng)器號(hào)
**        Index:緩沖的扇區(qū)號(hào)
** 輸 出: 無(wú)
**         
** 全局變量: DiskCache
** 調(diào)用模塊: CacheWriteBack2
**
** 作 者: 陳明計(jì)
** 日 期: 2003年9月3日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計(jì)
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
       void CacheWriteBack(uint8 Drive, uint32 Index)
{
    uint16 i;
    
    for (i = 0; i < MAX_DISK_CACHES; i++)
    {
        if (DiskCache[i].Drive == Drive)
        if (DiskCache[i].SecIndex == Index)
        {
            if ((DiskCache[i].Flag & CACHE_WRITED) != 0)
            {
                CacheWriteBack2(i);
            }
            break;
        }
    }
}

/*********************************************************************************************************
** 函數(shù)名稱: AllCacheWriteBack
** 功能描述: 把所有已改變的扇區(qū)寫(xiě)回邏輯盤
**
** 輸 入: 無(wú)
**
** 輸 出: 無(wú)
**         
** 全局變量: DiskCache
** 調(diào)用模塊: CacheWriteBack2
**
** 作 者: 陳明計(jì)
** 日 期: 2003年9月3日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計(jì)
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
       void AllCacheWriteBack(void)
{
    uint16 i;

    for (i = 0; i < MAX_DISK_CACHES; i++)
    {
        if ((DiskCache[i].Flag & CACHE_WRITED) != 0)
        {
            CacheWriteBack2(i);
        }
    }
}

/*********************************************************************************************************
** 函數(shù)名稱: GetCache
** 功能描述: 獲取一個(gè)cache
**
** 輸 入: 無(wú)
**
** 輸 出: cache索引
**         
** 全局變量: DiskCache
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2003年9月3日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計(jì)
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint16 GetCache(void)
{
    uint16 Max;
    uint16 i,j;

    Max = 0;
    j = 0;
    j--;
    for (i = 0; i < MAX_DISK_CACHES; i++)
    {
        if (Max <= DiskCache[i].RW_ID)
        {
            Max = DiskCache[i].RW_ID;
            j = i;
        }
        if (Max == (uint16)(-1))
        {
            break;
        }
    }
    if (j < MAX_DISK_CACHES)	/*j為Cache中DiskCache[i].RW_ID次數(shù)最多的*/
    {
        if (DiskCache[j].Drive != EMPTY_DRIVE)			/*如果該Cache已被使用*/
        if ((DiskCache[j].Flag & CACHE_WRITED) != 0)	/*同時(shí),進(jìn)行過(guò)寫(xiě)操作*/
        {
            CacheWriteBack2(j);							/*則應(yīng)寫(xiě)回到設(shè)備扇區(qū)*/
        }
    }
    return j;
}

/*********************************************************************************************************
** 函數(shù)名稱: OpenSec
** 功能描述: 為邏輯盤上的一個(gè)扇區(qū)打開(kāi)一個(gè)cache并鎖定
**
** 輸 入: Drive:磁盤號(hào)
**        Index:扇區(qū)號(hào)
** 輸 出: 指向指定扇區(qū)數(shù)據(jù)的指針
**         
** 全局變量: DiskCache
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2003年9月3日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計(jì)
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 *OpenSec(uint8 Drive, uint32 Index)
{
    uint16 i;
    uint8 *Rt;
    Disk_Info *Disk;
   
    /* 增加訪問(wèn)間隔 */
    for (i = 0; i < MAX_DISK_CACHES; i++)
    {
        if (DiskCache[i].Drive != EMPTY_DRIVE)
        {
            if (DiskCache[i].RW_ID < (uint16)(-1))
            {
                DiskCache[i].RW_ID++;
            }
        }
    }

    /* 看扇區(qū)是否已經(jīng)緩存 */
    Rt = NULL;
    for (i = 0; i < MAX_DISK_CACHES; i++)
    {
        if (DiskCache[i].Drive == Drive )
        if (DiskCache[i].SecIndex == Index)
        {
            Rt = DiskCache[i].buf;
            DiskCache[i].RW_ID = 0;
            break;
        }
    }
    
    /* Rt == NULL則未緩存 */
    if (Rt == NULL)
    {
        Disk = GetDiskInfo(Drive);
        if (Disk != NULL)
        if (Disk->SecPerDisk > Index)
        {
            i = GetCache();                     /* 獲取cache */
            if (i < MAX_DISK_CACHES)
            {
                /* 初始化cache  */
                DiskCache[i].Drive = Drive;     
                DiskCache[i].RW_ID = 0;
                DiskCache[i].Flag = 0;
                DiskCache[i].SecIndex = Index;
                Rt = DiskCache[i].buf;
                for (i = 0; i < Disk->BytsPerSec; i++)
                {
                    Rt[i] = 0;
                }
            }
        }
    }
    return Rt;
}

/*********************************************************************************************************
** 函數(shù)名稱: ReadSec
** 功能描述: 從邏輯盤讀扇區(qū)
**
** 輸 入: Disk:邏輯盤信息
**        Index:扇區(qū)號(hào)
** 輸 出: TRUE:成功
**         FALSE:失敗
** 全局變量: DiskCache
** 調(diào)用模塊: GetDiskInfo
**
** 作 者: 陳明計(jì)
** 日 期: 2003年9月5日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計(jì)
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 ReadSec(uint8 Drive, uint32 Index)
{
    uint16 i;
    Disk_RW_Parameter Pa;
    Disk_Info *Disk;
    uint8 Rt;
    
    for (i = 0; i < MAX_DISK_CACHES; i++)
    {
        if (DiskCache[i].Drive == Drive)
        if (DiskCache[i].SecIndex == Index)
        {
            if ((DiskCache[i].Flag & CACHE_READED) != 0)
            {
                return RETURN_OK;
            }
            break;
        }
    }
    Rt = SECTOR_NOT_IN_CACHE;
    if (i < MAX_DISK_CACHES)
    {
        Disk = GetDiskInfo(Drive);    

        DiskCache[i].Flag |= CACHE_READED;

        /* 從磁盤讀取扇區(qū)數(shù)據(jù) */
        Pa.Drive = Drive;
        Pa.SectorIndex = Index;
        Pa.RsvdForLow = Disk->RsvdForLow;
        Pa.Buf = DiskCache[i].buf;
        Rt = NOT_FIND_DISK;
        if (Disk->DiakCommand != NULL)
        {
            Rt = SECTOR_READ_ERR;
            if (Disk->DiakCommand(DISK_READ_SECTOR, &Pa) == DISK_READ_OK)
            {
                return RETURN_OK;
            }
        }
    }
    return Rt;
}

/*********************************************************************************************************
** 函數(shù)名稱: WriteSec
** 功能描述: 說(shuō)明指定邏輯盤的指定一個(gè)扇區(qū)被改寫(xiě)
**
** 輸 入: Disk:邏輯盤信息
**        Index:扇區(qū)號(hào)
** 輸 出: 無(wú)
**         
** 全局變量: DiskCache
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2003年9月3日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計(jì)
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void WriteSec(uint8 Drive, uint32 Index)
{
    uint16 i;
    
    for (i = 0; i < MAX_DISK_CACHES; i++)
    {
        if (DiskCache[i].Drive == Drive)
        if (DiskCache[i].SecIndex == Index)
        {
            DiskCache[i].Flag |= (CACHE_WRITED | CACHE_READED);
            break;
        }
    }
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
7777精品伊人久久久大香线蕉超级流畅 | 成人18精品视频| 日韩欧美一区二区免费| 看国产成人h片视频| 久久精品免视看| 福利91精品一区二区三区| 中文字幕中文在线不卡住| 日本高清免费不卡视频| 亚洲电影一区二区| 欧美sm极限捆绑bd| 成人a级免费电影| 亚洲超碰精品一区二区| 精品欧美一区二区三区精品久久| 粉嫩欧美一区二区三区高清影视| 亚洲另类中文字| 欧美电视剧免费全集观看| 国产精品一区免费在线观看| 亚洲精品乱码久久久久久黑人 | 成熟亚洲日本毛茸茸凸凹| 亚洲日本在线观看| 欧美精品在线一区二区三区| 国产美女一区二区| 亚洲精品欧美激情| 精品国产免费久久| 99久久精品国产一区二区三区| 婷婷丁香久久五月婷婷| 久久嫩草精品久久久久| 在线一区二区三区做爰视频网站| 麻豆91精品视频| 亚洲视频一区二区在线| 欧美一区二区三区免费| 成人av动漫在线| 奇米一区二区三区| 亚洲成人激情av| 欧美成人精品高清在线播放| 91免费版在线看| 国产主播一区二区| 亚洲风情在线资源站| 欧美激情一区二区三区不卡| 7777精品伊人久久久大香线蕉的| 99re这里都是精品| 激情文学综合网| 婷婷国产v国产偷v亚洲高清| 日韩理论片网站| 久久天天做天天爱综合色| 欧美色成人综合| 不卡视频在线观看| 国产乱码精品一区二区三| 日韩av不卡在线观看| 亚洲卡通欧美制服中文| 国产欧美一区二区三区沐欲| 欧美一区二区三区在线视频| 欧美午夜不卡视频| 99久久99久久精品免费看蜜桃| 国产精品一区二区无线| 久久黄色级2电影| 日日摸夜夜添夜夜添亚洲女人| 亚洲精品高清在线观看| 中文字幕在线一区| 国产午夜精品福利| 久久免费看少妇高潮| 日韩视频免费直播| 欧美一区二区三区爱爱| 欧美日韩日日摸| 在线观看亚洲成人| 色天天综合色天天久久| 色哟哟一区二区三区| 懂色av一区二区夜夜嗨| 国产91精品一区二区| 国产成人在线视频网站| 国产一区视频在线看| 韩国成人福利片在线播放| 六月丁香婷婷久久| 黄色日韩网站视频| 国产精品资源在线观看| 国产一区91精品张津瑜| 国产精品一区二区黑丝| 成人午夜精品在线| 99久久精品国产导航| 色综合天天天天做夜夜夜夜做| 99国产精品久久久久久久久久久| 99精品视频一区| 在线亚洲免费视频| 欧美成人国产一区二区| 欧美mv和日韩mv的网站| 久久中文娱乐网| 中文字幕第一区二区| 中文字幕一区二区三区不卡 | 久久精品国产99| 黑人巨大精品欧美一区| 成人网在线免费视频| 99热99精品| 欧美午夜不卡视频| 日韩一区二区精品| 国产三级欧美三级日产三级99| 亚洲国产岛国毛片在线| 伊人色综合久久天天人手人婷| 亚洲成人高清在线| 国产一区二区三区蝌蚪| 亚洲成人免费视频| 亚洲一级二级三级| 亚洲va国产va欧美va观看| 亚洲超碰精品一区二区| 麻豆精品久久精品色综合| 国产在线播精品第三| 成人av电影在线观看| 在线免费观看视频一区| 欧美一级淫片007| 2024国产精品| 亚洲人成伊人成综合网小说| 日韩在线卡一卡二| 国产激情一区二区三区四区 | av在线一区二区三区| 国产传媒欧美日韩成人| 成人网男人的天堂| 欧美亚日韩国产aⅴ精品中极品| 91精品国产综合久久久久| 久久精品无码一区二区三区| 一区二区三区在线看| 久久66热re国产| 91啪九色porn原创视频在线观看| 制服丝袜成人动漫| 成人欧美一区二区三区1314| 日韩激情一二三区| 9i在线看片成人免费| 欧美一区二区三区成人| 日韩毛片视频在线看| 蜜臀av性久久久久蜜臀aⅴ| 93久久精品日日躁夜夜躁欧美| 7777精品伊人久久久大香线蕉 | 欧美视频你懂的| 色婷婷狠狠综合| 日韩一区二区麻豆国产| 国产精品久久99| 三级一区在线视频先锋| 成人午夜碰碰视频| 欧美二区三区的天堂| 国产精品久久久久精k8| 麻豆精品视频在线观看视频| 91在线精品秘密一区二区| 欧美v国产在线一区二区三区| 亚洲欧美日韩国产手机在线 | 一本色道综合亚洲| 国产欧美一区二区三区沐欲| 日韩黄色免费电影| 91久久精品一区二区| 中文字幕乱码久久午夜不卡| 精品在线你懂的| 欧美日韩国产在线播放网站| 亚洲欧美中日韩| 国产乱人伦偷精品视频免下载| 欧美一二三四在线| 亚洲成人福利片| 欧美色综合网站| 精品一区二区三区视频在线观看 | 成人aa视频在线观看| 26uuu精品一区二区三区四区在线| 日本系列欧美系列| 欧美精品一卡两卡| 五月天国产精品| 欧美视频第二页| 亚洲aⅴ怡春院| 欧美丝袜丝交足nylons图片| 一区二区三区免费| 在线国产电影不卡| 亚洲免费观看高清在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 一级女性全黄久久生活片免费| 99精品视频在线播放观看| 中文字幕人成不卡一区| 成人av电影免费观看| 18涩涩午夜精品.www| 色婷婷综合在线| 亚洲一区成人在线| 欧美精品一二三| 免费三级欧美电影| 精品对白一区国产伦| 国产精一区二区三区| 国产欧美日韩久久| 91网址在线看| 亚洲一区二区精品视频| 欧美日韩一区 二区 三区 久久精品| 午夜视频久久久久久| 欧美电影免费观看高清完整版在| 国产剧情在线观看一区二区| 国产片一区二区三区| av高清久久久| 亚洲第一电影网| 91精品久久久久久久91蜜桃| 久久9热精品视频| 欧美国产精品中文字幕| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | av高清久久久| 亚洲国产精品久久人人爱蜜臀| 欧美一级黄色录像| 风间由美性色一区二区三区| 亚洲一区二区三区自拍| 欧美一区二区在线观看| 国产91精品一区二区麻豆网站 | 在线观看视频一区二区|