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

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

?? flash.c

?? ZLG文件系統
?? C
字號:
/****************************************Copyright (c)**************************************************
**                               廣州周立功單片機發展有限公司
**                                     研    究    所
**                                        ARM開發組
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: flash.c
**創   建   人: 陳明計
**最后修改日期:  2003年9月3日
**描        述: FAT文件系統在PC上編譯的軟盤驅動程序(底層驅動)
**              
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 陳明計
** 版  本: V1.0
** 日 期: 2003年9月3日
** 描 述: 原始版本
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#define IN_FLOPPY
#include "config.h"

/*********************************************************************************************************
** 函數名稱: GetAddr
** 功能描述: 轉換地址
** 輸 入: 無
** 輸 出: 無
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        volatile uint16 *GetAddr(uint16 addr)
{
    uint32 temp;
    
    temp = 0x80000000;
    temp += (addr << 1);
    return (volatile uint16 *)temp;
}
/*********************************************************************************************************
** 函數名稱: WordProgram
** 功能描述: 字編程
** 輸 入: 無
** 輸 出: TRUE:成功
**         FALSE:失敗
** 全局變量: 無
** 調用模塊: GetAddr
**
** 作 者: 陳明計
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 WordProgram(uint32 Addr, uint16 Data) 
{
    volatile uint16 *ip;
    uint16 temp1,temp2;

    ip = GetAddr(0x5555);
    ip[0] = 0xaaaa;
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;
    ip = GetAddr(0x5555);
    ip[0] = 0xa0a0;
    
    ip = ((volatile uint16 *)(Addr));
    *ip = Data;
    while (1)
    {
        temp1 = *ip;
        temp2 = *ip;
        if (temp1 == temp2)
        {
            if (temp1 != Data)
            {
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        }
    }
    return TRUE;
}

/*********************************************************************************************************
** 函數名稱: ChipErase
** 功能描述: 芯片擦除
** 輸 入: 無
** 輸 出: TRUE:成功
**         FALSE:失敗
** 全局變量: 無
** 調用模塊: GetAddr
**
** 作 者: 陳明計
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 ChipErase(void) 
{
    volatile uint16 *ip;
    uint16 temp1,temp2;

    ip = GetAddr(0x5555);
    ip[0] = 0xaaaa;
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;
    ip = GetAddr(0x5555);
    ip[0] = 0x8080;
    ip = GetAddr(0x5555);
    ip[0] = 0xaaaa;
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;
    ip = GetAddr(0x5555);
    ip[0] = 0x1010;

    while (1)
    {
        temp1 = *ip;
        temp2 = *ip;
        if (temp1 == temp2)
        {
            if (temp1 != 0xffff)
            {
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        }
    }
    return TRUE;
}

/*********************************************************************************************************
** 函數名稱: SectorErase
** 功能描述: 扇區擦除擦除
** 輸 入: 無
** 輸 出: TRUE:成功
**         FALSE:失敗
** 全局變量: 無
** 調用模塊: GetAddr
**
** 作 者: 陳明計
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 SectorErase(uint32 Index) 
{
    volatile uint16 *ip;
    uint16 temp1,temp2;

    ip = GetAddr(0x5555);
    ip[0] = 0xaaaa;
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;
    ip = GetAddr(0x5555);
    ip[0] = 0x8080;
    ip = GetAddr(0x5555);
    ip[0] = 0xaaaa;
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;
    ip = GetAddr(Index << 11);
    ip[0] = 0x3030;

    while (1)
    {
        temp1 = *ip;
        temp2 = *ip;
        if (temp1 == temp2)
        {
            if (temp1 != 0xffff)
            {
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        }
    }
    return TRUE;
}

/*********************************************************************************************************
** 函數名稱: FlashCammand
** 功能描述: 底層驅動程序與上層的接口程序
**
** 輸 入: Cammand:DISK_INIT:驅動程序初始化
**                 DISK_CLOSE:關閉驅動器(移除驅動程序)                 
**                 DISK_CREATE_BOOT_SECTOR:重建引導扇區
**                 DISK_READ_SECTOR:讀扇區
**                 DISK_WRITE_SECTOR:寫扇區
**        Parameter:剩余參數
** 輸 出: DISK_READ_OK:讀扇區完成
**        DISK_READ_NOT_OK:讀扇區失敗
**        DISK_WRITE_OK:寫扇區完成
**        DISK_WRITE_NOT_OK:寫扇區失敗
**        DISK_INIT_OK:初始化完成
**        DISK_INIT_NOT_OK:初始化失敗
**        BAD_DISK_COMMAND:無效的命令
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2003年9月3日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint16 FlashCammand(uint8 Cammand, void *Parameter)
{
    uint16 rt;
    Disk_RW_Parameter * Dp;
    Disk_Info *DiskInfo;
    uint16 *ip1, *ip2;
    uint16 i;
    uint32 temp;
    
    Dp = (Disk_RW_Parameter *)Parameter;

    switch (Cammand)
    {
        case DISK_INIT:
            rt = DISK_INIT_NOT_OK;
            DiskInfo = GetEmptyDiskInfoAddr();
            if (DiskInfo != NULL)
            {
                DiskInfo->DiakCommand = FlashCammand;
                rt = DISK_INIT_OK;
            }
            break;
        case DISK_CLOSE:
            rt = RETURN_OK;
            break;
        case DISK_READ_SECTOR:
            rt = DISK_READ_OK;
            ip2 = (uint16 *)Dp->Buf;
            temp = Dp->SectorIndex << 11;
            for (i = 0; i < (1 << 11); i++)
            {
                ip1 = (uint16 *)GetAddr(temp);
                *ip2++ = *ip1;
                temp++;
            }
            break;
        case DISK_WRITE_SECTOR:
            rt = DISK_WRITE_OK;
            ip2 = (uint16 *)Dp->Buf;
            temp = Dp->SectorIndex << 11;
            for (i = 0; i < (1 << 11); i++)
            {
                ip1 = (uint16 *)GetAddr(temp);
                if (*ip2++ != *ip1)
                {
                    break;
                }
                temp++;
            }
            ip2 = (uint16 *)Dp->Buf;
            temp = Dp->SectorIndex << 11;
            if (i < (1 << 11))
            {
                
                for (i = 0; i < (1 << 11); i++)
                {
                    ip1 = (uint16 *)GetAddr(temp);
                    if (*ip1 != 0xffff)
                    {
                        break;
                    }
                }
                if (i < (1 << 11))
                {
                    SectorErase(Dp->SectorIndex);
                }
                for (i = 0; i < (1 << 11); i++)
                {
                    WordProgram(temp, *ip2++);
                    temp++;
                }
            }
            break;
        default:
            rt = BAD_DISK_COMMAND;
            break;
    }
    return rt;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡视频在线播放| 三级亚洲高清视频| 99精品热视频| 亚洲欧美日韩电影| 日本道精品一区二区三区| 亚洲线精品一区二区三区 | 亚洲综合999| 欧美日韩国产免费| 裸体一区二区三区| 国产人妖乱国产精品人妖| 成人激情免费网站| 亚洲一级二级在线| 精品日韩一区二区三区| 成人激情av网| 亚洲成人www| 2019国产精品| 91在线观看免费视频| 亚洲成人1区2区| 欧美精品一区二区精品网| 成人免费视频一区| 日日骚欧美日韩| 国产日韩欧美a| 欧美三级韩国三级日本一级| 久久国产婷婷国产香蕉| 国产精品视频免费| 欧美一级欧美三级| av一本久道久久综合久久鬼色| 亚洲综合激情网| 久久精品这里都是精品| 欧美在线视频日韩| 国产一区二区成人久久免费影院| 亚洲人精品午夜| 精品日韩99亚洲| 欧美日韩亚洲不卡| 成人午夜电影小说| 免费三级欧美电影| 亚洲人吸女人奶水| 国产人成一区二区三区影院| 欧美日韩精品二区第二页| 国产一区二区三区观看| 亚洲成人动漫精品| 国产精品国产三级国产普通话99 | 日韩美女视频19| 69av一区二区三区| 99久久精品费精品国产一区二区| 蜜桃传媒麻豆第一区在线观看| 亚洲人成网站影音先锋播放| 精品国产一区二区三区久久影院 | 免费成人在线观看| 亚洲精品精品亚洲| 国产午夜精品久久久久久久| 日韩视频一区二区三区| 欧美亚洲日本国产| 91免费版pro下载短视频| 国产精品18久久久久久vr| 日本不卡中文字幕| 亚洲综合免费观看高清完整版在线 | 国产美女在线观看一区| 日韩中文字幕一区二区三区| 亚洲免费在线观看| 亚洲欧美日韩国产综合| 中文字幕在线视频一区| 久久久91精品国产一区二区精品| 88在线观看91蜜桃国自产| 色噜噜久久综合| 成人激情开心网| 成人免费观看男女羞羞视频| 韩国毛片一区二区三区| 韩国理伦片一区二区三区在线播放| 男人的天堂亚洲一区| 秋霞午夜av一区二区三区| 天天爽夜夜爽夜夜爽精品视频| 亚洲成人激情社区| 三级欧美在线一区| 麻豆国产精品一区二区三区| 乱一区二区av| 国产大片一区二区| 成人精品视频一区| 91在线国内视频| 色域天天综合网| 欧美日本在线一区| 欧美片网站yy| 日韩一级完整毛片| 久久综合九色综合欧美亚洲| 亚洲精品一区二区三区福利| 久久欧美一区二区| 国产免费久久精品| 亚洲你懂的在线视频| 五月天网站亚洲| 日本特黄久久久高潮| 激情综合色丁香一区二区| 国产成人午夜视频| 91丨九色丨蝌蚪丨老版| 欧美熟乱第一页| 欧美videossexotv100| 国产清纯白嫩初高生在线观看91| 国产精品国产自产拍高清av王其| 一区二区三区高清在线| 日本伊人色综合网| 国产成a人亚洲精品| 在线观看不卡一区| 日韩欧美黄色影院| 一色桃子久久精品亚洲| 亚洲第一狼人社区| 国产在线国偷精品免费看| 91在线你懂得| 欧美电影免费观看高清完整版在线观看| 久久久亚洲精华液精华液精华液| 国产精品美女久久久久高潮| 亚洲va在线va天堂| 国产成人综合精品三级| 在线看日韩精品电影| 日韩精品在线一区| 亚洲男人的天堂在线观看| 久久国产精品99精品国产| 99久久综合国产精品| 欧美一级在线视频| 国产精品狼人久久影院观看方式| 天天色综合天天| 成人国产免费视频| 日韩精品一区在线观看| 亚洲激情校园春色| 高清成人在线观看| 日韩午夜电影av| 亚洲女同一区二区| 国产在线精品一区二区三区不卡| 欧美中文字幕一区| 国产视频一区不卡| 免费欧美在线视频| 日本韩国欧美一区| 日本一区二区三区四区| 日本美女一区二区三区视频| 91在线视频网址| 国产欧美日韩另类视频免费观看| 亚洲成人777| 色婷婷av久久久久久久| 亚洲国产岛国毛片在线| 秋霞成人午夜伦在线观看| 一本在线高清不卡dvd| 国产欧美va欧美不卡在线| 免费在线观看日韩欧美| 欧美吞精做爰啪啪高潮| 亚洲人精品午夜| 99久久国产综合精品色伊| 亚洲国产激情av| 国产在线国偷精品产拍免费yy| 欧美一区二区三区在线视频| 亚洲第一av色| 欧美性猛交xxxx黑人交| 亚洲婷婷综合色高清在线| 成人激情免费视频| 亚洲国产精品t66y| 国产高清不卡一区二区| 久久人人爽人人爽| 国内外成人在线| 久久一夜天堂av一区二区三区 | 亚洲黄色尤物视频| www.在线欧美| 国产精品第四页| 成人黄色免费短视频| 欧美激情在线看| 成人精品一区二区三区中文字幕| 亚洲国产高清aⅴ视频| 国产91精品露脸国语对白| 国产欧美一区二区在线| 成人app软件下载大全免费| 欧美国产激情一区二区三区蜜月| 国产91精品露脸国语对白| 国产精品你懂的在线欣赏| 粉嫩av一区二区三区粉嫩 | 国产精品成人在线观看| 东方欧美亚洲色图在线| 国产精品你懂的| 色综合中文字幕国产 | 99精品久久免费看蜜臀剧情介绍| 国产精品私人影院| 色香蕉成人二区免费| 一区二区三区四区五区视频在线观看 | 欧美午夜一区二区三区| 亚洲国产中文字幕在线视频综合| 精品视频在线免费看| 蜜臀国产一区二区三区在线播放| 日韩美一区二区三区| 国产剧情av麻豆香蕉精品| 国产精品欧美综合在线| 色88888久久久久久影院野外 | 日韩成人一级片| 欧美va天堂va视频va在线| 国产不卡视频在线观看| 亚洲精品国久久99热| 日韩限制级电影在线观看| 国产精品99久久久久久有的能看| 亚洲欧洲精品天堂一级| 欧美在线不卡一区| 美国十次了思思久久精品导航| 欧美国产国产综合| 日本韩国欧美一区| 久久99精品一区二区三区| 国产精品欧美极品| 91精品欧美久久久久久动漫 |