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

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

?? patch-u-boot-at91rm9200-dataflash.dat

?? 使用DataFlash自動引導U-boot的程序源碼
?? DAT
?? 第 1 頁 / 共 3 頁
字號:
 			dataflash_info[i].logical_address = cs[i][0]; 			dataflash_info[i].id = dfcode; 			break;+		case AT45DB128:+			dataflash_info[i].Device.pages_number = 16384;+			dataflash_info[i].Device.pages_size = 1056;+			dataflash_info[i].Device.page_offset = 11;+			dataflash_info[i].Device.byte_mask = 0x700;+			dataflash_info[i].Device.cs = cs[i][1];+			dataflash_info[i].Desc.DataFlash_state = IDLE;+			dataflash_info[i].logical_address = cs[i][0];+			dataflash_info[i].id = dfcode;+			break;  		default: 			break; 		}--		for (j = 0; j < dataflash_info[i].Device.pages_number; j++)-			dataflash_info[i].protect[j] = FLAG_PROTECT_SET;--	}+		/* set the last area end to the dataflash size*/+		area_list[NB_DATAFLASH_AREA -1].end =+				(dataflash_info[i].Device.pages_number *+				dataflash_info[i].Device.pages_size)-1;+				+		/* set the area addresses */+		for(j = 0; j<NB_DATAFLASH_AREA; j++){+			dataflash_info[i].Device.area_list[j].start = area_list[j].start + dataflash_info[i].logical_address;+			dataflash_info[i].Device.area_list[j].end = area_list[j].end + dataflash_info[i].logical_address;+			dataflash_info[i].Device.area_list[j].protected = area_list[j].protected;+		}+	}			 	return (1); }   void dataflash_print_info (void) {-	int i;+	int i,j;  	for (i = 0; i < CFG_MAX_DATAFLASH_BANKS; i++) { 		if (dataflash_info[i].id != 0) {@@ -116,6 +144,9 @@ void dataflash_print_info (void) 			case AT45DB642: 				printf ("AT45DB642\n"); 				break;+			case AT45DB128:				+				printf ("AT45DB128\n");+				break; 			}  			printf ("Nb pages: %6d\n"@@ -127,6 +158,13 @@ void dataflash_print_info (void) 				(unsigned int) dataflash_info[i].Device.pages_number * 				dataflash_info[i].Device.pages_size, 				(unsigned int) dataflash_info[i].logical_address);+			for (j=0; j< NB_DATAFLASH_AREA; j++){	+				printf ("Area %i:\t%08X to %08X %s\n", j,+					dataflash_info[i].Device.area_list[j].start,+					dataflash_info[i].Device.area_list[j].end,+					(dataflash_info[i].Device.area_list[j].protected ==+					FLAG_PROTECT_SET) ? "(RO)" : "");+			} 		} 	} }@@ -176,6 +214,76 @@ int addr_dataflash (unsigned long addr)  	return addr_valid; }+/*-----------------------------------------------------------------------------*/+/* Function Name       : size_dataflash 					*/+/* Object              : Test if address is valid regarding the size		*/+/*-----------------------------------------------------------------------------*/+int size_dataflash (AT91PS_DataFlash pdataFlash, unsigned long addr, unsigned long size)+{+	/* is outside the dataflash */+	if (((int)addr & 0x0FFFFFFF) > (pdataFlash->pDevice->pages_size * +		pdataFlash->pDevice->pages_number)) return 0;+	/* is too large for the dataflash */+	if (size > ((pdataFlash->pDevice->pages_size * +		pdataFlash->pDevice->pages_number) - ((int)addr & 0x0FFFFFFF))) return 0;+		+	return 1;+}+/*-----------------------------------------------------------------------------*/+/* Function Name       : prot_dataflash 					*/+/* Object              : Test if destination area is protected			*/+/*-----------------------------------------------------------------------------*/+int prot_dataflash (AT91PS_DataFlash pdataFlash, unsigned long addr)+{+int area;+	/* find area */+	for (area=0; area < NB_DATAFLASH_AREA; area++){+		if ((addr >= pdataFlash->pDevice->area_list[area].start) && +			(addr < pdataFlash->pDevice->area_list[area].end)) +			break;+	}	+	if (area == NB_DATAFLASH_AREA) return -1;+	/*test protection value*/+	if (pdataFlash->pDevice->area_list[area].protected == FLAG_PROTECT_SET) return 0;+	+	return 1;+}+/*-----------------------------------------------------------------------------*/+/* Function Name       : dataflash_real_protect				*/+/* Object              : protect/unprotect area				*/+/*-----------------------------------------------------------------------------*/+int dataflash_real_protect (int flag, unsigned long start_addr, unsigned long end_addr)+{+int i,j, area1, area2, addr_valid = 0;+	/* find dataflash */ +	for (i = 0; i < CFG_MAX_DATAFLASH_BANKS; i++) {+		if ((((int) start_addr) & 0xF0000000) ==+			dataflash_info[i].logical_address){+				addr_valid = 1;+				break;+		}+	}+	if (!addr_valid) {+		return -1;+	}+	/* find start area */+	for (area1=0; area1 < NB_DATAFLASH_AREA; area1++){+		if (start_addr == dataflash_info[i].Device.area_list[area1].start) break;+	}	+	if (area1 == NB_DATAFLASH_AREA) return -1;+	/* find end area */+	for (area2=0; area2 < NB_DATAFLASH_AREA; area2++){+		if (end_addr == dataflash_info[i].Device.area_list[area2].end) break;+	}	+	if (area2 == NB_DATAFLASH_AREA) return -1;++	/*set protection value*/+	for(j = area1; j < area2+1 ; j++)+		if (flag == 0) dataflash_info[i].Device.area_list[j].protected = FLAG_PROTECT_CLEAR;+		else dataflash_info[i].Device.area_list[j].protected = FLAG_PROTECT_SET;+	+	return (area2-area1+1);+}  /*------------------------------------------------------------------------------*/ /* Function Name       : read_dataflash 					*/@@ -187,10 +295,15 @@ int read_dataflash (unsigned long addr,  	AT91PS_DataFlash pFlash = &DataFlashInst;  	pFlash = AT91F_DataflashSelect (pFlash, &AddrToRead);+ 	if (pFlash == 0)-		return -1;+		return ERR_UNKNOWN_FLASH_TYPE;++	if (size_dataflash(pFlash,addr,size) == 0)+		return ERR_INVAL;  	return (AT91F_DataFlashRead (pFlash, AddrToRead, size, result));+	 }  @@ -201,17 +314,25 @@ int read_dataflash (unsigned long addr,  int write_dataflash (unsigned long addr_dest, unsigned long addr_src, 		     unsigned long size) {-	extern AT91S_DataFlashStatus AT91F_DataFlashWrite(-			AT91PS_DataFlash, uchar *, int, int); 	int AddrToWrite = addr_dest; 	AT91PS_DataFlash pFlash = &DataFlashInst;  	pFlash = AT91F_DataflashSelect (pFlash, &AddrToWrite);++	if (pFlash == 0)+		return ERR_UNKNOWN_FLASH_TYPE;++	if (size_dataflash(pFlash,addr_dest,size) == 0)+		return ERR_INVAL;++	if (prot_dataflash(pFlash,addr_dest) == 0)+		return ERR_PROTECTED;+		 	if (AddrToWrite == -1) 		return -1; -	return AT91F_DataFlashWrite (pFlash, (char *) addr_src, AddrToWrite,-								 size);+	return AT91F_DataFlashWrite (pFlash, (char *) addr_src, AddrToWrite, size);+ }  @@ -242,3 +363,4 @@ void dataflash_perror (int err) }  #endif+	diff -purN u-boot-1.0.0.orig/include/configs/at91rm9200dk.h u-boot-1.0.0.test/include/configs/at91rm9200dk.h--- u-boot-1.0.0.orig/include/configs/at91rm9200dk.h	Fri Jun 27 23:32:45 2003+++ u-boot-1.0.0.test/include/configs/at91rm9200dk.h	Fri Nov  7 20:09:16 2003@@ -105,7 +105,7 @@ #define CONFIG_NET_RETRY_COUNT 20  #define CONFIG_HAS_DATAFLASH	1-#define CFG_SPI_WRITE_TOUT	CFG_HZ+#define CFG_SPI_WRITE_TOUT	(5*CFG_HZ) #define CFG_MAX_DATAFLASH_BANKS 2 #define CFG_MAX_DATAFLASH_PAGES 16384 #define CFG_DATAFLASH_LOGIC_ADDR_CS0	0xC0000000	/* Logical adress for CS0 */@@ -118,9 +118,20 @@ #define CFG_MAX_FLASH_SECT 40 #define CFG_FLASH_ERASE_TOUT	(2*CFG_HZ) /* Timeout for Flash Erase */ #define CFG_FLASH_WRITE_TOUT	(2*CFG_HZ) /* Timeout for Flash Write */++#undef	CFG_ENV_IS_IN_DATAFLASH++#ifdef CFG_ENV_IS_IN_DATAFLASH+#define CFG_ENV_OFFSET 0x20000  +#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET)+#define CFG_ENV_SIZE 0x2000  /* 0x8000 */+#else #define	CFG_ENV_IS_IN_FLASH	1 #define CFG_ENV_ADDR (PHYS_FLASH_1 + 0xe000)  /* 0x10000 */ #define CFG_ENV_SIZE 0x2000  /* 0x8000 */+#endif++ #define CFG_LOAD_ADDR 0x21000000  /* default load address */  #define CFG_BOOT_SIZE		0x6000 /* 24 KBytes */diff -purN u-boot-1.0.0.orig/include/dataflash.h u-boot-1.0.0.test/include/dataflash.h--- u-boot-1.0.0.orig/include/dataflash.h	Fri Jun 27 23:32:40 2003+++ u-boot-1.0.0.test/include/dataflash.h	Fri Nov  7 15:46:59 2003@@ -37,16 +37,15 @@ #include <asm/arch/hardware.h> #include "config.h" +/*number of protected area*/+#define NB_DATAFLASH_AREA	4 +/*define the area structure*/ typedef struct {-	unsigned long base;		/* logical base address for a bank */-	unsigned long size;		/* total bank size */-	unsigned long page_count;-	unsigned long page_size;-	unsigned long id;		/* device id */-	unsigned char protect[CFG_MAX_DATAFLASH_PAGES]; /* page protection status */-} dataflash_info_t;-+	unsigned long start;+	unsigned long end;+	unsigned char protected;+} dataflash_protect_t;  typedef unsigned int AT91S_DataFlashStatus; @@ -80,6 +79,7 @@ typedef struct _AT91S_Dataflash { 	int page_offset;			/* page offset in command */ 	int byte_mask;				/* byte mask in command */ 	int cs;+	dataflash_protect_t area_list[NB_DATAFLASH_AREA]; /* area protection status */ } AT91S_DataflashFeatures, *AT91PS_DataflashFeatures;  /*---------------------------------------------*/@@ -91,13 +91,13 @@ typedef struct _AT91S_DataFlash { } AT91S_DataFlash, *AT91PS_DataFlash;  + typedef struct _AT91S_DATAFLASH_INFO {  	AT91S_DataflashDesc Desc; 	AT91S_DataflashFeatures Device; /* Pointer on a dataflash features array */ 	unsigned long logical_address; 	unsigned int id;			/* device id */-	unsigned char protect[CFG_MAX_DATAFLASH_PAGES]; /* page protection status */ } AT91S_DATAFLASH_INFO, *AT91PS_DATAFLASH_INFO;  @@ -106,6 +106,7 @@ typedef struct _AT91S_DATAFLASH_INFO { #define AT45DB161	0x2c #define AT45DB321	0x34 #define AT45DB642	0x3c+#define AT45DB128	0x10  #define AT91C_DATAFLASH_TIMEOUT		10000	/* For AT91F_DataFlashWaitReady */ @@ -166,6 +167,9 @@ typedef struct _AT91S_DATAFLASH_INFO {  /*-------------------------------------------------------------------------------------------------*/ +extern int size_dataflash (AT91PS_DataFlash pdataFlash, unsigned long addr, unsigned long size);+extern int prot_dataflash (AT91PS_DataFlash pdataFlash, unsigned long addr);+extern int dataflash_real_protect (int flag, unsigned long start_addr, unsigned long end_addr); extern int addr_dataflash (unsigned long addr); extern int read_dataflash (unsigned long addr, unsigned long size, char *result); extern int write_dataflash (unsigned long addr, unsigned long dest, unsigned long size);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲视频一区二区| 蜜臀av一区二区在线免费观看| 欧美日韩国产片| 91视频一区二区| 91色九色蝌蚪| 色av成人天堂桃色av| 色哟哟一区二区三区| 色综合久久综合| 欧美三级日韩三级| 欧美日韩国产高清一区二区| 欧美日韩在线三区| 国产成人丝袜美腿| 91亚洲大成网污www| 色哟哟一区二区在线观看 | 亚洲综合精品久久| 一区二区在线观看不卡| 一区二区三区四区不卡视频| 一区二区三区波多野结衣在线观看 | 一区二区久久久| 亚洲成人av一区二区| 日产国产高清一区二区三区| 久久精品理论片| 国产成人精品亚洲777人妖| 成人h动漫精品一区二区| 日本福利一区二区| 日韩免费看网站| 亚洲国产成人在线| 亚洲bt欧美bt精品777| 国内精品久久久久影院一蜜桃| 免费观看91视频大全| 国产成人精品一区二区三区四区 | 亚洲综合色噜噜狠狠| 免费人成在线不卡| 不卡高清视频专区| 777色狠狠一区二区三区| 久久色视频免费观看| 亚洲男人都懂的| 精品在线免费视频| 色综合久久中文综合久久97| 91精品麻豆日日躁夜夜躁| 国产欧美精品区一区二区三区 | 国产精品香蕉一区二区三区| 97久久精品人人澡人人爽| 91精品在线免费| 亚洲视频免费看| 国产专区欧美精品| 欧美性色综合网| 欧美国产欧美综合| 免播放器亚洲一区| 欧美影院精品一区| 国产精品久久毛片av大全日韩| 日韩精品欧美精品| 99国产精品久久久| 国产亚洲一区字幕| 蜜桃一区二区三区在线观看| 色香蕉成人二区免费| 日本一区二区三区在线不卡| 日韩国产高清影视| 91成人在线观看喷潮| 国产精品免费观看视频| 黄色精品一二区| 欧美一区二区免费视频| 亚洲一区影音先锋| 色播五月激情综合网| 国产精品免费丝袜| 国产精品一区二区你懂的| 91精品国产综合久久蜜臀| 亚洲成a天堂v人片| 欧美午夜理伦三级在线观看| 亚洲视频免费观看| 91亚洲资源网| 成人免费视频在线观看| 粉嫩一区二区三区性色av| 久久久久亚洲综合| 久久爱另类一区二区小说| 欧美xingq一区二区| www.性欧美| 国产精品久久久久国产精品日日| 国产麻豆成人精品| 欧美激情中文不卡| 97国产一区二区| 亚洲精品乱码久久久久久| 欧日韩精品视频| 亚洲高清一区二区三区| 欧美在线你懂得| 天天综合网 天天综合色| 欧美日韩国产精品自在自线| 午夜精品免费在线| 欧美日本一区二区| 九九精品视频在线看| 久久久99久久| 97成人超碰视| 日韩福利电影在线| 2024国产精品| 99久久免费国产| 亚洲午夜久久久久久久久电影网| 欧美精品一级二级| 国产最新精品免费| 亚洲欧美激情一区二区| 欧美日韩精品欧美日韩精品一| 日韩av在线发布| 欧美激情中文字幕一区二区| 91香蕉视频黄| 青青草国产精品97视觉盛宴 | 97se狠狠狠综合亚洲狠狠| 最近中文字幕一区二区三区| 91成人网在线| 欧美三级欧美一级| 日本欧美久久久久免费播放网| 精品久久国产97色综合| 成人av中文字幕| 日韩中文字幕一区二区三区| 精品国产百合女同互慰| 91免费看片在线观看| 日韩黄色免费电影| 国产精品你懂的| 3751色影院一区二区三区| 国产69精品久久久久777| 亚洲成av人在线观看| 久久精品亚洲精品国产欧美| 91色综合久久久久婷婷| 国模一区二区三区白浆 | 欧美三级中文字| 国产在线国偷精品免费看| 一区二区三区在线观看欧美| 精品毛片乱码1区2区3区| 欧美在线制服丝袜| 粗大黑人巨茎大战欧美成人| 日韩国产欧美三级| 亚洲免费观看高清完整版在线观看熊| 日韩精品中午字幕| 欧美伊人久久大香线蕉综合69| 国产精品996| 美腿丝袜亚洲一区| 五月天欧美精品| 亚洲精品日日夜夜| 中文字幕一区二区三区av| 精品国产一区二区三区四区四| 欧美视频一区二区三区四区| av在线这里只有精品| 国产一本一道久久香蕉| 美腿丝袜亚洲综合| 日韩av电影免费观看高清完整版 | 免费av成人在线| 国产精品一色哟哟哟| 日韩二区三区四区| 亚洲第一在线综合网站| 亚洲综合激情小说| 亚洲制服丝袜在线| 亚洲一区在线视频| 一个色妞综合视频在线观看| 亚洲日本免费电影| 自拍视频在线观看一区二区| 日本一区二区三区国色天香 | 久久国产日韩欧美精品| 秋霞成人午夜伦在线观看| 亚洲亚洲人成综合网络| 一区2区3区在线看| 视频一区在线播放| 美腿丝袜在线亚洲一区| 国产在线精品国自产拍免费| 国内成人自拍视频| 岛国精品在线播放| jlzzjlzz国产精品久久| 色就色 综合激情| 欧美亚洲高清一区| 91精品国产91久久综合桃花| 91精品国产麻豆国产自产在线 | 99久久99久久免费精品蜜臀| 成人av网址在线| 91啦中文在线观看| 欧美唯美清纯偷拍| 欧美一区二区私人影院日本| 日韩视频免费观看高清完整版 | 成人动漫在线一区| 色综合中文综合网| av一二三不卡影片| 日本韩国欧美一区二区三区| 欧美在线免费观看视频| 欧美精品高清视频| 久久久综合精品| 亚洲欧美日韩国产一区二区三区| 亚洲国产成人porn| 国产呦精品一区二区三区网站| 成人免费视频视频在线观看免费| 91麻豆免费视频| 欧美电影免费观看高清完整版在线 | 热久久久久久久| 国产99一区视频免费| 在线亚洲免费视频| 精品成人免费观看| 亚洲人123区| 精品一区二区三区在线播放| 国产成人一区二区精品非洲| 色狠狠av一区二区三区| 精品国产乱码久久久久久闺蜜| 自拍偷在线精品自拍偷无码专区| 青娱乐精品视频| 色呦呦网站一区| 国产日本一区二区|