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

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

?? flashdev.c

?? 《嵌入式固件開(kāi)發(fā)》一書(shū)的源碼
?? C
字號(hào):
/* This file contains all of the flash support code that does not need   to be relocated to RAM.  Two separate files (flash.c and flashpic.c)   are maintained because under certain compilers, they may need to be   compiled with different options to be made position independent.   NOTE: THESE FUNCTIONS ARE NOT RE-ENTRANT!!!  All of the FLASH routines   assume they can copy themselves into the array FlashFunc[]; hence, only   one operation can be active at any time.*/#include "config.h"#if INCLUDE_FLASH#include "cpu.h"#include "flashdev.h"#include "flash.h"typedef unsigned char uchar;typedef unsigned short ushort;typedef unsigned long ulong;typedef volatile unsigned char vuchar;typedef volatile unsigned short vushort;typedef volatile unsigned long vulong;typedef volatile unsigned int vuint;typedef volatile int vint;extern int Flashtype29F040_8();extern int EndFlashtype29F040_8();extern int Flasherase29F040_8();extern int EndFlasherase29F040_8();extern int Flashwrite29F040_8();extern int EndFlashwrite29F040_8();extern int Flashewrite29F040_8();extern int EndFlashewrite29F040_8();extern int Flashtype28F640_16();extern int EndFlashtype28F640_16();extern int Flasherase28F640_16();extern int EndFlasherase28F640_16();extern int Flashwrite28F640_16();extern int EndFlashwrite28F640_16();extern int Flashewrite28F640_16();extern int EndFlashewrite28F640_16();/* FlashXXXFbufYYY[]:    Where XXX is the function to be stored in the buffer and YYY is the    device that the function is to operate on.    These arrays are loaded with the flash operation function (TYPE, ERASE,    WRITE & EWRITE) that must run in different memory space than the device    that is being operated on.  Recall that to operate on the flash, you    cannot be executing out of it.    The flash functions are copied here, then executed through a function    pointer flashfunc which is set (in FlashInit) to point to the buffer.*/long    FlashTypeFbuf040[FLASHFUNCSIZE];long    FlashWriteFbuf040[FLASHFUNCSIZE];long    FlashEraseFbuf040[FLASHFUNCSIZE];long    FlashEwriteFbuf040[FLASHFUNCSIZE];#ifdef COPY_640OPS_TO_RAMlong    FlashTypeFbuf640[FLASHFUNCSIZE];long    FlashWriteFbuf640[FLASHFUNCSIZE];long    FlashEraseFbuf640[FLASHFUNCSIZE];long    FlashEwriteFbuf640[FLASHFUNCSIZE];#endifextern int      NotUsed();/* FlashNamId[]:   Used to correlate between the ID and a string representing the name   of the flash device.*/struct flashdesc FlashNamId[] = {    { INTEL28F640,  "INTEL-28F640" },    { INTEL28F320,  "INTEL-28F320" },    { SGS29F040,    "SGS-29F040" },    { AMD29F040,    "AMD-29F040" },    { AMD29F010,    "AMD-29F010" },    { AMD29LV040,   "AMD-29LV040" },    { 0,    0 }};int SectorSizes29F040_8[] = {        0x10000, 0x10000, 0x10000, 0x10000,        0x10000, 0x10000, 0x10000, 0x10000,};#if APC_28F640_HARDWARE_BUGint SectorSizes28F640_16[] = {        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,};#elseint SectorSizes28F640_16[] = {        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,        0x20000,    0x20000,    0x20000,    0x20000,};#endifstruct sectorinfo sinfo640[sizeof(SectorSizes28F640_16)/sizeof(int)];struct sectorinfo sinfo040[sizeof(SectorSizes29F040_8)/sizeof(int)];/* FlashInit():   Initialize data structures for each bank of flash...*/intFlashInit(){    int i, snum;    uchar   *begin;    struct  flashinfo *fbnk;    snum = 0;    FlashCurrentBank = 0;    /* Copy functions to ram space... */    /* Note that this MUST be done when cache is disabled to assure that */    /* the RAM is occupied by the designated block of code. */    if (flashopload((ulong *)Flashtype29F040_8,        (ulong *)EndFlashtype29F040_8,        FlashTypeFbuf040,sizeof(FlashTypeFbuf040)) < 0)        return(-1);    if (flashopload((ulong *)Flasherase29F040_8,        (ulong *)EndFlasherase29F040_8,        FlashEraseFbuf040,sizeof(FlashEraseFbuf040)) < 0)        return(-1);    if (flashopload((ulong *)Flashewrite29F040_8,        (ulong *)EndFlashewrite29F040_8,        FlashEwriteFbuf040,sizeof(FlashEwriteFbuf040)) < 0)        return(-1);    if (flashopload((ulong *)Flashwrite29F040_8,        (ulong *)EndFlashwrite29F040_8,        FlashWriteFbuf040,sizeof(FlashWriteFbuf040)) < 0)        return(-1);#ifdef COPY_640OPS_TO_RAM    if (flashopload((ulong *)Flashtype28F640_16,        (ulong *)EndFlashtype28F640_16,        FlashTypeFbuf640,sizeof(FlashTypeFbuf640)) < 0)        return(-1);    if (flashopload((ulong *)Flasherase28F640_16,        (ulong *)EndFlasherase28F640_16,        FlashEraseFbuf640,sizeof(FlashEraseFbuf640)) < 0)        return(-1);    if (flashopload((ulong *)Flashewrite28F640_16,        (ulong *)EndFlashewrite28F640_16,        FlashEwriteFbuf640,sizeof(FlashEwriteFbuf640)) < 0)        return(-1);    if (flashopload((ulong *)Flashwrite28F640_16,        (ulong *)EndFlashwrite28F640_16,        FlashWriteFbuf640,sizeof(FlashWriteFbuf640)) < 0)        return(-1);#endif    /* Initialize each bank of flash... */    fbnk = &FlashBank[0];    fbnk->id = AMD29F040;                       /* Device id. */    fbnk->base = (uchar *)FLASH_BANK0_BASE_ADDR;/* Base address of bank. */    fbnk->end = fbnk->base + 0x7ffff;           /* End address of bank. */    fbnk->sectorcnt = 8;                        /* Number of sectors. */    fbnk->width = 1;                            /* Width (in bytes). */    fbnk->fltype = (int(*)())FlashTypeFbuf040;      /* Flashtype(). */    fbnk->flerase = (int(*)())FlashEraseFbuf040;    /* Flasherase(). */    fbnk->flwrite = (int(*)())FlashWriteFbuf040;    /* Flashwrite(). */    fbnk->flewrite = (int(*)())FlashEwriteFbuf040;  /* Flashewrite(). */    fbnk->sectors = sinfo040;    begin = fbnk->base;    for(i=0;i<fbnk->sectorcnt;i++,snum++) {        sinfo040[i].snum = snum;        sinfo040[i].size = SectorSizes29F040_8[i];        sinfo040[i].begin = begin;        sinfo040[i].end =            sinfo040[i].begin + sinfo040[i].size - 1;        begin += SectorSizes29F040_8[i];    }    fbnk = &FlashBank[1];    fbnk->id = INTEL28F640;                     /* Device id. */    fbnk->base = (uchar *)FLASH_BANK1_BASE_ADDR;/* Base address of bank. */                                                /* Number of sectors: */    fbnk->sectorcnt = sizeof(SectorSizes28F640_16)/sizeof(int);                                                /* End address of bank: */    fbnk->end = fbnk->base + 0x20000*fbnk->sectorcnt;    fbnk->width = 2;                            /* Width (in bytes). */#ifdef COPY_640OPS_TO_RAM    fbnk->fltype = (int(*)())FlashTypeFbuf640;      /* Flashtype(). */    fbnk->flerase = (int(*)())FlashEraseFbuf640;    /* Flasherase(). */    fbnk->flwrite = (int(*)())FlashWriteFbuf640;    /* Flashwrite(). */    fbnk->flewrite = (int(*)())FlashEwriteFbuf640;  /* Flashewrite(). */#else    fbnk->fltype = Flashtype28F640_16;      /* Flashtype(). */    fbnk->flerase = Flasherase28F640_16;    /* Flasherase(). */    fbnk->flwrite = Flashwrite28F640_16;    /* Flashwrite(). */    fbnk->flewrite = Flashewrite28F640_16;  /* Flashewrite(). */#endif    fbnk->sectors = sinfo640;               /* Pointer to sector size table. */    begin = fbnk->base;    for(i=0;i<fbnk->sectorcnt;i++,snum++) {        sinfo640[i].snum = snum;        sinfo640[i].size = SectorSizes28F640_16[i];        sinfo640[i].begin = begin;        sinfo640[i].end =            sinfo640[i].begin + sinfo640[i].size - 1;        sinfo640[i].protected = 0;        begin += SectorSizes28F640_16[i];    }    /* Protect the sectors specifed by FLASH_PROTECT_RANGE: */    sectorProtect(FLASH_PROTECT_RANGE,1);    return(0);}#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩亚洲丝袜制服| 亚洲在线成人精品| 国内精品视频一区二区三区八戒| 欧美巨大另类极品videosbest | 中文乱码免费一区二区| 成人午夜激情片| 国产性天天综合网| 丁香六月综合激情| 国产精品狼人久久影院观看方式| av一二三不卡影片| 亚洲一区二区偷拍精品| 在线电影欧美成精品| 久久精品国产99国产精品| 久久久久久日产精品| 91成人在线观看喷潮| 丝袜诱惑亚洲看片| 久久网站热最新地址| 国产黄色91视频| 亚洲欧美日本韩国| 精品日产卡一卡二卡麻豆| 99国产欧美另类久久久精品| 三级成人在线视频| 亚洲国产高清在线观看视频| 91黄色小视频| 国产91精品露脸国语对白| 136国产福利精品导航| 日韩一区二区三区在线观看| 从欧美一区二区三区| 男女激情视频一区| 亚洲精品成人悠悠色影视| 久久麻豆一区二区| 欧美xxxxxxxxx| 欧美主播一区二区三区| 丁香天五香天堂综合| 日本在线不卡视频| 一区二区欧美视频| 中文字幕日韩精品一区| 久久先锋资源网| 精品久久久久久久久久久院品网| 在线中文字幕一区| 91同城在线观看| 91亚洲国产成人精品一区二三| 国产福利精品一区二区| 极品少妇xxxx偷拍精品少妇| 日韩高清不卡在线| 美女脱光内衣内裤视频久久网站| 婷婷久久综合九色综合伊人色| 一区二区三区高清| 亚洲v精品v日韩v欧美v专区| 亚洲女人****多毛耸耸8| 伊人性伊人情综合网| 一区二区三区资源| 亚洲成av人片在线观看无码| 亚洲国产一区视频| 日韩电影免费在线看| 国产一区二区三区久久悠悠色av| 成人午夜视频免费看| 色婷婷精品大在线视频| 欧美一区二区网站| 久久久久久久久久看片| 国产精品超碰97尤物18| 亚洲精品免费在线| 日本三级韩国三级欧美三级| 国产成人免费高清| 欧洲一区二区三区在线| 精品国内二区三区| 亚洲欧美自拍偷拍色图| 亚洲成av人片一区二区梦乃| 久久爱另类一区二区小说| 91丨porny丨中文| 91精品国产色综合久久不卡电影| 国产亚洲1区2区3区| 午夜精品成人在线| 成人av在线播放网址| 91精品国产综合久久久蜜臀图片| 亚洲国产成人私人影院tom| 视频在线观看91| 色香蕉久久蜜桃| 国产亚洲成aⅴ人片在线观看| 偷窥少妇高潮呻吟av久久免费| 国产精品一区二区在线观看不卡| 在线精品视频一区二区| 国产精品女同一区二区三区| 国产在线日韩欧美| 欧美一卡在线观看| 亚洲一区二区三区激情| 99久久精品免费看国产| 久久久久久久综合色一本| 美女精品一区二区| 欧美大片拔萝卜| 激情伊人五月天久久综合| 91精品国产一区二区| 免费在线观看一区二区三区| 欧美久久婷婷综合色| 日韩av二区在线播放| 88在线观看91蜜桃国自产| 天天综合网天天综合色| 欧美日韩成人在线| 日本 国产 欧美色综合| 精品国产一区二区精华| 国产乱码精品一品二品| 国产精品蜜臀在线观看| 91社区在线播放| 亚洲成人午夜影院| 久久久天堂av| 91原创在线视频| 午夜精品福利在线| 精品国产三级a在线观看| 国产成人欧美日韩在线电影| 亚洲精品精品亚洲| 欧美一级高清大全免费观看| 国产精品综合网| 1024成人网| 日韩欧美国产成人一区二区| 成人av先锋影音| 日本欧美一区二区三区| 国产偷国产偷精品高清尤物| 91久久久免费一区二区| 免费一区二区视频| 国产精品影视在线观看| 99精品欧美一区二区三区小说| 一区二区三区四区精品在线视频 | 91偷拍与自偷拍精品| 久久精品国产成人一区二区三区| 亚洲婷婷在线视频| 日韩欧美成人午夜| 色综合av在线| 成人一区二区三区视频| 麻豆精品在线播放| 天天av天天翘天天综合网 | 国产凹凸在线观看一区二区| 亚洲成人自拍网| 亚洲欧美激情视频在线观看一区二区三区 | 色综合中文综合网| 国产精品九色蝌蚪自拍| 日韩一级免费一区| 欧美精品vⅰdeose4hd| 国产成人亚洲综合色影视| 亚洲电影激情视频网站| 欧美韩国一区二区| 精品国产露脸精彩对白| 日韩亚洲欧美中文三级| 欧美日韩中文精品| 欧美伦理视频网站| 欧美网站一区二区| 欧美日韩在线观看一区二区| 国产高清一区日本| 国精品**一区二区三区在线蜜桃| 夜夜夜精品看看| 精品福利一二区| 欧美xxxxxxxx| 亚洲国产精品久久人人爱蜜臀| 午夜视频在线观看一区二区| 国产老肥熟一区二区三区| 日韩欧美中文一区二区| 成人app网站| 麻豆精品一二三| 日韩成人免费电影| 中文av一区二区| 91精品婷婷国产综合久久| 欧美三级日韩三级国产三级| 93久久精品日日躁夜夜躁欧美| 久久精品人人做人人爽人人| 国产高清在线精品| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲欧美中日韩| 国产麻豆视频一区| 久久精品夜色噜噜亚洲aⅴ| 国产福利精品一区二区| 欧美a级理论片| 午夜国产精品一区| eeuss鲁片一区二区三区在线观看| 日韩欧美成人午夜| 亚洲国产人成综合网站| 久久国产人妖系列| 亚洲成在人线在线播放| 久久成人免费网| 五月天激情小说综合| 国产欧美一区二区精品性色| 欧美一二三在线| 亚洲精品在线一区二区| 欧美a级理论片| 亚洲精品一线二线三线无人区| 国产中文一区二区三区| 欧美视频在线不卡| 欧美高清一级片在线| 欧美酷刑日本凌虐凌虐| 欧美怡红院视频| 精品国产伦一区二区三区观看方式| 国内精品免费**视频| 日韩欧美专区在线| 一区二区免费在线| 国产成人在线视频播放| 成人国产在线观看| 极品少妇xxxx精品少妇| 中文字幕制服丝袜一区二区三区 | 亚洲一区av在线| 一区二区三区欧美| 蜜臀91精品一区二区三区 | 欧洲av在线精品|