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

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

?? 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狀態判斷設備狀態 */     } 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一区二区三区免费野_久草精品视频
色综合久久久久久久久| 国产一区二区美女| 久久久电影一区二区三区| 99久久婷婷国产综合精品电影| 性久久久久久久久| 国产精品毛片无遮挡高清| 91福利国产成人精品照片| 欧美三级三级三级爽爽爽| 国产99精品国产| 日本欧美肥老太交大片| 亚洲日韩欧美一区二区在线| 久久亚洲精华国产精华液| 欧美色综合影院| www..com久久爱| 国内精品国产成人国产三级粉色| 亚洲午夜一二三区视频| 国产精品色眯眯| 久久久九九九九| 欧美一区二区免费| 欧美亚洲一区二区在线| 99精品欧美一区| 成人一区在线看| 国产专区欧美精品| 青青草成人在线观看| 1024国产精品| 欧美高清在线一区二区| 欧美老年两性高潮| 日本一区二区三区高清不卡 | 亚洲国产成人va在线观看天堂| 91精品久久久久久久久99蜜臂| 国产suv一区二区三区88区| 欧美福利电影网| 亚洲免费观看高清完整版在线| 久久久久久久国产精品影院| 欧美色爱综合网| 一本到高清视频免费精品| av亚洲精华国产精华精华 | 亚洲黄色小说网站| 亚洲欧美国产77777| 中文字幕一区二区三区视频| 国产精品乱码一区二三区小蝌蚪| 亚洲国产成人午夜在线一区| 国产欧美1区2区3区| 亚洲国产精品黑人久久久| 国产精品日韩精品欧美在线| 欧美激情综合五月色丁香| 国产精品色哟哟| 亚洲免费看黄网站| 91官网在线观看| 91美女精品福利| 成人午夜av在线| 成人午夜激情在线| 美女视频黄频大全不卡视频在线播放| 婷婷中文字幕一区三区| 高清不卡一二三区| 欧洲一区二区三区在线| 国产精品电影一区二区| 久久国产麻豆精品| 菠萝蜜视频在线观看一区| 国产精品女上位| 1024成人网| 亚洲丰满少妇videoshd| 午夜欧美在线一二页| 麻豆国产精品777777在线| 国产精品2024| 色婷婷久久久久swag精品| 欧美日韩视频一区二区| 欧美日本乱大交xxxxx| 亚洲人成人一区二区在线观看| 欧美丰满高潮xxxx喷水动漫| 色先锋久久av资源部| 欧美日韩国产一二三| 欧美一二区视频| 国产精品网站在线观看| 亚洲午夜免费电影| 麻豆成人免费电影| voyeur盗摄精品| 欧美一区二区三区免费视频| 国产欧美日韩另类视频免费观看| 一区二区不卡在线视频 午夜欧美不卡在| 亚瑟在线精品视频| 国产福利电影一区二区三区| 在线观看av不卡| 精品处破学生在线二十三| 亚洲女女做受ⅹxx高潮| 美女任你摸久久| 91欧美一区二区| 日韩欧美国产综合| 一区二区三区四区国产精品| 精品一区二区三区在线观看| 色婷婷精品久久二区二区蜜臂av| 欧美xxxx在线观看| 亚洲精品视频一区| 国产乱淫av一区二区三区| 在线欧美日韩精品| 国产欧美日韩亚州综合| 免费一级欧美片在线观看| 91免费看片在线观看| 久久亚洲欧美国产精品乐播| 亚洲成av人片一区二区三区| 成人午夜免费电影| 日韩欧美一区二区视频| 樱桃国产成人精品视频| 国产成人av一区二区| 91精品国产综合久久久久久漫画| 亚洲丝袜美腿综合| 久久国产精品露脸对白| 欧美午夜一区二区三区| 国产精品欧美一区二区三区| 极品尤物av久久免费看| 欧美男人的天堂一二区| 国产精品午夜电影| 国产剧情一区二区三区| 欧美一卡在线观看| 亚洲愉拍自拍另类高清精品| 99精品国产91久久久久久| 国产视频一区在线观看| 激情欧美日韩一区二区| 91精品综合久久久久久| 亚洲一区在线电影| 91在线丨porny丨国产| 国产欧美视频一区二区| 国产精品亚洲视频| 精品国产人成亚洲区| 免费观看日韩电影| 日韩一区二区电影网| 天天操天天干天天综合网| 欧美日韩免费观看一区三区| 亚洲综合一区在线| 色狠狠av一区二区三区| 亚洲猫色日本管| 色94色欧美sute亚洲线路一ni| 日韩亚洲欧美中文三级| av资源网一区| 国产高清精品网站| hitomi一区二区三区精品| 97久久久精品综合88久久| 欧美国产精品一区二区| 国产成人av网站| 国产欧美精品区一区二区三区 | 国产日韩亚洲欧美综合| 肉肉av福利一精品导航| 国产日韩一级二级三级| 欧美无人高清视频在线观看| 久久99精品国产麻豆婷婷| 国产精品久久久久aaaa| 欧美日韩精品欧美日韩精品| 国产伦理精品不卡| 一区二区三区在线观看视频 | 综合久久久久综合| 欧美老女人第四色| 懂色一区二区三区免费观看| 亚洲成av人影院在线观看网| 久久久久久久综合日本| 精品视频在线免费观看| 国产精品系列在线播放| 亚洲aaa精品| 亚洲成人先锋电影| 国产日韩欧美综合一区| 成人爽a毛片一区二区免费| 欧美午夜精品久久久久久孕妇| 精品久久五月天| 色呦呦日韩精品| 国产美女视频91| 天天操天天色综合| 亚洲色图第一区| 日韩欧美另类在线| 91九色最新地址| 国产精品77777竹菊影视小说| 亚洲高清免费视频| 亚洲欧洲色图综合| 久久亚洲捆绑美女| 欧美一区二区三区在线观看| 91麻豆国产精品久久| 国产精品一区专区| 日本不卡一区二区| 一区二区高清免费观看影视大全| 欧美国产乱子伦| www激情久久| 欧美一区二区三区成人| 在线一区二区三区四区五区| 高清国产午夜精品久久久久久| 男女激情视频一区| 亚洲国产日韩精品| 亚洲女子a中天字幕| 国产精品久久网站| 久久久久久久久一| 精品国产一二三区| 欧美不卡一区二区| 日韩欧美国产综合在线一区二区三区| 欧美日韩国产另类不卡| 91久久人澡人人添人人爽欧美| 国产91富婆露脸刺激对白| 国产精品影音先锋| 久久国产精品99久久人人澡| 美女在线一区二区| 青青草国产成人99久久| 奇米一区二区三区| 日韩av一区二区三区四区| 奇米一区二区三区av|