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

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

?? loader.c

?? nor flash write and read
?? C
字號:
/****************************************Copyright (c)**************************************************
**                               廣州周立功單片機發展有限公司
**                                     研    究    所
**                                        ARM開發組
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: loader.c
**創   建   人: 陳明計
**最后修改日期: 2004年2月26日
**描        述: 用于下載hex文件的一行
**              
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 陳明計
** 版  本: 2004年2月26日
** 日 期: 1.0
** 描 述: 原始版本
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#define IN_LOADER
#include "config.h"
static uint32 Segm = 0;         /* 段地址 */

/*********************************************************************************************************
** 函數名稱: strupr
** 功能描述: 小寫轉換為大寫
** 輸 入: 字符串指針
** 輸 出: 同輸入
**
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2004年2月25日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        char *strupr(char *Str)
{
    char *cp;
    
    cp = Str;
    while (*cp != 0)
    {
        if (*cp >= 'a' && *cp <= 'z' )
        {
            *cp -=  'a' - 'A';
        }
        cp++;
    }
    return Str;
}

/*********************************************************************************************************
** 函數名稱: CheckString
** 功能描述: 檢查字符串是否合法
** 輸 入: 無
** 輸 出: TRUE:成功
**         FALSE:失敗
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 CheckString(char *s)
{
    uint16 i;
    uint8 Ch;
    
    i = 0;
    Ch = *s;
    while (Ch != 0)
    {
        i++;
        s++;
        Ch = *s;       
        if (i > 520)
        {
            return FALSE;
        }
        
        if (Ch >= '0' && Ch <='9')
        {
            continue;
        }
        if (Ch >= 'A' && Ch <='F')
        {
            continue;    
        }
    }
    if (i < 10)
    {
        return FALSE;
    }
    return TRUE;    
}

/*********************************************************************************************************
** 函數名稱: HexToBin
** 功能描述: 將一個字符(16進制了表示)轉換為二進制數
** 輸 入: 字符
** 輸 出: 結果
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 HexToBin(char Ch)
{
    if (Ch >= '0' && Ch <='9')
    {
        return (Ch - '0');    
    }
    else
    {
        return (Ch - 'A' + 0x0a);    
    }
}

/*********************************************************************************************************
** 函數名稱: Load2Hex
** 功能描述: 將而個字符(16進制了表示)轉換為二進制數
** 輸 入: 字符
** 輸 出: 結果
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 Load2Hex(char Ch1, char Ch2)
{
    return ((HexToBin(Ch1) << 4) | HexToBin(Ch2));
}

/*********************************************************************************************************
** 函數名稱: DownloadLine
** 功能描述: 處理hex文件的一行
** 輸 入: 字符串
** 輸 出: 參考loader.h  
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#define Read2Hex(a)                     \
{                                       \
    if (s[0] == 0 || s[1] == 0)         \
    {                                   \
        return 2;                       \
    }                                   \
    a = Load2Hex(s[0], s[1]);           \
    CheckSum += a;                      \
    s += 2;                             \
}

/*#define Read4Hex(a)                     \
{                                       \
    temp1 = Load2Hex(s[0], s[1]);       \
    checkSum += temp1;                  \
    s += 2;                             \
    temp2 = temp1;                      \
    temp1 = Load2Hex(s[0], s[1]);       \
    checkSum += temp1;                  \
    s += 2;                             \
    a = (temp2 << 8) | temp1;           \
}
*/
#define Read4Hex(b)                     \
{                                       \
    Read2Hex(temp1);                    \
    temp2 = temp1;                      \
    Read2Hex(temp1);                    \
    b = (temp2 << 8) | temp1;           \
}


        uint8 DownloadLine(char *s)
{
    uint8 Length,CheckSum,temp1;
    uint16 temp2;
    uint32 Addr,Address;
    
    if (s == (char *)0)
    {
        return DOWNLOAD_LINE;
    }
    
    if (*s == ';' || *s == '\n')
    {
        return DOWNLOAD_LINE;
    }

    if (*s != ':')
    {
        return FILE_FOEMAT_ERR;
    }
    
    s++;
    strupr(s);
    if (CheckString(s) != TRUE)
    {
        return FILE_FOEMAT_ERR;       
    }

    CheckSum = 0;
    Read2Hex(Length);
    Read4Hex(Addr);

    Read2Hex(temp1);
    switch (temp1)
    {
        case 0:
            Address = Segm + Addr;
            break;
        case 1:
            CheckSum += Load2Hex(s[0],s[1]);
            if (CheckSum != 0)
            {
                return CHECK_ERR;
            }
            else
            {
                return DOWNLOAD_FINISH;
            }
        case 2:
            Read4Hex(Segm);
            Segm = Segm << 4;
            Length -= 2;
            break;
        case 3:                                  /* read start address   */
            break;
        case 4:
            Read4Hex(Segm);
            Segm = Segm << 16;
            Length -= 2;
            break;
        default:
            return BAD_RECORD_TYPE;
    }
    while (Length != 0)
    {
        Read2Hex(temp1);
        Read2Hex(temp2);
        temp2 = (temp2 << 8) | temp1;

//        WordProgram(Address, temp2);
        
        if (WordProgram(Address, temp2) == FALSE)
        {
            return PROGRAM_ERR;
        }
        Address += 2;
        Length -= 2;
    }
    CheckSum += Load2Hex(s[0],s[1]);
    if (CheckSum != 0)
    {
        return CHECK_ERR;
    }
    return DOWNLOAD_LINE;
}

        uint8 Check(char *s, uint32 *Addr1)
{
    uint8 Length,CheckSum,temp1;
    uint16 temp2;
    uint32 Addr,Address;
    
    if (s == (char *)0)
    {
        return DOWNLOAD_LINE;
    }
    
    if (*s == ';' || *s == '\n')
    {
        return DOWNLOAD_LINE;
    }

    if (*s != ':')
    {
        return FILE_FOEMAT_ERR;
    }
    
    s++;
    strupr(s);
    if (CheckString(s) != TRUE)
    {
        return FILE_FOEMAT_ERR;       
    }

    CheckSum = 0;
    Read2Hex(Length);
    Read4Hex(Addr);

    Read2Hex(temp1);
    switch (temp1)
    {
        case 0:
            Address = Segm + Addr;
            break;
        case 1:
            CheckSum += Load2Hex(s[0],s[1]);
            if (CheckSum != 0)
            {
                return CHECK_ERR;
            }
            else
            {
                return DOWNLOAD_FINISH;
            }
        case 2:
            Read4Hex(Segm);
            Segm = Segm << 4;
            Length -= 2;
            break;
        case 3:                                  /* read start address   */
            break;
        case 4:
            Read4Hex(Segm);
            Segm = Segm << 16;
            Length -= 2;
            break;
        default:
            return BAD_RECORD_TYPE;
    }
    while (Length != 0)
    {
        Read2Hex(temp1);
        Read2Hex(temp2);
        temp2 = (temp2 << 8) | temp1;

      
        if (((uint16 *)(Address))[0] != temp2)
        {
            *Addr1 = Address;
            return PROGRAM_ERR;
        }
        Address += 2;
        Length -= 2;
    }
    CheckSum += Load2Hex(s[0],s[1]);
    if (CheckSum != 0)
    {
        return CHECK_ERR;
    }
    return DOWNLOAD_LINE;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品乱码久久久久久 | 午夜一区二区三区在线观看| 91精品国产91热久久久做人人| av在线免费不卡| 成人免费黄色在线| jvid福利写真一区二区三区| 本田岬高潮一区二区三区| youjizz国产精品| 99精品视频中文字幕| av亚洲精华国产精华精华| 成人av影视在线观看| 91免费看视频| 欧洲一区在线电影| 欧美日韩一区久久| 日韩一区二区电影网| 精品av综合导航| 欧美国产精品一区二区三区| 国产精品九色蝌蚪自拍| 亚洲综合自拍偷拍| 视频在线在亚洲| 紧缚奴在线一区二区三区| 国产一区二区伦理片| 不卡在线视频中文字幕| 色偷偷一区二区三区| 555www色欧美视频| 久久精品在线免费观看| 国产精品成人一区二区三区夜夜夜| 成人免费在线视频观看| 午夜伊人狠狠久久| 国产精品一区二区视频| 色噜噜狠狠色综合中国| 日韩欧美国产电影| 中文字幕一区二区三区色视频| 亚洲人成小说网站色在线| 午夜国产精品影院在线观看| 国产精品一区二区三区99| 色欧美片视频在线观看在线视频| 欧美日韩国产高清一区二区三区| 久久免费的精品国产v∧| 1024成人网| 捆绑变态av一区二区三区 | 国产精品久久二区二区| 亚洲第一在线综合网站| 国产suv精品一区二区三区| 在线视频观看一区| 国产日韩亚洲欧美综合| 亚洲一区二区精品3399| 国产福利精品一区二区| 欧美一区二区三区视频在线 | 成人午夜电影网站| 91精品在线免费| 亚洲欧美一区二区三区极速播放| 精品一区精品二区高清| 欧美三级韩国三级日本三斤| 欧美激情在线一区二区三区| 日本怡春院一区二区| 色婷婷精品大在线视频| 国产欧美精品一区| 麻豆精品一区二区综合av| 欧美亚洲日本一区| 日韩理论在线观看| 成人国产亚洲欧美成人综合网| 日韩亚洲电影在线| 五月婷婷另类国产| 日本久久一区二区| 日韩伦理免费电影| 91亚洲精品乱码久久久久久蜜桃| 久久精品一区二区三区不卡 | 久久亚洲精品小早川怜子| 亚洲成人精品在线观看| 欧美亚洲国产一区二区三区| 亚洲欧美一区二区三区极速播放 | 97se亚洲国产综合自在线不卡| 欧美精品一区二| 极品美女销魂一区二区三区 | 韩国女主播一区二区三区| 欧美美女网站色| 日本午夜精品一区二区三区电影 | 精品无人码麻豆乱码1区2区| 欧美日韩三级一区| 亚洲mv在线观看| 欧美精品九九99久久| 日韩av在线发布| 日韩免费观看高清完整版| 久久电影网电视剧免费观看| 日韩欧美一二三四区| 国产一区中文字幕| 中文字幕人成不卡一区| 色综合 综合色| 婷婷综合另类小说色区| 91麻豆精品国产91久久久久久久久| 视频一区视频二区在线观看| 欧美一区三区二区| 国产精品69久久久久水密桃| 欧美国产日本韩| 在线观看网站黄不卡| 天天影视色香欲综合网老头| 欧美一区二区黄色| 国产精品一区二区无线| 1024亚洲合集| 宅男噜噜噜66一区二区66| 激情深爱一区二区| 亚洲一区二区三区四区五区黄| 日本高清不卡在线观看| 日本91福利区| 国产视频一区二区在线观看| 在线观看国产日韩| 久久99精品国产91久久来源| 中文字幕在线一区免费| 欧美一区二区三区在线电影| 国产69精品久久久久777| 亚洲成a人在线观看| 精品国产3级a| 欧美性视频一区二区三区| 九九国产精品视频| 亚洲小说春色综合另类电影| 精品日韩在线一区| 91精彩视频在线观看| 久久99久久久久久久久久久| 亚洲精品久久久蜜桃| 精品成人佐山爱一区二区| 日本电影亚洲天堂一区| 国产一区二区三区| 日韩av一区二| 亚洲bdsm女犯bdsm网站| 天堂蜜桃91精品| 一区精品在线播放| 久久你懂得1024| 91精品视频网| 欧美日韩综合不卡| av在线不卡免费看| 丁香五精品蜜臀久久久久99网站| 亚洲成人在线网站| 亚洲激情av在线| 国产精品毛片无遮挡高清| 精品国产乱码久久久久久老虎| 欧美又粗又大又爽| av中文字幕一区| www.色综合.com| 国产成人免费网站| 国产尤物一区二区在线| 精品在线播放免费| 青青青伊人色综合久久| 午夜精品在线看| 亚洲猫色日本管| 亚洲日本在线天堂| 日韩久久一区二区| 亚洲区小说区图片区qvod| 国产精品美女www爽爽爽| 国产日韩欧美精品综合| 久久综合中文字幕| 久久久久久久电影| 久久精品欧美日韩| 欧美国产亚洲另类动漫| 国产精品沙发午睡系列990531| 国产亚洲一本大道中文在线| 久久久久国产成人精品亚洲午夜| 久久影院视频免费| 久久精品欧美一区二区三区不卡| 国产三级久久久| 国产精品电影院| 一区二区免费视频| 亚洲成人在线网站| 久久精品国产77777蜜臀| 精品一区二区日韩| 国产suv精品一区二区6| 色天天综合久久久久综合片| 欧美四级电影网| 91精品啪在线观看国产60岁| 久久综合999| 亚洲人妖av一区二区| 亚洲一区日韩精品中文字幕| 丝袜亚洲另类欧美| 激情久久五月天| 99视频精品全部免费在线| 色狠狠色狠狠综合| 日韩一本二本av| 国产精品乱码久久久久久| 亚洲欧美日韩人成在线播放| 性做久久久久久| 国内精品国产成人| 色偷偷成人一区二区三区91| 欧美精品第1页| 中文字幕第一区综合| 亚洲综合色成人| 激情综合网天天干| 91在线看国产| 精品国产一区二区精华| 中文字幕制服丝袜一区二区三区 | 九九精品视频在线看| 91香蕉视频在线| 日韩一级精品视频在线观看| 亚洲国产高清aⅴ视频| 天堂久久久久va久久久久| 国产成人免费网站| 欧美丰满美乳xxx高潮www| 成人欧美一区二区三区在线播放| 日韩av二区在线播放| 97精品视频在线观看自产线路二| 久久亚洲综合色一区二区三区|