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

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

?? nandmtd.c

?? 原創
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * $Log:   V:/nandMtd.c_v  $ * *    Rev 1.28   06 Oct 2004 13:55:05   Wanghui *  *    Rev 1.27   06 Oct 1997 18:37:34   ANDRY * no COBUX * *    Rev 1.26   06 Oct 1997 18:04:34   ANDRY * 16-bit access only for interleave 2 cards, COBUX * *    Rev 1.25   05 Oct 1997 12:02:32   danig * Support chip ID 0xEA * *    Rev 1.24   10 Sep 1997 16:14:08   danig * Got rid of generic names * *    Rev 1.23   08 Sep 1997 17:47:00   danig * fixed setAddress for big-endian * *    Rev 1.22   04 Sep 1997 13:59:44   danig * Debug messages * *    Rev 1.21   31 Aug 1997 15:18:04   danig * Registration routine return status * *    Rev 1.20   28 Aug 1997 17:47:08   danig * Buffer\remapped per socket * *    Rev 1.19   28 Jul 1997 15:10:36   danig * setPowerOnCallback & moved standard typedefs to flbase.h * *    Rev 1.18   24 Jul 1997 18:04:12   amirban * FAR to FAR0 * *    Rev 1.17   21 Jul 1997 18:56:00   danig * nandBuffer static * *    Rev 1.16   20 Jul 1997 18:21:14   danig * Moved vendorID and chipID to Vars * *    Rev 1.15   20 Jul 1997 17:15:06   amirban * Added Toshiba 8MB * *    Rev 1.14   07 Jul 1997 15:22:26   amirban * Ver 2.0 * *    Rev 1.13   02 Jul 1997 14:59:22   danig * More wait for socket to power up * *    Rev 1.12   01 Jul 1997 13:39:54   danig * Wait for socket to power up * *    Rev 1.11   22 Jun 1997 18:34:32   danig * Documentation * *    Rev 1.10   12 Jun 1997 17:22:24   amirban * Allow long extra read/writes * *    Rev 1.9   08 Jun 1997 19:18:06   danig * BIG_PAGE & FULL_PAGE moved to flash.h * *    Rev 1.8   08 Jun 1997 17:03:40   amirban * Fast Toshiba and power on callback * *    Rev 1.7   05 Jun 1997 12:31:38   amirban * Write corrections, and att reg changes * *    Rev 1.6   03 Jun 1997 18:45:14   danig * powerUp() * *    Rev 1.5   01 Jun 1997 13:42:52   amirban * Rewrite of read/write extra + major reduction * *    Rev 1.4   25 May 1997 16:41:38   amirban * Bg-endian, Toshiba fix & simplifications * *    Rev 1.3   18 May 1997 17:34:50   amirban * Use 'dataError' * *    Rev 1.2   23 Apr 1997 11:02:14   danig * Update to TFFS revision 1.12 * *    Rev 1.1   15 Apr 1997 18:48:02   danig * Fixed FAR pointer issues. * *    Rev 1.0   08 Apr 1997 18:29:28   danig * Initial revision. *//************************************************************************//*                                                                      *//*		FAT-FTL Lite Software Development Kit			*//*		Copyright (C) M-Systems Ltd. 1995-1997			*//*									*//************************************************************************/#include "tffs/flflash.h"#include "tffs/reedsol.h"#define WRITE_COMMAND(val)  (*(volatile char *)0x1100000 = (char)(val)) /* CLE = A20 */#define WRITE_ADDRESS(val)  (*(volatile char *)0x1200000 = (char)(val)) /* ALE = A21 */#define WRITE_DATA(val)     (*(volatile char *)0x1000000 = (char)(val)) /* CE = 0 */#define READ_DATA(val)      ((char)(val) = *(volatile char *)0x1000000) /* CE = 0 */#define READ_REG(val)       ((int)(val) = *(volatile int *)0x60061C)    /* PI3寄存器地址 */#define PAGES_PER_BLOCK     16          /* 16 pages per block on a single chip*//* Flash IDs*/#define K9F6408X0C_FLASH    0xece6        #define KM29N16000_FLASH    0xec64#define KM29N32000_FLASH    0xece5/*#define KM29V64000_FLASH    0xece6 */#define NM29N16_FLASH       0x8f64#define NM29N32_FLASH	    0x8fe5#define NM29N64_FLASH       0x8fe6#define TC5816_FLASH        0x9864#define TC5832_FLASH        0x98e5#define TC5864_FLASH        0x98e6/* Flash commands:*/#define SERIAL_DATA_INPUT   0x80#define READ_MODE           0x00#define READ_MODE_2         0x50#define RESET_FLASH         0xff#define SETUP_WRITE         0x10#define SETUP_ERASE         0x60#define CONFIRM_ERASE       0xd0#define READ_STATUS         0x70#define READ_ID             0x90#define FAIL                0x01#define RB                  0x40/*#define DEBUG_PRINT         printf*//* commands for moving flash pointer to areeas A,B or C of page*/typedef enum  { AREA_A = READ_MODE, AREA_B = 0x1, AREA_C = READ_MODE_2 } PointerOp;/* customization for this MTD*/typedef struct {  unsigned short	vendorID;  unsigned short	chipID;  unsigned short      	pageSize ;              /* all....................*/  unsigned short      	pageMask ;              /* ...these...............*/  unsigned short      	pageAreaSize ;          /* .......variables.......*/  unsigned short      	tailSize ;              /* .............interleave*/  unsigned short      	noOfBlocks ;            /* total erasable blocks in flash device*/  FLBuffer  		*buffer;		/* buffer for map through buffer */} Vars;static Vars mtdVars[DRIVES];#define thisVars   ((Vars *) vol.mtdVars)#define thisBuffer (thisVars->buffer->data)		    /* Auxiliary methods  *//* 測試函數 *//*----------------------------------------------------------------------*//*              checkAllBlock                                           *//*----------------------------------------------------------------------*/void checkAllBlock(void){    int i, j;    int address;    unsigned char data;        for(i=0; i<1024; i++)    {    	for(j=0; j<2; j++)    	{    	    address = 0x2000 * i + 0x200 * j + 0x06;    	    WRITE_COMMAND(READ_MODE_2);    	    WRITE_ADDRESS((unsigned char)address);            WRITE_ADDRESS((unsigned char)(address >> 9));            WRITE_ADDRESS((unsigned char)(address >> 17));                        waitForReady();            READ_DATA(data);                        if(data != 0xFF)            {            	printf("Block %d is a invalid block", i);                break;            }        }    }}/*----------------------------------------------------------------------*//*              f l a s h R e a d                                       *//*----------------------------------------------------------------------*/void flashRead(int address, int length, int mode){    int i, bit8;    unsigned char data;       printf("readFlash: address = 0x%x, length = %d\n", address, length);    if(mode == 0)    {    bit8 = (unsigned short)address & 0x100;    if(bit8 == 0)        WRITE_COMMAND(0x00);    else        WRITE_COMMAND(0x01);    }    else        WRITE_COMMAND(0x50);    WRITE_ADDRESS((unsigned char)address);    WRITE_ADDRESS((unsigned char)(address >> 9));    WRITE_ADDRESS((unsigned char)(address >> 17));        waitForReady();        for(i=0; i<length; i++)    {        READ_DATA(data);        printf("readFlash: data = 0x%x\n", data);     }}/*----------------------------------------------------------------------*//*              f l a s h W r i t e                                     *//*----------------------------------------------------------------------*/void flashWrite(int address, int len, unsigned char data, int mode){    int i, bit8;        /*printf("readFlash: address = 0x%x, length = %d\n", address, length);*/        if(mode == 0)    {    bit8 = (unsigned short)address & 0x100;    if(bit8 == 0)        WRITE_COMMAND(0x00);    else        WRITE_COMMAND(0x01);    }    else        WRITE_COMMAND(0x50);            address += 1;    WRITE_COMMAND(SERIAL_DATA_INPUT);        WRITE_ADDRESS((unsigned char)address);    WRITE_ADDRESS((unsigned char)(address >> 9));    WRITE_ADDRESS((unsigned char)(address >> 17));        for(i=0; i<len; i++)    {        WRITE_DATA(data);       /* printf("WriteFlash: data = 0x%x\n", data);*/    }    WRITE_COMMAND(SETUP_WRITE);        waitForReady();    if(readStatus() & FAIL)      return flWriteFault;}/*----------------------------------------------------------------------*//*              f l a s h E r a s e                                     *//*----------------------------------------------------------------------*/void flashErase(int blockNo){    unsigned short pageNo = blockNo * PAGES_PER_BLOCK ;        WRITE_COMMAND(SETUP_ERASE);        WRITE_ADDRESS((unsigned char)pageNo);  /* A9 ~ A16 */    WRITE_ADDRESS((unsigned char)(pageNo >> 8));            /* A17 ~ A22 */    WRITE_COMMAND(CONFIRM_ERASE);        waitForReady();    if(readStatus() & FAIL)      return flWriteFault;}/*----------------------------------------------------------------------*//*              f l a s h E r a s e A l l                               *//*----------------------------------------------------------------------*/void flashEraseAll(void){    int i;    for(i=0; i<1024; i++)    {    	flashErase(i);    }}/*  MTD函數 */ /*----------------------------------------------------------------------*//*              t f f s c p y 1 6                                       *//*									*//* Move data in 16-bit words.                                           *//*                                                                      *//* Parameters:                                                          *//*      dst             : destination buffer                            *//*      src             : source buffer                                 *//*      len             : bytes to move                                 *//*                                                                      *//*----------------------------------------------------------------------*/static void tffscpy16 (unsigned char FAR0       *dst,		       const unsigned char FAR0 *src,		       int                      len){  register int i = 0;  /* move data in 16-bit words */  for (i = 0;  i < (len >> 1);  i++)    *((unsigned short *) dst + i) = *((unsigned short *) src + i);  /* move last byte (if any) */  if (len & 1)    *(dst + len-1) = *(src + len-1);}/*----------------------------------------------------------------------*//*              t f f s s e t 1 6                                       *//*									*//* Set data buffer in 16-bit words.                                     *//*                                                                      *//* Parameters:                                                          *//*      dst             : destination buffer                            *//*      val             : byte value tofill the buffer                  *//*      len             : setination buffer size in bytes               *//*                                                                      *//*----------------------------------------------------------------------*/static void tffsset16 (unsigned char FAR0 *dst,		       unsigned char      val,		       int                len){  register unsigned short  wval = ((unsigned short)val << 8) | val;  register int   i = 0;  /* set data in 16-bit words */  for (i = 0;  i < (len >> 1);  i++)    *((unsigned short *) dst + i) = wval;  /* set last byte (if any) */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区二区三区中文字幕| 国产亚洲成年网址在线观看| 亚洲精品成a人| 色综合久久久久网| 亚洲成人午夜电影| 91精品国产入口在线| 久久精品国产亚洲高清剧情介绍| 日韩精品一区二区三区视频 | 亚洲国产欧美另类丝袜| 欧美日韩国产一区| 精品一区免费av| 国产精品美女视频| 欧美日韩在线精品一区二区三区激情| 三级一区在线视频先锋 | 日本亚洲三级在线| 久久久久国产精品人| 91视频国产资源| 天堂成人国产精品一区| 精品粉嫩超白一线天av| 色综合欧美在线视频区| 婷婷丁香久久五月婷婷| 国产日产欧美一区| 欧美日韩在线不卡| 国产精品白丝jk黑袜喷水| 国产精品福利一区| 6080日韩午夜伦伦午夜伦| 经典三级视频一区| 亚洲最大的成人av| 久久综合久久鬼色| 在线视频国内一区二区| 国模套图日韩精品一区二区| 自拍av一区二区三区| 欧美一区二区三区在线电影| 成人免费视频视频| 美日韩一区二区三区| 国产精品成人免费| 精品少妇一区二区三区在线视频| 91丨九色porny丨蝌蚪| 另类欧美日韩国产在线| 亚洲男人的天堂在线观看| 精品久久国产97色综合| 欧洲国内综合视频| 国产丶欧美丶日本不卡视频| 日日摸夜夜添夜夜添精品视频| 国产日产欧美一区二区视频| 欧美一区二区成人| 日本道免费精品一区二区三区| 国产精品资源网| 久久精品国产一区二区三区免费看| 亚洲欧美激情在线| 国产精品视频一区二区三区不卡| 日韩欧美不卡在线观看视频| 欧美三级韩国三级日本一级| av资源网一区| 国产不卡视频一区二区三区| 精品无人码麻豆乱码1区2区| 日韩国产高清影视| 亚洲午夜免费电影| 亚洲日本va在线观看| 国产欧美精品在线观看| 精品国产精品网麻豆系列| 欧美一级久久久久久久大片| 欧美日韩三级一区| 日本高清不卡在线观看| 99精品一区二区| 成人国产精品免费网站| 国产91丝袜在线播放0| 精品一区二区三区视频在线观看| 日韩va欧美va亚洲va久久| 亚洲一二三四区| 亚洲自拍偷拍欧美| 亚洲午夜av在线| 亚洲综合男人的天堂| 亚洲女同女同女同女同女同69| 国产精品免费网站在线观看| 欧美激情一区不卡| 中文字幕中文在线不卡住| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 久久综合国产精品| 精品国产免费人成电影在线观看四季| 在线成人午夜影院| 欧美一区二区三区的| 欧美成人一区二区三区在线观看| 日韩欧美不卡在线观看视频| 精品不卡在线视频| 国产亚洲成aⅴ人片在线观看| 久久精品网站免费观看| 中文字幕第一区综合| 亚洲色图欧美在线| 亚洲午夜激情网站| 麻豆成人久久精品二区三区红| 久久精品国产亚洲5555| 国产成人综合在线| 99久久精品国产一区二区三区| 91国偷自产一区二区开放时间| 欧美日免费三级在线| 日韩一级黄色片| 久久九九全国免费| 亚洲免费三区一区二区| 日韩av中文在线观看| 国产精品亚洲一区二区三区妖精 | 国产精品一区二区三区乱码| 久久99久久精品| 国产精品初高中害羞小美女文| 一区二区三区四区中文字幕| 亚洲国产中文字幕在线视频综合| 婷婷成人综合网| 国产精品66部| 在线一区二区三区| 日韩一区二区中文字幕| 亚洲国产精品传媒在线观看| 一区二区三区av电影| 久久国产精品露脸对白| 91性感美女视频| 欧美一区二区在线看| 中文字幕永久在线不卡| 天天操天天综合网| 成人av网站免费| 日韩视频一区在线观看| 亚洲欧美自拍偷拍| 久久福利资源站| 一本色道综合亚洲| 久久亚洲精精品中文字幕早川悠里 | 国产麻豆精品久久一二三| 色av成人天堂桃色av| 精品福利视频一区二区三区| 亚洲在线观看免费视频| 国产麻豆精品视频| 制服丝袜国产精品| √…a在线天堂一区| 久久99精品久久只有精品| 欧美性色aⅴ视频一区日韩精品| www欧美成人18+| 日韩精品久久久久久| 色婷婷精品大视频在线蜜桃视频| 久久久综合激的五月天| 日韩精品久久理论片| 一本久久a久久免费精品不卡| 精品国精品自拍自在线| 亚洲国产综合色| 91在线观看视频| 日本一区二区三区视频视频| 麻豆精品久久久| 欧美三级一区二区| 一区二区三区中文在线观看| 不卡一区二区中文字幕| 欧美精品一区二区三区视频| 日韩高清电影一区| 欧美日韩在线观看一区二区| 一区二区三区中文免费| 91偷拍与自偷拍精品| 中文天堂在线一区| 国产91在线观看丝袜| 亚洲精品一区二区三区蜜桃下载 | 激情成人综合网| 538prom精品视频线放| 亚洲综合成人网| 欧美性生活久久| 亚洲伦理在线精品| 91片在线免费观看| 日韩毛片精品高清免费| 99在线视频精品| 国产精品嫩草影院com| 大尺度一区二区| 国产精品久久777777| 成人免费黄色大片| 欧美国产日韩a欧美在线观看| 国产福利视频一区二区三区| 久久久精品2019中文字幕之3| 国产在线精品一区二区不卡了| 2022国产精品视频| 国产精品一区免费视频| 欧美国产亚洲另类动漫| k8久久久一区二区三区| 日韩美女精品在线| 欧美综合久久久| 日韩不卡一区二区| 日韩欧美亚洲国产另类| 国产一区二区三区综合| 国产亚洲精品久| 99久久国产综合精品女不卡| 一区二区三区影院| 91精品国产综合久久久蜜臀粉嫩| 久久er99精品| 国产精品视频看| 在线观看国产精品网站| 婷婷六月综合网| 精品国产不卡一区二区三区| 国产精品18久久久久久vr| 日韩伦理av电影| 51久久夜色精品国产麻豆| 国产麻豆视频精品| 亚洲欧美乱综合| 日韩小视频在线观看专区| 国产精品中文有码| 亚洲在线视频网站| 久久影视一区二区| 99精品久久只有精品| 日韩精品久久久久久| 欧美精彩视频一区二区三区|