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

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

?? flflash.c

?? vxworks的完整的源代碼
?? C
字號:
/* * $Log:   P:/user/amir/lite/vcs/flflash.c_v  $ * *    Rev 1.14   08 Aug 2000 11:22:00   chackney * Changed second arameter for ISRAM_WRITE to &flashPtr[0] * *    Rev 1.13   03 Nov 1997 16:11:32   danig * amdCmdRoutine receives FlashPTR * *    Rev 1.12   10 Sep 1997 16:28:48   danig * Got rid of generic names * *    Rev 1.11   04 Sep 1997 18:36:24   danig * Debug messages * *    Rev 1.10   18 Aug 1997 11:46:26   danig * MTDidentifyRoutine already defined in header file * *    Rev 1.9   28 Jul 1997 14:43:30   danig * setPowerOnCallback * *    Rev 1.8   24 Jul 1997 17:54:28   amirban * FAR to FAR0 * *    Rev 1.7   07 Jul 1997 15:21:38   amirban * Ver 2.0 * *    Rev 1.6   08 Jun 1997 17:03:28   amirban * power on callback * *    Rev 1.5   20 May 1997 13:53:34   danig * Defined write/read mode * *    Rev 1.4   18 Aug 1996 13:47:24   amirban * Comments * *    Rev 1.3   31 Jul 1996 14:30:36   amirban * New flash.erase definition * *    Rev 1.2   04 Jul 1996 18:20:02   amirban * New flag field * *    Rev 1.1   16 Jun 1996 14:02:20   amirban * Corrected reset method in intelIdentify * *    Rev 1.0   20 Mar 1996 13:33:08   amirban * Initial revision. *//************************************************************************//*                                                                      *//*		FAT-FTL Lite Software Development Kit			*//*		Copyright (C) M-Systems Ltd. 1995-1996			*//*									*//************************************************************************/#include "flflash.h"#define	READ_ID			0x90#define	INTEL_READ_ARRAY        0xff#define	AMD_READ_ARRAY		0xf0#if	FALSE/* MTD registration information */extern int noOfMTDs;extern MTDidentifyRoutine mtdTable[];#endif	/* FALSE *//*----------------------------------------------------------------------*//*      	            f l a s h M a p				*//*									*//* Default flash map method: Map through socket window.			*//* This method is applicable for all NOR Flash				*//*									*//* Parameters:                                                          *//*	vol		: Pointer identifying drive			*//*      address		: Card address to map				*//*	length		: Length to map (irrelevant here)		*//*                                                                      *//* Returns:                                                             *//*	Pointer to required card address				*//*----------------------------------------------------------------------*/static void FAR0 *flashMap(FLFlash vol, CardAddress address, int length){  return flMap(vol.socket,address);}/*----------------------------------------------------------------------*//*      	            f l a s h R e a d				*//*									*//* Default flash read method: Read by copying from mapped address	*//*									*//* Parameters:                                                          *//*	vol		: Pointer identifying drive			*//*      address		: Card address to read				*//*	buffer		: Area to read into				*//*	length		: Length to read				*//*                                                                      *//*----------------------------------------------------------------------*/static FLStatus flashRead(FLFlash vol,			CardAddress address,			void FAR1 *buffer,			int length,			int mode){  tffscpy(buffer,vol.map(&vol,address,length),length);  return flOK;}/*----------------------------------------------------------------------*//*      	         f l a s h N o W r i t e			*//*									*//* Default flash write method: Write not allowed (read-only mode)	*//*									*//* Parameters:                                                          *//*	vol		: Pointer identifying drive			*//*      address		: Card address to write				*//*	buffer		: Area to write from				*//*	length		: Length to write				*//*                                                                      *//* Returns:                                                             *//*	Write-protect error						*//*----------------------------------------------------------------------*/static FLStatus flashNoWrite(FLFlash vol,			   CardAddress address,			   const void FAR1 *from,			   int length,			   int mode){  return flWriteProtect;}/*----------------------------------------------------------------------*//*      	         f l a s h N o E r a s e			*//*									*//* Default flash erase method: Erase not allowed (read-only mode)	*//*									*//* Parameters:                                                          *//*	vol		: Pointer identifying drive			*//*      firstBlock	: No. of first erase block			*//*	noOfBlocks	: No. of contiguous blocks to erase		*//*                                                                      *//* Returns:                                                             *//*	Write-protect error						*//*----------------------------------------------------------------------*/static FLStatus flashNoErase(FLFlash vol,			   int firstBlock,			   int noOfBlocks){  return flWriteProtect;}/*----------------------------------------------------------------------*//*      	         s e t N o C a l l b a c k			*//*									*//* Register power on callback routine. Default: no routine is 		*//* registered.								*//*									*//* Parameters:                                                          *//*	vol		: Pointer identifying drive			*//*                                                                      *//*----------------------------------------------------------------------*/static void setNoCallback(FLFlash vol){  flSetPowerOnCallback(vol.socket,NULL,NULL);}/*----------------------------------------------------------------------*//*      	         f l I n t e l I d e n t i f y			*//*									*//* Identify the Flash type and interleaving for Intel-style Flash.	*//* Sets the value of vol.type (JEDEC id) & vol.interleaving.	        *//*									*//* Parameters:                                                          *//*	vol		: Pointer identifying drive			*//*	amdCmdRoutine	: Routine to read-id AMD/Fujitsu style at	*//*			  a specific location. If null, Intel procedure	*//*			  is used.                                      *//*      idOffset	: Chip offset to use for identification		*//*                                                                      *//* Returns:                                                             *//*	FLStatus	: 0 = OK, otherwise failed (invalid Flash array)*//*----------------------------------------------------------------------*/void flIntelIdentify(FLFlash vol,		     void (*amdCmdRoutine)(FLFlash vol, CardAddress,					   unsigned char, FlashPTR),		     CardAddress idOffset){  int inlv;  FlashPTR flashPtr;  unsigned char vendorId = 0;  unsigned char firstByte = 0;  unsigned char resetCmd = amdCmdRoutine ? AMD_READ_ARRAY : INTEL_READ_ARRAY;  flNeedVpp (vol.socket);		/* ADDED, first thing to do */  flashPtr = (FlashPTR) flMap(vol.socket,idOffset);  for (inlv = 0; inlv < 15; inlv++) {	/* Increase interleaving until failure */    flashPtr[inlv] = resetCmd;	/* Reset the chip */    flashPtr[inlv] = resetCmd;	/* Once again for luck */    if (inlv == 0)      firstByte = flashPtr[0]; 	/* Remember byte on 1st chip */    if (amdCmdRoutine)	/* AMD: use unlock sequence */      amdCmdRoutine(&vol,idOffset + inlv, READ_ID, flashPtr);    else      flashPtr[inlv] = READ_ID;	/* Read chip id */    flDelayLoop(2);  /* HOOK for VME-177 */    if (inlv == 0)      vendorId = flashPtr[0];	/* Assume first chip responded */    else if (flashPtr[inlv] != vendorId || firstByte != flashPtr[0]) {      /* All chips should respond in the same way. We know interleaving = n */      /* when writing to chip n affects chip 0.				    */      /* Get full JEDEC id signature */      vol.type = (FlashType) ((vendorId << 8) | flashPtr[inlv]);      flashPtr[inlv] = resetCmd;      break;    }    flashPtr[inlv] = resetCmd;  }  if (inlv & (inlv - 1))    vol.type = NOT_FLASH;		/* not a power of 2, no way ! */  else    vol.interleaving = inlv;  flDontNeedVpp (vol.socket);		/* ADDED, last thing to do */}/*----------------------------------------------------------------------*//*      	            i n t e l S i z e				*//*									*//* Identify the card size for Intel-style Flash.			*//* Sets the value of vol.noOfChips.					*//*									*//* Parameters:                                                          *//*	vol		: Pointer identifying drive			*//*	amdCmdRoutine	: Routine to read-id AMD/Fujitsu style at	*//*			  a specific location. If null, Intel procedure	*//*			  is used.                                      *//*      idOffset	: Chip offset to use for identification		*//*                                                                      *//* Returns:                                                             *//*	FLStatus	: 0 = OK, otherwise failed (invalid Flash array)*//*----------------------------------------------------------------------*/FLStatus flIntelSize(FLFlash vol,		     void (*amdCmdRoutine)(FLFlash vol, CardAddress,					   unsigned char, FlashPTR),		     CardAddress idOffset){  unsigned char resetCmd = amdCmdRoutine ? AMD_READ_ARRAY : INTEL_READ_ARRAY;  FlashPTR flashPtr;  flNeedVpp (vol.socket);		/* ADDED, first thing to do */  flashPtr = (FlashPTR) vol.map(&vol,idOffset,0);  if (amdCmdRoutine)	/* AMD: use unlock sequence */    amdCmdRoutine(&vol,0,READ_ID, flashPtr);  else    flashPtr[0] = READ_ID;  /* We leave the first chip in Read ID mode, so that we can		*/  /* discover an address wraparound.					*/  for (vol.noOfChips = 0;	/* Scan the chips */       vol.noOfChips < 2000;  /* Big enough ? */       vol.noOfChips += vol.interleaving) {    int i;    flashPtr = (FlashPTR) vol.map(&vol,vol.noOfChips * vol.chipSize + idOffset,0);    /* Check for address wraparound to the first chip */    if (vol.noOfChips > 0 &&	(FlashType) ((flashPtr[0] << 8) | flashPtr[vol.interleaving]) == vol.type)      goto noMoreChips;	   /* wraparound */    /* Check if chip displays the same JEDEC id and interleaving */    for (i = (vol.noOfChips ? 0 : 1); i < vol.interleaving; i++) {      if (amdCmdRoutine)	/* AMD: use unlock sequence */	amdCmdRoutine(&vol,vol.noOfChips * vol.chipSize + idOffset + i,		      READ_ID, flashPtr);      else	flashPtr[i] = READ_ID;      if ((FlashType) ((flashPtr[i] << 8) | flashPtr[i + vol.interleaving]) !=	  vol.type)	goto noMoreChips;  /* This "chip" doesn't respond correctly, so we're done */      flashPtr[i] = resetCmd;    }  }noMoreChips:  flashPtr = (FlashPTR) vol.map(&vol,idOffset,0);  flashPtr[0] = resetCmd;		/* reset the original chip */  flDontNeedVpp (vol.socket);		/* ADDED, last thing to do */  return (vol.noOfChips == 0) ? flUnknownMedia : flOK;}/*----------------------------------------------------------------------*//*      	                 i s R A M				*//*									*//* Checks if the card memory behaves like RAM				*//*									*//* Parameters:                                                          *//*	vol		: Pointer identifying drive			*//*                                                                      *//* Returns:                                                             *//*	0 = not RAM-like, other = memory is apparently RAM		*//*----------------------------------------------------------------------*/static FLBoolean isRAM(FLFlash vol){  volatile unsigned int FAR0 * flashIPtr;  unsigned int firstInt;  unsigned int writeInt;  flNeedVpp (vol.socket);		/* ADDED, first thing to do */  flashIPtr = (volatile unsigned int FAR0 *) flMap(vol.socket,0);  firstInt = flashIPtr[0];  writeInt = (firstInt != 0x0) ? 0x0 : (unsigned int) -1;  ISRAM_WRITE(writeInt, &flashIPtr[0]);	/* write something else safe */  flDelayLoop(2);  /* HOOK for VME-177 */  if (flashIPtr[0] == writeInt) {	/* Was it written ? */    flashIPtr[0] = firstInt;		/* must be RAM, undo the damage */    flDontNeedVpp (vol.socket);		/* ADDED, last thing to do */#ifdef DEBUG_PRINT  DEBUG_PRINT("Debug: error, socket window looks like RAM.\n");#endif    return TRUE;  }  flDontNeedVpp (vol.socket);		/* ADDED, last thing to do */  return FALSE;}/*----------------------------------------------------------------------*//*      	        f l I d e n t i f y F l a s h			*//*									*//* Identify the current Flash medium and select an MTD for it		*//*									*//* Parameters:                                                          *//*	socket		: Socket of flash				*//*	vol		: New volume pointer				*//*                                                                      *//* Returns:                                                             *//*	FLStatus	: 0 = Flash was identified			*//*			  other = identification failed                 *//*----------------------------------------------------------------------*/FLStatus flIdentifyFlash(FLSocket *socket, FLFlash vol){  FLStatus status = flUnknownMedia;  int iMTD;  vol.socket = socket;#ifndef FIXED_MEDIA  /* Check that we have a media */  flResetCardChanged(vol.socket);		/* we're mounting anyway */  checkStatus(flMediaCheck(vol.socket));#endif  if (isRAM(&vol))    return flUnknownMedia;	/* if it looks like RAM, leave immediately */  /* Install default methods */  vol.type = NOT_FLASH;  vol.flags = 0;  vol.map = flashMap;  vol.read = flashRead;  vol.write = flashNoWrite;  vol.erase = flashNoErase;  vol.setPowerOnCallback = setNoCallback;  /* Attempt all MTD's */  for (iMTD = 0; iMTD < noOfMTDs && status != flOK; iMTD++)    status = mtdTable[iMTD](&vol);  if (status != flOK) {	/* No MTD recognition */    /* Setup arbitrary parameters for read-only mount */    vol.chipSize = 0x100000L;    vol.erasableBlockSize = 0x1000;    vol.noOfChips = 1;    vol.interleaving = 1;  #ifdef DEBUG_PRINT    DEBUG_PRINT("Debug: did not identify flash media.\n");  #endif    return flUnknownMedia;  }  return flOK;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲超碰精品一区二区| 久久久久国产成人精品亚洲午夜| 精品一区二区三区免费观看 | 色94色欧美sute亚洲线路二 | 日韩一级欧美一级| 69堂国产成人免费视频| 欧美精品第一页| 欧美亚洲动漫精品| 欧美一区二区三区视频免费| 欧美剧情片在线观看| 91精品国产一区二区| 欧美精品18+| 26uuu欧美| 国产精品三级在线观看| 中文字幕一区二区三区四区 | 精品日韩99亚洲| 日韩亚洲欧美综合| 国产精品免费久久久久| 国产精品不卡在线观看| 亚洲一区二区中文在线| 丝袜亚洲另类丝袜在线| 国模无码大尺度一区二区三区 | 中文字幕+乱码+中文字幕一区| 日本一区二区视频在线| 一区二区三区日本| 奇米四色…亚洲| 成人在线综合网站| 色婷婷精品大在线视频| 欧美一区二区三区男人的天堂| 久久美女艺术照精彩视频福利播放| 国产亚洲精品7777| 亚洲第一综合色| 国内精品不卡在线| 在线欧美小视频| 亚洲精品在线免费播放| 国产日本欧美一区二区| 亚洲影院在线观看| 国产91在线观看| 欧美日韩一区三区| 中日韩av电影| 日韩电影在线观看一区| 福利一区二区在线| 欧美一区二区国产| 亚洲色图视频网| 国产在线播放一区三区四| 色综合天天狠狠| 久久品道一品道久久精品| 亚洲午夜久久久久久久久电影网| 国产真实精品久久二三区| 91国偷自产一区二区三区观看| 精品国产91乱码一区二区三区| 亚洲日本va午夜在线影院| 老司机一区二区| 欧美色大人视频| 国产精品美女www爽爽爽| 日韩国产在线观看| 欧美伊人久久大香线蕉综合69 | 欧洲亚洲精品在线| 亚洲国产精华液网站w| 另类小说一区二区三区| 欧洲在线/亚洲| 亚洲精品一二三| 97久久精品人人做人人爽| 久久男人中文字幕资源站| 五月天激情小说综合| 91豆麻精品91久久久久久| 国产精品日产欧美久久久久| 国产精品一区二区在线观看不卡| 日韩视频国产视频| 日本免费新一区视频| 欧美揉bbbbb揉bbbbb| 亚洲福中文字幕伊人影院| 99re热这里只有精品免费视频| 中文字幕乱码一区二区免费| 国产精华液一区二区三区| 精品国产乱码久久久久久免费| 丝袜国产日韩另类美女| 欧美日韩视频一区二区| 亚洲一区二区美女| 欧美日韩国产一区二区三区地区| 亚洲制服丝袜在线| 欧美日韩一区二区三区四区 | 国产视频不卡一区| 国产一区二区中文字幕| 久久精品人人做人人综合| 国产成a人无v码亚洲福利| 国产女主播一区| 风间由美一区二区三区在线观看| 国产精品三级av在线播放| 99久久精品国产一区| 依依成人综合视频| 欧美丰满高潮xxxx喷水动漫| 日本欧美肥老太交大片| 精品国产电影一区二区| 成人性生交大片| 亚洲欧洲综合另类在线| 欧美日韩一区小说| 国产精选一区二区三区| 成人欧美一区二区三区| 欧美色大人视频| 精品一二线国产| 国产精品美女一区二区在线观看| 91在线观看美女| 青青草成人在线观看| 欧美激情一区二区三区全黄| 91视频www| 麻豆免费精品视频| 国产喷白浆一区二区三区| 欧美中文字幕亚洲一区二区va在线| 亚洲一区av在线| 精品国产一区久久| 91亚洲精品乱码久久久久久蜜桃| 天天做天天摸天天爽国产一区| 精品国精品国产尤物美女| 99re在线视频这里只有精品| 日韩电影一区二区三区四区| 久久久夜色精品亚洲| 91成人在线精品| 国产一区日韩二区欧美三区| 一区二区三区欧美| 久久人人97超碰com| 欧美日韩国产一区二区三区地区| 国产成人亚洲综合a∨猫咪| 亚洲国产成人91porn| 国产午夜精品在线观看| 日韩欧美亚洲国产精品字幕久久久| 大桥未久av一区二区三区中文| 天堂资源在线中文精品| 国产精品国产a| 精品国产一区二区在线观看| 欧美日韩免费不卡视频一区二区三区 | 久久婷婷国产综合精品青草| 欧美性色黄大片手机版| 成人av在线看| 国产99一区视频免费| 亚洲成在人线免费| 亚洲精品乱码久久久久| 国产精品全国免费观看高清| 欧美电视剧在线观看完整版| 欧美日韩mp4| 91福利区一区二区三区| 不卡的电影网站| 成人av在线资源网站| 国产美女一区二区三区| 男男视频亚洲欧美| 日韩av电影免费观看高清完整版在线观看| 亚洲三级理论片| 亚洲欧洲综合另类| 亚洲欧美一区二区三区国产精品| 中文字幕免费一区| 欧美国产精品一区| 国产精品你懂的在线欣赏| 久久久久久久电影| 久久这里都是精品| 亚洲精品在线观看网站| 国产婷婷色一区二区三区在线| 欧美电影免费观看高清完整版在线| 欧美美女激情18p| 在线成人小视频| 欧美一区二区精美| 久久久综合精品| 国产欧美一区视频| 亚洲女人小视频在线观看| 成人欧美一区二区三区黑人麻豆| 日韩久久一区二区| 亚洲乱码中文字幕| 亚洲国产日韩在线一区模特 | 国产日韩欧美综合一区| 日本一区二区三区免费乱视频| 国产精品日日摸夜夜摸av| 亚洲精选一二三| 秋霞国产午夜精品免费视频| 国产在线播精品第三| 成人久久视频在线观看| 欧洲另类一二三四区| 欧美一区二区三区视频| 337p粉嫩大胆噜噜噜噜噜91av| 国产蜜臀av在线一区二区三区| ...av二区三区久久精品| 亚洲自拍偷拍av| 美美哒免费高清在线观看视频一区二区| 国模冰冰炮一区二区| 成人精品高清在线| 精品视频1区2区| 久久久综合网站| 亚洲国产精品精华液网站| 捆绑变态av一区二区三区| 成人精品鲁一区一区二区| 欧美日韩在线一区二区| 欧美精品一区二区三区蜜桃视频| 中文久久乱码一区二区| 午夜精品久久久久久久蜜桃app| 久热成人在线视频| 99久精品国产| 精品久久免费看| 一区二区在线观看免费视频播放 | 丰满亚洲少妇av| 91精品国产一区二区三区香蕉| 欧美激情综合五月色丁香 | 日韩三级.com|