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

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

?? k9f2808u0c.c

?? Vxworks下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).		 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产女人水真多18毛片18精品视频 | 免费成人美女在线观看.| 在线观看日韩精品| 亚洲国产一区二区在线播放| 欧美视频一区二区在线观看| 亚洲成人av一区| 日韩一区二区中文字幕| 国产一区二区三区黄视频| 欧美激情在线一区二区| 成人福利电影精品一区二区在线观看| 国产精品嫩草99a| 色婷婷国产精品| 日韩精品午夜视频| 久久久国产午夜精品| 91在线无精精品入口| 亚洲成人午夜电影| 久久久美女毛片| 色婷婷综合激情| 美女mm1313爽爽久久久蜜臀| 久久久久久久精| 色偷偷久久一区二区三区| 日韩精品1区2区3区| 欧美激情中文字幕一区二区| 欧美日韩在线免费视频| 国产精品资源在线观看| 亚洲一区二区三区四区五区中文| 91精品国产一区二区三区蜜臀| 国产一区中文字幕| 夜夜嗨av一区二区三区中文字幕 | 一区二区三区精品视频| 日韩欧美一区二区在线视频| 成人一区二区视频| 亚洲高清视频在线| 国产欧美视频一区二区| 欧美喷水一区二区| 成人三级在线视频| 调教+趴+乳夹+国产+精品| 国产精品美日韩| 精品日韩一区二区| 欧美揉bbbbb揉bbbbb| 成人综合婷婷国产精品久久| 亚洲成人综合网站| 亚洲视频网在线直播| 亚洲精品一区二区三区蜜桃下载| 色激情天天射综合网| 国产曰批免费观看久久久| 午夜久久久影院| 亚洲欧洲成人自拍| 久久这里只有精品6| 欧美日本在线观看| 色婷婷综合久久久中文字幕| 国产成人高清视频| 伦理电影国产精品| 婷婷丁香激情综合| 亚洲柠檬福利资源导航| 国产视频视频一区| 日韩一区二区免费在线电影| 91久久线看在观草草青青| 成人91在线观看| 国产suv一区二区三区88区| 麻豆精品在线观看| 日韩国产欧美在线播放| 亚洲国产中文字幕在线视频综合 | 亚洲精品欧美专区| 18成人在线观看| 欧美国产一区二区| 国产欧美日韩三区| 久久精品视频在线免费观看 | 国产午夜久久久久| 精品国产成人系列| 欧美精品乱码久久久久久按摩| 欧美色区777第一页| 欧美少妇性性性| 欧美疯狂性受xxxxx喷水图片| 欧美日韩亚洲国产综合| 欧美日韩一区国产| 欧美色综合影院| 欧美精品aⅴ在线视频| 欧美情侣在线播放| 日韩一区二区电影网| 日韩欧美aaaaaa| 国产亚洲人成网站| 国产精品毛片无遮挡高清| 亚洲人成在线观看一区二区| 综合激情成人伊人| 亚洲精品视频一区二区| 夜夜精品浪潮av一区二区三区| 亚洲国产精品一区二区久久| 亚洲电影在线播放| 日本中文字幕一区二区视频| 日本欧美在线看| 国产精品一区二区久久不卡| 成人性色生活片| 91色视频在线| 欧美高清精品3d| 欧美成人三级电影在线| 久久精品免视看| 亚洲欧美在线视频观看| 亚洲与欧洲av电影| 日本成人超碰在线观看| 国产激情视频一区二区在线观看| 99精品视频在线播放观看| 欧美主播一区二区三区美女| 日韩欧美一区二区不卡| 中文字幕电影一区| 亚洲黄色小视频| 久久电影网站中文字幕 | 99精品视频中文字幕| 欧美影院一区二区| 亚洲精品一区二区三区影院| 中文字幕国产精品一区二区| 性久久久久久久| 国产又黄又大久久| 在线免费亚洲电影| 国产午夜亚洲精品理论片色戒| 一区二区三区四区在线| 狠狠色狠狠色综合日日91app| 99久久伊人精品| 在线播放一区二区三区| 国产日韩欧美一区二区三区综合| 亚洲最新视频在线播放| 国产乱子轮精品视频| 欧美自拍偷拍午夜视频| 久久精品日韩一区二区三区| 亚洲va韩国va欧美va精品| 成人久久视频在线观看| 91精品国产乱| 一区二区三区四区不卡视频| 国精品**一区二区三区在线蜜桃| 91行情网站电视在线观看高清版| www国产精品av| 亚洲电影一级片| 91丨porny丨国产入口| 欧美精品一区二| 三级亚洲高清视频| 91丨九色丨尤物| 久久精品欧美日韩精品| 日韩av午夜在线观看| 在线一区二区视频| 中文字幕+乱码+中文字幕一区| 日韩成人一区二区三区在线观看| 91小视频免费观看| 欧美国产日韩亚洲一区| 久久99精品国产91久久来源| 欧美午夜在线观看| 亚洲四区在线观看| 成人avav在线| 国产视频一区在线观看| 久久国产精品99精品国产| 欧美一区二区三区喷汁尤物| 亚洲自拍偷拍av| 色先锋久久av资源部| 视频一区二区中文字幕| 色综合久久久久久久| 国产精品剧情在线亚洲| 国产成人免费高清| 精品国产乱码久久久久久浪潮| 肉色丝袜一区二区| 欧美日韩中文国产| 亚洲福利视频导航| 欧美色图第一页| 夜夜精品浪潮av一区二区三区| 91免费观看在线| 日韩美女视频一区| 色综合久久久久久久久| 一区二区成人在线| 色综合久久精品| 亚洲综合一区在线| 欧美三级日本三级少妇99| 亚洲理论在线观看| 在线亚洲一区观看| 亚洲一区二区三区爽爽爽爽爽| 色爱区综合激月婷婷| 亚洲午夜视频在线| 欧美精品日韩一区| 日本人妖一区二区| 26uuu国产一区二区三区| 国产在线一区观看| 国产精品欧美极品| 色天使色偷偷av一区二区| 一区二区三区鲁丝不卡| 欧美另类videos死尸| 日本成人在线一区| 久久综合九色综合欧美就去吻 | 日韩精品一卡二卡三卡四卡无卡| 91精品在线麻豆| 精品中文av资源站在线观看| 久久久美女毛片| 色综合天天综合色综合av| 亚洲综合一区二区精品导航| 欧美精品久久99久久在免费线| 精品一区二区久久| 亚洲国产精品ⅴa在线观看| 色呦呦国产精品| 美美哒免费高清在线观看视频一区二区 | 久久久久国产精品免费免费搜索| 国产不卡视频在线播放| 亚洲精品免费在线| 日韩精品在线一区| 9久草视频在线视频精品|