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

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

?? flashdev.c

?? 《嵌入式固件開發》一書的源碼
?? C
字號:
/*  * flashdev.c * * Support for Intel Strata Flash, in 2 x 16 configuration. * * by Thomas E. Arvanitis (tharvan@inaccessnetworks.com) * * No lock support. * * 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 "genlib.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 Flashlock32();extern int EndFlashlock32();extern int Flashtype32();extern int EndFlashtype32();extern int Flashwrite32();extern int EndFlashwrite32();extern int Flashewrite32();extern int EndFlashewrite32();extern int Flasherase32();extern int EndFlasherase32();extern int      FlashProtectWindow;extern int      FlashCurrentBank;extern int      flashopload(), flashtype();extern struct   flashinfo FlashBank[FLASHBANKS];#ifndef NO_PIC/* * flashpic.o is really PIC *//* FlashXXXFbuf[]:   These arrays will contain the flash operation function that is executing.   Recall that to operate on the flash, you cannot be executing out of it.   The flash functions are copied here, then executed through the function   pointer flashfunc which is set to point to FlashFunc.*/ulong    FlashLockFbuf[FLASHFUNCSIZE];ulong    FlashTypeFbuf[FLASHFUNCSIZE];ulong    FlashEraseFbuf[FLASHFUNCSIZE];ulong    FlashWriteFbuf[FLASHFUNCSIZE];ulong    FlashEwriteFbuf[FLASHFUNCSIZE];#else /* NO_PIC *//* * can't rely on compiler producing PIC. * use poor man's relocation scheme */ulong    *FlashLockFbuf;ulong    *FlashTypeFbuf;ulong    *FlashEraseFbuf;ulong    *FlashWriteFbuf;ulong    *FlashEwriteFbuf;#endif /* of NO_PIC *//*  * FlashNamId[]: * Used to correlate between the ID and a string representing the name * of the flash device. */struct flashdesc FlashNamId[] = {        { INTEL28F128J, "INTEL-28F128J" },        { 0, 0 },};int SectorSizes128J[] = {   /* There are 128 sectors*/     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,    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,};/*  * FlashBankInit(): * Initialize flash structures and determine flash device type. */intFlashBankInit(struct flashinfo *fbnk,int snum){    uchar   *saddr;    int i, *sizetable, msize;    struct  sectorinfo *sinfotbl;    /* Based on the flash bank ID returned, load a sector count and a */    /* sector size-information table... */    flashtype(fbnk);    switch(fbnk->id) {        case INTEL28F128J:            fbnk->sectorcnt = 128;            sizetable = SectorSizes128J;            break;        default:            printf("Unrecognized flashid: 0x%08x\n",fbnk->id);            return(-1);            break;    }    /* Create the per-sector information table.  The size of the table */    /* depends on the number of sectors in the device...  */    if (fbnk->sectors)        free((char *)fbnk->sectors);    msize = fbnk->sectorcnt * (sizeof(struct sectorinfo));    sinfotbl = (struct sectorinfo *)malloc(msize);    if (!sinfotbl) {        printf("Can't allocate space for flash sector information\n");        return(-1);    }    fbnk->sectors = sinfotbl;    /* Using the above-determined sector count and size table, build */    /* the sector information table as part of the flash-bank structure: */    saddr = fbnk->base;    for(i=0;i<fbnk->sectorcnt;i++) {        fbnk->sectors[i].snum = snum+i;        fbnk->sectors[i].size = sizetable[i];        fbnk->sectors[i].begin = saddr;        fbnk->sectors[i].end =            fbnk->sectors[i].begin + fbnk->sectors[i].size - 1;        fbnk->sectors[i].protected = 0;        saddr += sizetable[i];    }    fbnk->end = saddr-1;    return(fbnk->sectorcnt);}/*  * FlashInit(): * Initialize data structures for each bank of flash... */intFlashInit(){    int i,  snum;    long    size;    struct  flashinfo *fbnk;    snum = 0;    FlashCurrentBank = 0;#ifndef NO_PIC    /*     * flashpic.o is really PIC     */    /* 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 *)FLASHLOCK,(ulong *)ENDFLASHLOCK,        FlashLockFbuf,sizeof(FlashLockFbuf)) < 0)        return(-1);    if (flashopload((ulong *)FLASHTYPE,(ulong *)ENDFLASHTYPE,        FlashTypeFbuf,sizeof(FlashTypeFbuf)) < 0)        return(-1);    if (flashopload((ulong *)FLASHERASE,(ulong *)ENDFLASHERASE,        FlashEraseFbuf,sizeof(FlashEraseFbuf)) < 0)        return(-1);    if (flashopload((ulong *)FLASHEWRITE,(ulong *)ENDFLASHEWRITE,        FlashEwriteFbuf,sizeof(FlashEwriteFbuf)) < 0)        return(-1);    if (flashopload((ulong *)FLASHWRITE,(ulong *)ENDFLASHWRITE,        FlashWriteFbuf,sizeof(FlashWriteFbuf)) < 0)        return(-1);#else /* NO_PIC */    /*     * can't rely on compiler producing PIC.     * use poor man's relocation scheme     */        {        /* move code form flash to dram, where it is relocated            to run. this can also be done much earlier, e.g. in           'start.c' */        extern char _etext, _rtext, _erdata;        char *src = &_etext;        char *dst = &_rtext;        while ( dst < &_erdata ) {            *dst++ = *src++;        }    }    FlashLockFbuf = (ulong *)FLASHLOCK;    FlashTypeFbuf = (ulong *)FLASHTYPE;    FlashEraseFbuf = (ulong *)FLASHERASE;    FlashEwriteFbuf = (ulong *)FLASHEWRITE;    FlashWriteFbuf = (ulong *)FLASHWRITE;#endif /* of NO_PIC */    fbnk = &FlashBank[0];    fbnk->base = (unsigned char *)FLASH_BANK0_BASE_ADDR;    fbnk->width = FLASH_BANK0_WIDTH;    fbnk->fltype = (int(*)())FlashTypeFbuf;     /* flashtype(). */    fbnk->flerase = (int(*)())FlashEraseFbuf;   /* flasherase(). */    fbnk->flwrite = (int(*)())FlashWriteFbuf;   /* flashwrite(). */    fbnk->flewrite = (int(*)())FlashEwriteFbuf; /* flashewrite(). */    //fbnk->fllock = (int(*)())FlashLockFbuf;   /* flashlock(). */    snum += FlashBankInit(fbnk,snum);    /* Assume monitor resides in bank0 and that it uses the first few */    /* sectors of flash space (all sectors that occupy space upto the */    /* value of FLASH_PROTECT_SIZE). These "monitor-owned" sectors should */    /* be marked as protected. */    size = 0;    for (i=0;((i<fbnk->sectorcnt)&(size<FLASH_PROTECT_SIZE));i++) {        fbnk->sectors[i].protected = 1;        size += fbnk->sectors[i].size;    }    /* Additional flash memory banks would be initialized here... */    return(0);}#endif /* of INCLUDE_FLASH */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品剧情在线亚洲| 亚洲成人动漫精品| 99免费精品在线观看| 国产欧美一区视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产精品一二三区在线| 精品日韩99亚洲| 久久国产日韩欧美精品| 26uuu亚洲| 丁香亚洲综合激情啪啪综合| 国产精品久久久久一区二区三区| www.在线成人| 亚洲高清中文字幕| 91福利国产精品| 久久精品国产网站| 国产精品免费aⅴ片在线观看| a美女胸又www黄视频久久| 亚洲视频一区二区在线| 欧美日韩aaa| 成人免费毛片片v| 蜜桃精品视频在线观看| 亚洲天堂久久久久久久| 久久久精品免费免费| 在线视频国内一区二区| 国产精品18久久久久久vr| 亚洲一区二区四区蜜桃| 精品久久久久久久久久久久久久久| 成人免费观看男女羞羞视频| 亚洲成人免费av| 亚洲图片你懂的| 欧洲中文字幕精品| 欧洲一区二区av| 99久久99久久综合| 风间由美一区二区av101| 国产一区 二区| 欧美视频精品在线| 欧美久久婷婷综合色| 日韩一级免费一区| 精品国产乱码久久久久久1区2区| 欧美一区二区三区喷汁尤物| 久久精品免费在线观看| 亚洲免费三区一区二区| 亚洲一区在线播放| 精品无人码麻豆乱码1区2区| 成人免费视频视频| 欧美日韩一本到| 久久人人爽爽爽人久久久| 国产精品久久久久7777按摩| 亚洲日本成人在线观看| 亚洲国产毛片aaaaa无费看| 日韩精彩视频在线观看| 蜜桃视频免费观看一区| 国产成人福利片| 欧美日韩三级在线| 亚洲视频综合在线| 久久精品久久99精品久久| 国产 日韩 欧美大片| 欧美一区二区在线免费观看| 亚洲特黄一级片| 国产精品一区二区91| 91麻豆精品国产91久久久更新时间 | 国产综合色视频| 91精品国产一区二区人妖| 亚洲精品写真福利| 成人app下载| 中文字幕永久在线不卡| 国产宾馆实践打屁股91| 欧美精品一二三| 一区二区三区国产豹纹内裤在线| 成人91在线观看| 中日韩av电影| 91美女片黄在线观看| 一区二区三区精品| 精品视频一区二区不卡| 亚洲日本中文字幕区| 色94色欧美sute亚洲线路二| 国产精品理伦片| 色综合色综合色综合色综合色综合| 久久久久久黄色| 日本久久电影网| 日韩中文字幕一区二区三区| 91麻豆精品国产| 国产一区福利在线| 国产精品午夜春色av| 91香蕉视频mp4| 调教+趴+乳夹+国产+精品| 91精品国产全国免费观看| 美国精品在线观看| 中文字幕亚洲区| 欧美成人一区二区三区片免费 | 香蕉成人啪国产精品视频综合网 | 一本到不卡精品视频在线观看| 亚洲最新视频在线播放| 欧美一区二区日韩一区二区| 国产精品自拍网站| 亚洲成a人v欧美综合天堂| 久久久久久97三级| 91在线小视频| 国产成人精品亚洲777人妖| 一区二区三区中文字幕电影| 久久夜色精品国产欧美乱极品| www.亚洲精品| va亚洲va日韩不卡在线观看| 蜜桃视频免费观看一区| 婷婷成人综合网| 日韩经典一区二区| 韩国av一区二区三区四区| 日本一道高清亚洲日美韩| 亚洲日本在线观看| 亚洲女人的天堂| 亚洲精品免费电影| 亚洲一区二区3| 午夜伊人狠狠久久| 亚洲国产视频a| 亚洲成人精品影院| 蜜桃久久久久久| 国产最新精品免费| 国产99久久久久| 成人高清在线视频| 91丨九色丨黑人外教| 欧美日韩在线亚洲一区蜜芽| 欧美日韩一区二区三区在线 | 日韩极品在线观看| 韩国在线一区二区| 99久久久无码国产精品| 欧美怡红院视频| 久久只精品国产| 亚洲视频一区二区在线观看| 五月激情综合网| 懂色av一区二区三区蜜臀| 欧美揉bbbbb揉bbbbb| 日韩精品在线一区二区| 国产精品乱码人人做人人爱| 亚洲小说春色综合另类电影| 精品亚洲成a人在线观看| 色婷婷国产精品| 欧美国产成人在线| 日韩黄色免费电影| 不卡视频免费播放| 精品久久久网站| 丝袜美腿高跟呻吟高潮一区| 国产999精品久久久久久绿帽| 欧美做爰猛烈大尺度电影无法无天| 91麻豆精品国产| 一区二区在线电影| 懂色av一区二区夜夜嗨| 日韩欧美电影一区| 亚洲一区电影777| 在线精品观看国产| 亚洲精品亚洲人成人网| 色综合视频一区二区三区高清| 国产欧美日韩另类一区| 激情久久五月天| 欧美一区二区三区在线视频| 亚洲一区二区在线免费观看视频| 成人黄色片在线观看| 亚洲精品视频一区| 91在线云播放| 一区二区三区不卡视频| 色综合久久久久| 亚洲 欧美综合在线网络| 91精品国产91综合久久蜜臀| 日韩不卡在线观看日韩不卡视频| 日韩欧美区一区二| 国产91精品一区二区麻豆网站| 中文字幕av资源一区| 91在线国内视频| 婷婷综合另类小说色区| 久久久www免费人成精品| 成人福利在线看| 日韩精品一级二级 | 国产一区二区三区不卡在线观看| 精品999久久久| 国产成人亚洲综合a∨猫咪| 国产视频视频一区| 欧美美女喷水视频| 成人免费高清视频在线观看| 亚洲乱码日产精品bd| 欧美吞精做爰啪啪高潮| 蜜桃久久久久久| 亚洲动漫第一页| 国产精品久久网站| 91网站最新地址| 免费人成网站在线观看欧美高清| 亚洲色大成网站www久久九九| 欧美精品日韩一本| av在线不卡电影| 成人在线综合网站| 久久成人免费日本黄色| 亚洲精品成人悠悠色影视| 国产精品午夜电影| 国产欧美日本一区视频| 精品国产1区2区3区| 日韩精品在线一区二区| 欧美一二三区精品| 91精品久久久久久久久99蜜臂| 日本韩国一区二区| 99久久er热在这里只有精品15| 风流少妇一区二区| www.亚洲人|