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

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

?? k9f2808u0c.c

?? at91rm9200 bsp at91rm9200 bsp
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "tffs/flflash.h"#include "tffs/reedsol.h"/*PIO pins & reg used*/#define AT91C_PIO_PC1      		 		 ((unsigned int) 1 << 1)  /* Pin Controlled by PC1  */#define AT91C_PC1_BFRDY_SMOE	 		((unsigned int) AT91C_PIO_PC1) /*  SmartMedia Output Enable */#define AT91C_PIO_PC3        				((unsigned int) 1 << 3)  /* Pin Controlled by PC13 */#define AT91C_PC3_BFBAA_SMWE 			((unsigned int) AT91C_PIO_PC3) /*  SmartMedia Write Enable */#define AT91C_PIO_PC14       				((unsigned int) 1 << 14) /* Pin Controlled by PC14 */#define AT91C_PIO_PC15      				 ((unsigned int) 1 << 15) /* Pin Controlled by PC15 *//* registers */#define AT91C_EBI_CSA   					0xFFFFFF60 /* (EBI) Chip Select Assignment Register */#define AT91C_SMC_CSR3					0xFFFFFF7C		/*CS3 for nand flash*/	#define AT91C_SMC_CSR4					0xFFFFFF80		/*CS4 for nand flash*/	#define AT91C_PIOC_PER       			 	0xFFFFF800 /* (PIOC) PIO Enable Register */#define AT91C_PIOC_PDR  			 	0xFFFFF804 /* (PIOC) PIO Disable Register */#define AT91C_PIOC_OER        				0xFFFFF810 /* (PIOC) Output Enable Register */#define AT91C_PIOC_ODR     			   	0xFFFFF814 /* (PIOC) Output Disable Register */#define AT91C_PIOC_SODR       			0xFFFFF830 /* (PIOC) Set Output Data Register */#define AT91C_PIOC_CODR        			0xFFFFF834 /* (PIOC) Clear Output Data Register */#define AT91C_PIOC_PDSR			 	0xFFFFF83C /* (PIOC) Pin Data Status Register */#define AT91C_PIOC_ASR  			 	0xFFFFF870 /* (PIOC) Select A Register */#define NAND_EN()	 					(*(volatile UINT32 *)AT91C_PIOC_CODR = AT91C_PIO_PC15)				#define NAND_DIS()						(*(volatile UINT32 *)AT91C_PIOC_SODR = AT91C_PIO_PC15)#define READ_REG(val)       				((int)(val) = (*(volatile UINT32 *)AT91C_PIOC_PDSR) & AT91C_PIO_PC14)#define WRITE_COMMAND(val) 			 (*(volatile char *)0x50000080 = (char)(val)) /* CLE = A7 */#define WRITE_ADDRESS(val)  				(*(volatile char *)0x50000040 = (char)(val)) /* ALE = A6 */#define WRITE_DATA(val)     				(*(volatile char *)0x50000000 = (char)(val)) /*  CE = 0 CLE = 0 ALE = 0  */#define READ_DATA(val)      				((char)(val) = *(volatile char *)0x50000000) /*  CE = 0 CLE = 0 ALE = 0  */#define PAGES_PER_BLOCK    		 32          /* 32 pages per block on a single chip*//* Flash ID*/#define K9F2808U0C_FLASH		0xEC73/* 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/*for debug*/#undef 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)/*添加*/UINT8 mapBuffer1[600];UINT8 mapBuffer2[600];UINT8 mapBuffer3[600];UINT8 bufferPtr=0;UINT8 *ptr;/*---------------------------------------------------------------------- *              flashInit                                        *									 *	initalize PIOC pins & SmartMedia Logic.*                                                              *----------------------------------------------------------------------*/void flashInit(){		*(volatile UINT32 *)AT91C_EBI_CSA |= (1<<3);  /*SmartMedia Logic*/ 		*(volatile UINT32 *)AT91C_SMC_CSR4 = 0x22004787; /*CS4*/		*(volatile UINT32 *)AT91C_PIOC_PDR = AT91C_PIO_PC1 | AT91C_PIO_PC3;	*(volatile UINT32 *)AT91C_PIOC_ASR = AT91C_PC1_BFRDY_SMOE | AT91C_PC3_BFBAA_SMWE;		/* PC14 used for R/#B--input, PC15 used for #CE--output*/	*(volatile UINT32 *)AT91C_PIOC_PER = AT91C_PIO_PC14 | AT91C_PIO_PC15;	*(volatile UINT32 *)AT91C_PIOC_OER = AT91C_PIO_PC15;	*(volatile UINT32 *)AT91C_PIOC_ODR = AT91C_PIO_PC14;}#if 0/*---------------------------------------------------------------------- *              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) */  if (len & 1)    *(dst + len-1) = val;}#endif/*---------------------------------------------------------------------- *                      w a i t F o r R e a d y				 *									 * Wait for the selected device to be ready.				 *                                                                       *									 * Parameters:                                                           *	   void                                      			 *									 * Returns:								 *	   TRUE if device is ready                          		 *                                                                       *----------------------------------------------------------------------*/FLBoolean waitForReady (void){    int val;        do    {        READ_REG(val); /* R/#B 接PC14,讀R/B狀態(tài)判斷設(shè)備狀態(tài) */     } while(val == 0);    return TRUE; }/*---------------------------------------------------------------------- *		          m a k e C o m m a n d				 *									 * Set Page Pointer to Area A, B or C in page.				 *                                                                       *                                                                       * Parameters:                                                           *	cmd	: receives command relevant to area			 *	addr	: receives the address to the right area.		 *	modes	: mode of operation (EXTRA ...)				 *                                                                       *----------------------------------------------------------------------*/static void makeCommand (PointerOp *cmd, CardAddress address, int modes){    int bit8;    if (modes & EXTRA)      *cmd = AREA_C;    else      {       	bit8 = (unsigned short)address & 0x100;      	if(bit8 == 0)      	  *cmd = AREA_A;      	else      	  *cmd = AREA_B;      }}/*---------------------------------------------------------------------- *		          s e t A d d r e s s				 *									 * Latch address to selected flash device.				 *									 * Parameters:                                                           *	address		: address to set.				 *                                                                       *----------------------------------------------------------------------*/static void setAddress(CardAddress address ){  WRITE_ADDRESS((unsigned char)address);  WRITE_ADDRESS((unsigned char)(address >> 9));  WRITE_ADDRESS((unsigned char)(address >> 17));}/*---------------------------------------------------------------------- *		          r e a d C o m m a n d				 *									 * Issue read command.							 *									 * Parametes:                                                          	 *      cmd		: Command to issue (according to area). 	 *	address		: address to read from.				 *									 *----------------------------------------------------------------------*/static void readCommand (PointerOp  cmd, CardAddress address){  WRITE_COMMAND (cmd);       /* move flash pointer to respective area of the page*/  setAddress (address);  waitForReady();}/*---------------------------------------------------------------------- *		          w r i t e C o m m a n d			 *									 * Issue write command.							 *									 * Parametes:                                                          	 *      cmd		: Command to issue (according to area). 	 *	address		: address to write to.				 *									 *----------------------------------------------------------------------*/static void writeCommand (PointerOp  cmd, CardAddress address){  WRITE_COMMAND(cmd);       /* move flash pointer to respective area of the page  */  	WRITE_COMMAND(SERIAL_DATA_INPUT);       /* start data loading for write  */  setAddress (address);}/*---------------------------------------------------------------------- *		          r e a d S t a t u s				 *									 * Read status of selected flash device.				 *									 * Parameters:								 *									 * Returns:                                                          	 *      Chip status.							 *									 *----------------------------------------------------------------------*/unsigned char readStatus(void){  unsigned char chipStatus ;  WRITE_COMMAND(READ_STATUS);  READ_DATA(chipStatus);   return chipStatus;}/*---------------------------------------------------------------------- *		          w r i t e E x e c u t e			 *									 * Execute write.							 *									 * Parametes:								 * Returns:                                                          	 *	FLStatus	: 0 on success, otherwise failed.		 *									 *----------------------------------------------------------------------*/static FLStatus writeExecute (void){  WRITE_COMMAND(SETUP_WRITE);             /* execute page program*/  waitForReady();  if(readStatus() & FAIL)    return flWriteFault ;  return flOK ;}/*---------------------------------------------------------------------- *		          r e a d O n e S e c t o r			 *									 * Read up to one 512-byte block from flash.				 *									 * Parameters:								 *	vol		: Pointer identifying drive			 * 	address	: Address to read from.					 *	buffer	: buffer to read to.					 *	length	: number of bytes to read (up to sector size).		 *	modes	: EDC flag etc.						 *									 * Returns:                                                          	 *	FLStatus: 0 on success, otherwise failed.			 *									 *----------------------------------------------------------------------*/static FLStatus readOnePage (FLFlash vol,			     CardAddress address,  /* starting flash address*/			     char FAR1 *buffer,     /* target buffer */			     int length,           /* bytes to read */			     int modes)            /* EDC flag etc.*/{  FLStatus  status = flOK;  PointerOp   cmd;  int bit8;  /* move flash pointer to areas A,B or C of page*/  makeCommand (&cmd, address, modes);  NAND_EN();	  readCommand (cmd, address);   while(length-->0)  {	READ_DATA(*(buffer++));  }    /*tffscpy16((unsigned char*)buffer, (const unsigned char *) 0x40000000, length );*/  return status;}/*---------------------------------------------------------------------- *		          w r i t e O n e S e c t o r			 *									 * Write data in one 512-byte block to flash.				 * Assuming that EDC mode never requested on partial block writes.    	 *                                                                  									 * Parameters:								 *	vol	: Pointer identifying drive			 * 	address	: Address of sector to write to.			 *	buffer	: buffer to write from.					 *	length	: number of bytes to write (up to sector size).		 *	modes	: OVERWRITE, EDC flags etc.				 *									 * Returns:                                                          	 *	FLStatus: 0 on success, otherwise failed.			 *									 *----------------------------------------------------------------------*/static FLStatus writeOnePage(FLFlash vol,			     CardAddress address,    /* target flash addres  */			     const char FAR1 *buffer, /* source RAM buffer   */			     int length,             /* bytes to write (up to BLOCK) */			     int modes)              /* OVERWRITE, EDC flags etc.  */{  FLStatus    status;  PointerOp cmd;  int bit8;    if (flWriteProtected(vol.socket))    return flWriteProtect;  /* move flash pointer to areas A,B or C of page  */  makeCommand (&cmd, address, modes);  NAND_EN();  writeCommand (cmd, address);    /* load data and syndrom*/  while(length-->0)  {	WRITE_DATA(*(buffer++));  } /* tffscpy16((unsigned char FAR0 *) 0x40000000, (const unsigned char *)buffer, length ); */  status = writeExecute();  #ifdef DEBUG_PRINT  DEBUG_PRINT("WRITE: address = 0x%x, length = 0x%x, mode = %d\n", address, length, modes);#endif  return status;}    /* Core MTD methods - read, write and erase */ /*---------------------------------------------------------------------- *		          n a n d  R e a d				 *									 * Read some data from the flash. This routine will be registered as 	 * the read routine for this MTD.*									 * Parameters:								 *	vol		: Pointer identifying drive			 * address	: Address to read from.					 *	buffer	: buffer to read to.					 *	length	: number of bytes to read (up to sector size).		 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产91久久久久久久妲己 | 色噜噜偷拍精品综合在线| 91香蕉国产在线观看软件| 国产精品午夜电影| 国产成人综合亚洲91猫咪| 欧美成人精品1314www| 成人美女视频在线观看18| 一区二区三区在线影院| 国产欧美精品一区二区三区四区 | 国产一区欧美二区| 2024国产精品| 91在线一区二区三区| 亚洲综合色噜噜狠狠| 久久老女人爱爱| 欧美久久久一区| 欧美日韩国产另类一区| 一本大道久久精品懂色aⅴ| 欧美无砖砖区免费| 成人av片在线观看| 国产99精品在线观看| 精品一区二区三区免费播放| 午夜精品在线视频一区| 国产日韩av一区二区| 日韩你懂的在线播放| 91丨porny丨中文| 亚洲午夜国产一区99re久久| 中文字幕一区av| 久久久国产精品麻豆| 亚洲免费观看视频| 亚洲欧美自拍偷拍色图| 综合久久久久久久| 久久久蜜臀国产一区二区| 日韩三区在线观看| 国产成人综合亚洲网站| 99精品热视频| 成人激情黄色小说| 91视频免费播放| 亚洲国产cao| 国产乱色国产精品免费视频| 国产亚洲一区二区三区| 国产日韩精品一区二区浪潮av| 亚洲日本一区二区| 欧美精品一区二区三区在线 | 91丨九色porny丨蝌蚪| 久久综合九色欧美综合狠狠| 精品在线免费视频| 91精品国产综合久久精品app| 亚洲第一激情av| 日韩一级免费观看| 国产精品99久| 中文字幕中文字幕一区| 欧美视频一区在线观看| 精品一区二区三区av| 亚洲一区在线视频| 精品国内二区三区| 亚洲欧美日韩国产手机在线| 视频一区二区三区在线| 在线一区二区视频| 中文字幕乱码久久午夜不卡 | 日本sm残虐另类| 欧美日韩中文一区| 欧美大胆人体bbbb| 蜜桃精品在线观看| 久久网站最新地址| 韩日欧美一区二区三区| 欧美一区二区视频免费观看| 久久99九九99精品| 亚洲精品一区二区三区四区高清| 麻豆精品久久精品色综合| 色综合久久中文综合久久97| 久久精品国产精品亚洲红杏 | 美女网站一区二区| 91免费观看视频| 亚洲与欧洲av电影| 国产欧美精品国产国产专区| 色狠狠桃花综合| 亚洲欧美视频在线观看视频| 国产精品1024| 亚洲自拍偷拍欧美| 日韩三级免费观看| 成人精品小蝌蚪| 日韩精品欧美精品| 日韩午夜精品电影| 国产成人免费视| 捆绑紧缚一区二区三区视频| 精品久久久久久亚洲综合网| 精品中文字幕一区二区小辣椒| 欧美亚洲精品一区| 99久久综合国产精品| 狠狠v欧美v日韩v亚洲ⅴ| 久久女同性恋中文字幕| 欧美日韩一级黄| 色偷偷久久人人79超碰人人澡| 国产91丝袜在线播放| 国产精品影音先锋| 日韩精品五月天| 国产日产精品一区| 日韩精品一区二区三区视频| 国产成人欧美日韩在线电影| 婷婷亚洲久悠悠色悠在线播放| 久久久久国产一区二区三区四区| 欧美不卡视频一区| 久久久久久97三级| 日韩精品中文字幕在线不卡尤物| 99久久免费视频.com| 久久精品久久精品| 亚洲国产视频一区二区| 亚洲免费av高清| 视频一区免费在线观看| 久久成人18免费观看| 日韩精品欧美精品| 韩国三级中文字幕hd久久精品| 成人黄色免费短视频| 91在线观看污| k8久久久一区二区三区| 视频一区在线播放| 美女脱光内衣内裤视频久久网站| 亚洲国产精品久久人人爱| 中文字幕一区二区三区不卡| 亚洲男同性恋视频| 亚洲影视在线播放| 亚洲视频在线观看一区| 精品一区二区精品| 国产亚洲欧美色| 91视频精品在这里| 在线观看欧美日本| 麻豆91精品视频| 国产区在线观看成人精品| 97久久人人超碰| 久久精品久久99精品久久| 久久综合色8888| 91麻豆福利精品推荐| 亚洲一区在线观看网站| 美女看a上一区| 精品国产乱码久久| 久久精品国产亚洲高清剧情介绍| 欧美日韩精品三区| 亚洲成a人在线观看| 欧美日韩一卡二卡三卡| 麻豆91免费看| 久久久精品日韩欧美| 一本到一区二区三区| 午夜精品免费在线| 国产精品激情偷乱一区二区∴| 欧美日本在线看| 国产精品不卡在线观看| 亚洲乱码国产乱码精品精的特点| 亚洲一区二区三区在线看| 久久国产综合精品| 9191国产精品| 日韩电影在线观看网站| 91精品黄色片免费大全| 成人毛片老司机大片| 久久久久久久电影| 暴力调教一区二区三区| 中文字幕欧美日本乱码一线二线| 成人免费视频视频| 日韩你懂的在线播放| 欧美日韩精品福利| 91麻豆国产福利精品| 日韩影院免费视频| 欧美日韩大陆一区二区| 免费观看日韩av| 久久午夜羞羞影院免费观看| 国产福利91精品一区二区三区| 国产欧美一区二区精品婷婷| 欧美色图片你懂的| 极品少妇xxxx精品少妇| 亚洲图片欧美激情| 日本高清免费不卡视频| 精品一区二区av| 亚洲欧美日韩中文字幕一区二区三区| 日韩精品一区二区三区蜜臀| 成人18精品视频| 日本伊人午夜精品| 亚洲欧洲一区二区在线播放| 欧美综合色免费| 国产精品123区| 五月天国产精品| 成人欧美一区二区三区黑人麻豆 | 欧美白人最猛性xxxxx69交| 成人免费视频网站在线观看| 国产揄拍国内精品对白| 免费成人av在线| 香蕉成人伊视频在线观看| 国产精品卡一卡二| 亚洲欧洲无码一区二区三区| 国产片一区二区| 国产精品免费看片| 中文字幕免费一区| 欧美v日韩v国产v| 欧美电影一区二区| 在线观看欧美精品| 欧洲视频一区二区| 成人aa视频在线观看| 99久久婷婷国产综合精品电影| 99久免费精品视频在线观看| 在线看一区二区| 欧美日韩国产色站一区二区三区| 欧美日韩一区成人|