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

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

?? flashdev.c

?? 《嵌入式固件開發(fā)》一書的源碼
?? C
字號:
/* 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"#include "stddefs.h"#ifndef COPY_040_OPS_TO_RAM#define COPY_040_OPS_TO_RAM 1#endif#ifndef COPY_STRATA_OPS_TO_RAM#define COPY_STRATA_OPS_TO_RAM 1#endifextern 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 FlashtypeStrata_32();extern int EndFlashtypeStrata_32();extern int FlasheraseStrata_32();extern int EndFlasheraseStrata_32();extern int FlashwriteStrata_32();extern int EndFlashwriteStrata_32();extern int FlashewriteStrata_32();extern int EndFlashewriteStrata_32();/* 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.*/#if COPY_040_OPS_TO_RAMlong    FlashTypeFbuf040[FLASHFUNCSIZE];long    FlashWriteFbuf040[FLASHFUNCSIZE];long    FlashEraseFbuf040[FLASHFUNCSIZE];long    FlashEwriteFbuf040[FLASHFUNCSIZE];#endif#if COPY_STRATA_OPS_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[] = {    { INTEL28F320J5,    "INTEL-28F320J5" },    { INTEL28F640J5,    "INTEL-28F640J5" },    { INTEL28F320J3,    "INTEL-28F320J3" },    { INTEL28F640J3,    "INTEL-28F640J3" },    { INTEL28F128J3,    "INTEL-28F128J3" },    { SGS29F040,        "SGS-29F040" },    { AMD29F040,        "AMD-29F040" },    { AMD29LV040,       "AMD-29LV040" },    { 0,    0 }};/* Simple 8-bit 29f040... * 8 64K sectors. */int SectorSizes29F040_8[] = {        0x10000, 0x10000, 0x10000, 0x10000,        0x10000, 0x10000, 0x10000, 0x10000,};/* This configuration is 2 side-by-side 28F640J3 devices. * Each device has 64 128Kbyte sectors, so since we have 2 * in parallel, then each 32-bit sector is 256Kbytes... */int SectorSizes28F640_32[] = {        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,        0x40000,    0x40000,    0x40000,    0x40000,};struct sectorinfo sinfo640[sizeof(SectorSizes28F640_32)/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 COPY_040_OPS_TO_RAM    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);#endif#if COPY_STRATA_OPS_TO_RAM    if (flashopload((ulong *)FlashtypeStrata_32,        (ulong *)EndFlashtypeStrata_32,        FlashTypeFbuf640,sizeof(FlashTypeFbuf640)) < 0)        return(-1);    if (flashopload((ulong *)FlasheraseStrata_32,        (ulong *)EndFlasheraseStrata_32,        FlashEraseFbuf640,sizeof(FlashEraseFbuf640)) < 0)        return(-1);    if (flashopload((ulong *)FlashewriteStrata_32,        (ulong *)EndFlashewriteStrata_32,        FlashEwriteFbuf640,sizeof(FlashEwriteFbuf640)) < 0)        return(-1);    if (flashopload((ulong *)FlashwriteStrata_32,        (ulong *)EndFlashwriteStrata_32,        FlashWriteFbuf640,sizeof(FlashWriteFbuf640)) < 0)        return(-1);#endif    /* Initialize each bank of flash... */    fbnk = &FlashBank[0];    fbnk->id = AMD29LV040;                      /* 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). */#if COPY_040_OPS_TO_RAM    fbnk->fltype = (int(*)())FlashTypeFbuf040;      /* Flashtype(). */    fbnk->flerase = (int(*)())FlashEraseFbuf040;    /* Flasherase(). */    fbnk->flwrite = (int(*)())FlashWriteFbuf040;    /* Flashwrite(). */    fbnk->flewrite = (int(*)())FlashEwriteFbuf040;  /* Flashewrite(). */#else    fbnk->fltype = Flashtype29F040_8;    fbnk->flerase = Flasherase29F040_8;    fbnk->flwrite = Flashwrite29F040_8;    fbnk->flewrite = Flashewrite29F040_8;#endif    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 = INTEL28F640J3;                   /* Device id. */    fbnk->base = (uchar *)FLASH_BANK1_BASE_ADDR;/* Base address of bank. */                                                /* Number of sectors: */    fbnk->sectorcnt = sizeof(SectorSizes28F640_32)/sizeof(int);                                                /* End address of bank: */    fbnk->end = fbnk->base + 0x40000*fbnk->sectorcnt;    fbnk->width = 4;                            /* Width (in bytes). */#if COPY_STRATA_OPS_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 = FlashtypeStrata_32;          /* Flashtype(). */    fbnk->flerase = FlasheraseStrata_32;        /* Flasherase(). */    fbnk->flwrite = FlashwriteStrata_32;        /* Flashwrite(). */    fbnk->flewrite = FlashewriteStrata_32;      /* Flashewrite(). */#endif    fbnk->sectors = sinfo640;                   /* Ptr to sector size tbl. */    begin = fbnk->base;    for(i=0;i<fbnk->sectorcnt;i++,snum++) {        sinfo640[i].snum = snum;        sinfo640[i].size = SectorSizes28F640_32[i];        sinfo640[i].begin = begin;        sinfo640[i].end =            sinfo640[i].begin + sinfo640[i].size - 1;        sinfo640[i].protected = 0;        begin += SectorSizes28F640_32[i];    }    /* Protect the sectors specifed by FLASH_PROTECT_RANGE: */    sectorProtect(FLASH_PROTECT_RANGE,1);    return(0);}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日噜噜夜夜狠狠视频欧美人| 亚洲国产高清在线| 日韩av电影天堂| 日韩亚洲欧美高清| 看电视剧不卡顿的网站| 日韩你懂的电影在线观看| 国产在线精品一区二区夜色| 久久人人爽爽爽人久久久| 丁香六月综合激情| 亚洲激情在线播放| 777久久久精品| 国产成人av电影在线观看| 日韩美女啊v在线免费观看| 欧美性大战久久久久久久蜜臀| 亚洲成人在线观看视频| 精品久久久久一区| 99久久99久久久精品齐齐| 亚洲国产一区视频| 欧美成人猛片aaaaaaa| 成人在线视频一区| 亚洲国产美国国产综合一区二区 | 欧美亚洲国产一区二区三区va| 亚洲成人av免费| 久久久久久一级片| 色欧美88888久久久久久影院| 亚洲va中文字幕| 国产亚洲一区二区三区四区| 色噜噜狠狠色综合中国| 国产综合久久久久久鬼色| 日韩一区有码在线| 欧美一区二区三区公司| www.av亚洲| 麻豆91免费看| 夜色激情一区二区| 久久久午夜精品| 欧美日韩激情在线| 99re亚洲国产精品| 美女视频黄免费的久久| 专区另类欧美日韩| 久久综合av免费| 欧美日韩精品一区视频| www.亚洲免费av| 麻豆视频一区二区| 一区二区免费在线| 国产欧美精品区一区二区三区| 欧美三级中文字幕在线观看| 成人免费高清在线| 久久er精品视频| 午夜a成v人精品| 中文字幕在线观看一区二区| 精品久久久网站| 欧美一区二区三区四区在线观看| 99久久久无码国产精品| 国产精品亚洲成人| 久久99精品久久只有精品| 亚洲国产欧美在线人成| 亚洲欧洲综合另类| 亚洲欧美在线高清| 国产精品色在线| 久久久久97国产精华液好用吗| 日韩一区二区三区视频在线观看| 久久精品在线观看| 日韩亚洲欧美一区二区三区| 欧美日韩视频专区在线播放| 欧洲精品在线观看| 91小视频免费观看| av在线一区二区| 99久久精品一区二区| 粉嫩av一区二区三区粉嫩| 国产寡妇亲子伦一区二区| 久久成人av少妇免费| 久久成人免费电影| 黑人精品欧美一区二区蜜桃| 美洲天堂一区二卡三卡四卡视频| 日韩中文字幕区一区有砖一区 | 奇米精品一区二区三区在线观看 | av网站免费线看精品| 成人福利在线看| 粉嫩高潮美女一区二区三区| 国产suv精品一区二区6| 不卡av在线免费观看| 精品国产伦理网| 在线观看日韩国产| 国产成人精品三级麻豆| 另类小说视频一区二区| 一区二区三区在线播放| 欧美激情资源网| 精品福利视频一区二区三区| 欧美日韩中文字幕一区| 91麻豆精品一区二区三区| 国产乱国产乱300精品| 日韩高清电影一区| 一区二区日韩电影| 亚洲欧美aⅴ...| 国产精品美女久久久久久| www国产成人| 精品国产乱码久久久久久免费| 欧美日韩三级视频| 在线中文字幕一区二区| 91在线你懂得| 91美女福利视频| 成人av免费观看| 国产99精品视频| 国产大片一区二区| 国产一区二区精品久久91| 麻豆91在线播放免费| 蜜桃精品在线观看| 日本一区中文字幕| 蜜桃传媒麻豆第一区在线观看| 亚洲大片免费看| 午夜亚洲国产au精品一区二区 | 国产日韩欧美高清在线| 欧美成人video| 精品国偷自产国产一区| 日韩欧美电影一二三| 精品捆绑美女sm三区| 国产一区二区中文字幕| 成人综合在线视频| 欧美精品丝袜中出| 国产精品国模大尺度视频| 亚洲chinese男男1069| 成人久久久精品乱码一区二区三区 | 国产精品中文字幕日韩精品| 精品女同一区二区| 亚洲久草在线视频| 国产精品18久久久| 正在播放一区二区| 亚洲日本丝袜连裤袜办公室| 国产在线观看一区二区| 欧美日韩午夜影院| 亚洲视频网在线直播| 国产一区二区三区av电影| 欧美日韩不卡视频| 亚洲免费观看高清| 国产麻豆91精品| 91精品国模一区二区三区| 亚洲欧洲色图综合| 国产成人精品免费看| 欧美成人精品高清在线播放 | 欧美一级日韩一级| 亚洲另类一区二区| 不卡的电影网站| 国产日产欧美一区二区视频| 久久精品国产99国产| 欧美日韩中文字幕精品| 玉米视频成人免费看| 99久久精品久久久久久清纯| 久久免费午夜影院| 国内精品免费**视频| 日韩欧美不卡一区| 日韩午夜激情免费电影| 日韩精品一区二区三区视频播放 | 大美女一区二区三区| 在线精品国精品国产尤物884a| 日韩三级伦理片妻子的秘密按摩| 国产无一区二区| 天堂av在线一区| 成人成人成人在线视频| 欧美日韩国产综合一区二区三区 | 一本大道久久a久久精品综合| 91精品婷婷国产综合久久 | 99综合电影在线视频| 91精品国产91久久久久久一区二区 | 国产精品久久久久天堂| 亚洲成精国产精品女| 99久久亚洲一区二区三区青草| 欧美一区二区在线看| 亚洲人妖av一区二区| 久久99国产精品久久| 欧美日韩国产经典色站一区二区三区| 精品国产成人系列| 亚洲成人午夜电影| 91在线视频在线| 国产日韩欧美一区二区三区综合| 午夜精品久久久久| 色欧美片视频在线观看在线视频| 国产亚洲一二三区| 国内偷窥港台综合视频在线播放| 欧美人与z0zoxxxx视频| 亚洲伦理在线免费看| 国产69精品久久777的优势| 日韩精品在线一区二区| 日韩美一区二区三区| 亚洲成人av在线电影| 91精品国产综合久久久久久 | 一区二区三区欧美激情| 欧美视频在线一区二区三区 | 国产日产欧美一区二区三区| 成人不卡免费av| 亚洲h动漫在线| 精品处破学生在线二十三| 国产精品99久久久久| 亚洲精品成人精品456| 日韩欧美国产系列| heyzo一本久久综合| 视频一区二区三区中文字幕| 26uuu国产在线精品一区二区| 成人美女视频在线看| 亚洲国产va精品久久久不卡综合 | 国产视频一区二区在线|