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

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

?? norflash.h

?? 嵌入式系統兩種啟動模式源代碼
?? H
字號:
/***************************************************************************************************************************
 *filename:			NorFlash.h		
 *author:			wuer
 *create date:		2005-5-10 12:45                                                                      
 *description:	   	The file consists of some functions of Nor Flash                                             
 *modify history:	                                                                      
 *misc:           	因為芯片分為16位和32位,故所有對芯片的命令操作也分16位和32位操作。
 ****************************************************************************************************************************/
#include "HA_TypeDef.h"
#include <stdio.h>
#include "config.h"


#ifndef GE01
	/*宏NorFlash_32Bit,若定義了為32位NorFlash,否則為16位NorFlash*/
	#define NorFlash_32Bit
#endif


#ifdef NorFlash_32Bit
//////////////////////////////////
//       32位NorFlash操作       //
//////////////////////////////////
extern void InitEMI(void);
extern ER NorFlash_write( U32 address, U32 data );
extern ER NorFlash_read( U32 address);
extern ER NorFlash_idlejud(U32 address);
extern ER NorFlash_clearSR(U32 address);
extern ER NorFlash_bolckerase(U32 blockadd);
extern ER NorFlash_Normal(U32 address);
extern ER NorFlash_unlock( U32 address);
extern ER check(U32 head1, U32 head2, U32 num);

void InitEMI(void)
{
	*(RP)EMIADDR_CSGBAB	=	0x24002000;	                     
	*(RP)EMIADDR_CSGBCD	=	0x2c002800;	                       
	*(RP)EMIADDR_CSGBEF	=	0x34003000;	                       
	*(RP)EMIADDR_SMCONF	|=	0x00000200;
	*(RP)EMIADDR_SDCONF1=	0x0110a077;
	*(RP)EMIADDR_SDCONF2=	0x80000500;
	
	*(RP)EMIADDR_REMAP	=	0x0000000b;


}


ER NorFlash_idlejud(U32 address)
{
	U32 temp;
	U16 i = 0;
	U16 j = 0;
	
	*(RP)address = 0x700070;
	temp = *(RP)address;

	while( (temp & 0x800080) != 0x800080 )
	{
		for(i=0; i<0x1000; i++);
		temp = *(RP)address ;
		if(j++ >= 0x1000)
		{
		#ifdef USB_ICE
			print("It takes too many time! I can not put up with it!\n");
		#else
			printf("It takes too many time! I can not put up with it!\n");
		#endif
		return NO;
		}	
	}
	
	*(RP)address = 0xff00ff;
	
	return YES;
}

ER NorFlash_clearSR(U32 blockadd)
{
	*(RP)0x20000000 = 0x500050;
	
	if( NorFlash_idlejud(blockadd) != YES)
	{
	#ifdef USB_ICE
		print("clear SR FAIL!!\n");
	#else
		printf("clear SR FAIL!!\n");
	#endif
	return NO;
	}
	return YES;
}

	
ER NorFlash_Normal(U32 address)
{
	*(RP)address = 0xff00ff;

	return YES;
}


ER NorFlash_unlock( U32 address)
{
	int i;
	char *PrintTemp;
	
	*(RP)address = 0x600060;	
	*(RP)address = 0xd000d0;
		
	for(i=0; i<0x1000; i++);
	if(NorFlash_idlejud(address) != YES)
	{
	#ifdef USB_ICE
		sprintf(PrintTemp, "unlock at 0x%x failed!!\n", (U16)address);
		print(PrintTemp);
	#else
		printf("unlock at 0x%x failed!!\n", (U16)address);
	#endif
	return NO;
	}
	
	return YES;
}

ER NorFlash_lock( U32 address)
{
	*(RP)address = 0x600060;
	*(RP)address = 0x010001;
	
	
	NorFlash_idlejud(address);
	
	return YES;
}

ER NorFlash_bolckerase(U32 blockadd)
{
	U32 i;	
	char *PrintTemp;
	
	*(RP)blockadd = 0x200020;
	*(RP)blockadd = 0xd000d0;
	
	for(i=0; i<0x80000; i++);
	
	if(NorFlash_idlejud(blockadd) != YES)
	{
	#ifdef USB_ICE
		sprintf(PrintTemp, "blcokerase at 0x%x time out!\n", (U16)blockadd);
		print(PrintTemp);
	#else
		printf("blcokerase at 0x%x time out!\n", (U16)blockadd);
	#endif
	return NO;
	}
	
	NorFlash_clearSR(blockadd);
	return YES;
}


ER NorFlash_read( U32 address)
{
	U32 i;
	
	*(RP)address = 0xff00ff;	
	i = *(RP)address;
	
	return i;
}


ER NorFlash_write( U32 address, U32 data )
{
	int i;
	U32 temp;
	char *PrintTemp;
	
	*(RP)address = 0x400040;
	*(RP)address = data;
	
	for(i=0; i<0x800; i++);
	if(NorFlash_idlejud(address) != YES)
	{
	#ifdef USB_ICE
		sprintf(PrintTemp, "write at 0x%x failed!! \n", (U16)address);
		print(PrintTemp);
	#else
		printf("write at 0x%x failed!! \n", (U16)address);
	#endif
	return NO;
	}
	
	temp = *(RP)address;
	if(temp != data)
	{
	#ifdef USB_ICE
		sprintf(PrintTemp, "____write at 0x%x error!! 0x%x VS 0x%x!!\n",address, temp,data);
		print(PrintTemp);
	#else
		printf("____write at 0x%x error!! 0x%x VS 0x%x!!\n",address, temp,data);
	#endif
	return NO;
	}
	else 
		return YES;
}

ER check(U32 head1, U32 head2, U32 num)
{
	RP8 p1, p2;
	char data;
	
	p1 = (RP8)head1;
	p2 = (RP8)head2;
	
	
	while(num-->0)
	{
		data = *((RP8)p1++);
		
		if(data!= *((RP8)p2++))
		{
		#ifdef USB_ICE
			print("the copyed data is not the orignal one!!\n");
		#else
			printf("the copyed data is not the orignal one!!\n");
		#endif
		return NO;
		}
	}
	
	return YES;
}

#else
//////////////////////////////////
//       16位NorFlash操作       //
//////////////////////////////////

extern void InitEMI(void);
extern ER NorFlash_write( U32 address, U16 data );
extern ER NorFlash_read( U32 address);
extern ER NorFlash_idlejud(U32 address);
extern ER NorFlash_clearSR(U32 address);
extern ER NorFlash_bolckerase(U32 blockadd);
extern ER NorFlash_Normal(U32 address);
extern ER NorFlash_unlock( U32 address);
extern ER check(U32 head1, U32 head2, U32 num);


void InitEMI(void)
{
	*(RP)EMIADDR_CSGBAB	=	0x24002000;	                     
	*(RP)EMIADDR_CSGBCD	=	0x2c002800;	                       
	*(RP)EMIADDR_CSGBEF	=	0x34003000;	                       
	*(RP)EMIADDR_SMCONF	&=	~0x00000200;
	*(RP)EMIADDR_SDCONF1=	0x0110a077;
	*(RP)EMIADDR_SDCONF2=	0x80000500;
	
	*(RP)EMIADDR_REMAP	=	0x0000000b;


}

ER NorFlash_idlejud(U32 address)
{
	U16 temp = 0;
	
	*(RP16)address = 0x70;
	temp = *(RP16)address;
	while( (temp & 0x80) != 0x80 )
	{
		temp = *(RP16)address ;
	}
	
	*(RP16)address = 0xff;
	
	return YES;
}
	
ER NorFlash_clearSR(U32 blockadd)
{
	*(RP16)0x20000000 = 0x50;

	if( NorFlash_idlejud(blockadd) != YES)
	{
		#ifdef USB_ICE
			print("clear SR FAIL!!\n");
		#else
			printf("clear SR FAIL!!\n");
		#endif
		return NO;
	}

	return YES;
}	

ER NorFlash_Normal(U32 address)
{
	*(RP16)address = 0xff;

	return YES;
}


ER NorFlash_unlock( U32 address)
{
	int i;
	char *PrintTemp;

	*(RP16)address = 0x60;
	*(RP16)address = 0xd0;
	
	for(i=0; i<0x1000; i++);
	if(NorFlash_idlejud(address) != YES)
	{
		#ifdef USB_ICE
			sprintf(PrintTemp, "unlock at 0x%x failed!!\n", (U16)address);
			print(PrintTemp);
		#else
			printf("unlock at 0x%x failed!!\n", (U16)address);
		#endif
		return NO;
	}
	return YES;
}


ER NorFlash_lock( U32 address)
{
	*(RP16)address = 0x60;
	*(RP16)address = 0x01;
	
	
	NorFlash_idlejud(address);
	
	return YES;
}

ER NorFlash_bolckerase(U32 blockadd)
{
	int i;
	U16 temp;
	char *PrintTemp;
	
	*(RP16)blockadd = 0x20;
	*(RP16)blockadd = 0xd0;
	
	for(i=0; i<0x80000; i++);

	if(NorFlash_idlejud(blockadd) != YES)
	{
		#ifdef USB_ICE
			sprintf(PrintTemp, "blcokerase at 0x%x time out!\n", (U16)blockadd);
			print(PrintTemp);
		#else
			printf("blcokerase at 0x%x time out!\n", (U16)blockadd);
		#endif
	return NO;
	}
	
	temp = NorFlash_clearSR(blockadd );			       
	return YES;
}

ER NorFlash_read( U32 address)
{
	U16 i;
	
	*(RP16)address = 0xff;	
	i = *(RP16)address;
	
	NorFlash_idlejud(address);
	
	return i;
}


ER NorFlash_write( U32 address, U16 data )
{
	int i;
	U16 temp;
	char *PrintTemp;
	
	*(RP16)address = 0x40;
	*(RP16)address = data;
	
	for(i=0; i<0x800; i++);
	if(NorFlash_idlejud(address) != YES)
	{
		#ifdef USB_ICE
			sprintf(PrintTemp, "write at 0x%x failed!! \n", (U16)address);
			print(PrintTemp);
		#else
			printf("write at 0x%x failed!! \n", (U16)address);
		#endif
		return NO;
	}
	
	temp = *(RP)address;
	if(temp != data)
	{
		#ifdef USB_ICE
			sprintf(PrintTemp, "____write at 0x%x error!! 0x%x VS 0x%x!!\n",address, temp,data);
			print(PrintTemp);
		#else
			printf("____write at 0x%x error!! 0x%x VS 0x%x!!\n",address, temp, data);
		#endif
		return NO;
	}
	return YES;
}


ER check(U32 head1, U32 head2, U32 num)
{
	RP8 p1, p2;
	char data;
	
	p1 = (RP8)head1;
	p2 = (RP8)head2;
	
	
	while(num-->0)
	{
		data = *((RP8)p1++);
		
		if(data!= *((RP8)p2++))
		{
			#ifdef USB_ICE
				print("the copyed data is not the orignal one!!\n");
			#else
				printf("the copyed data is not the orignal one!!\n");
			#endif
			return NO;
		}
	}
	
	return YES;
}


#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区中文字幕电影| 久久久久久免费网| 日本少妇一区二区| 日韩欧美一区在线| 午夜一区二区三区在线观看| 日韩视频123| av在线不卡观看免费观看| 日本欧美一区二区| 亚洲婷婷综合色高清在线| 欧美一区国产二区| 91视频com| 风间由美一区二区三区在线观看| 一区二区三区不卡在线观看| 久久综合色一综合色88| 色婷婷综合久久久久中文 | 水野朝阳av一区二区三区| 国产欧美日韩卡一| 精品第一国产综合精品aⅴ| 91在线视频免费91| 国产寡妇亲子伦一区二区| 成人午夜又粗又硬又大| 亚洲精品一区二区三区蜜桃下载 | 日韩中文字幕1| 精品一区二区三区免费观看| 免费高清成人在线| 午夜久久福利影院| 亚洲综合免费观看高清完整版在线 | 日本韩国欧美在线| 成人国产精品免费网站| gogogo免费视频观看亚洲一| 国产另类ts人妖一区二区| 亚洲成av人综合在线观看| 亚洲一区二区四区蜜桃| 亚洲精品视频免费看| 一区二区三区中文字幕精品精品| 综合久久给合久久狠狠狠97色| 1024国产精品| 亚洲欧美日韩国产成人精品影院| 亚洲黄色性网站| 最新久久zyz资源站| 亚洲另类春色国产| 亚洲bt欧美bt精品| 黄网站免费久久| 成人美女视频在线观看| eeuss鲁片一区二区三区| 在线观看国产一区二区| www.视频一区| 欧美系列亚洲系列| 国产午夜亚洲精品午夜鲁丝片| 久久精品在这里| 欧美精品一区二区三区视频| 欧美激情在线一区二区| 亚洲国产乱码最新视频 | 欧美成人福利视频| 久久免费看少妇高潮| 国产精品三级电影| 亚洲一区在线观看网站| 青青草97国产精品免费观看 | 麻豆一区二区在线| 欧美亚洲动漫精品| 亚洲精品日日夜夜| 91香蕉视频在线| 亚洲国产精品精华液ab| 蜜乳av一区二区| 欧美成人乱码一区二区三区| 一卡二卡三卡日韩欧美| 国产成人免费av在线| www.66久久| 欧美日韩精品免费观看视频| 久久婷婷色综合| 日本欧美一区二区三区| 99re这里只有精品6| 久久久www成人免费毛片麻豆| 天天亚洲美女在线视频| 欧美性生活影院| 精品一区二区在线播放| 欧美日韩国产在线观看| 一区二区在线观看免费| 色av综合在线| 日本特黄久久久高潮| 91福利视频在线| 亚洲女与黑人做爰| 色天使色偷偷av一区二区| 国产亚洲成av人在线观看导航| 免费美女久久99| 日韩一区二区影院| 激情欧美日韩一区二区| 精品国产区一区| 高清视频一区二区| 亚洲欧洲精品天堂一级| 一本一本大道香蕉久在线精品| 国产精品天干天干在观线| 99久久精品久久久久久清纯| 亚洲三级电影网站| 欧美亚洲精品一区| 日日摸夜夜添夜夜添国产精品| 日韩午夜激情视频| 粉嫩一区二区三区性色av| 精品久久久久久久一区二区蜜臀| 国产成人鲁色资源国产91色综| 国产精品久久久久7777按摩| 色综合久久中文字幕| 日韩激情视频网站| 久久亚洲精精品中文字幕早川悠里 | 国产盗摄一区二区| 亚洲欧美一区二区在线观看| 91在线观看高清| 免费不卡在线视频| 自拍av一区二区三区| 欧美电影免费观看完整版| av高清久久久| 亚洲欧美国产毛片在线| 久久99精品国产| 久久亚洲精品小早川怜子| 精品1区2区3区| 亚洲国产精品成人综合色在线婷婷| 91在线播放网址| 在线播放欧美女士性生活| 在线综合+亚洲+欧美中文字幕| 色www精品视频在线观看| 欧美巨大另类极品videosbest | 波多野结衣亚洲| 色综合久久久久网| 欧美日韩精品一区二区在线播放 | 欧美一区二区三区电影| 国产免费成人在线视频| 午夜精品一区二区三区电影天堂 | 亚洲一二三区不卡| 国产一区日韩二区欧美三区| 日本久久精品电影| 亚洲精品一线二线三线| 亚洲靠逼com| 成人精品鲁一区一区二区| 91麻豆精品国产91久久久资源速度| 国产精品美日韩| 国产一区二区三区四区在线观看| 精品视频资源站| 日韩伦理av电影| 国产激情偷乱视频一区二区三区| 91精品国产综合久久久久久久| 亚洲日本va午夜在线电影| 国产精品亚洲人在线观看| 日韩一区二区三区视频在线| 亚洲亚洲精品在线观看| 91在线视频观看| 日韩美女视频一区| 91福利在线免费观看| 国产性天天综合网| 国产成人精品亚洲777人妖| 欧美精品一区二区三区蜜桃视频| 婷婷综合另类小说色区| 欧美三级中文字幕| 亚洲一区二区在线播放相泽| 色综合激情久久| 夜夜爽夜夜爽精品视频| 91国产成人在线| 偷拍一区二区三区| 欧美精品视频www在线观看| 亚洲国产成人av网| 在线播放亚洲一区| 久久9热精品视频| 国产网站一区二区| 北条麻妃一区二区三区| 国产性天天综合网| 99久久精品一区| 色中色一区二区| 蜜桃视频在线观看一区| 国产亚洲短视频| 色婷婷综合久色| 麻豆成人综合网| 国产精品青草综合久久久久99| 99精品久久99久久久久| 五月综合激情婷婷六月色窝| 亚洲精品一线二线三线| 在线免费不卡视频| 国产一区二区三区国产| 亚洲女人的天堂| 日韩欧美另类在线| 99久久久久久99| 日本不卡一区二区| 国产精品拍天天在线| 欧美久久久一区| 91在线观看污| 国产一区二区在线观看免费| 国产精品网站一区| 日韩欧美电影一区| 99久久婷婷国产| 激情五月播播久久久精品| 亚洲资源在线观看| 日本一二三四高清不卡| 欧美大肚乱孕交hd孕妇| 精品视频999| 一本色道久久综合狠狠躁的推荐 | 一本一道综合狠狠老| 国产成人一区在线| 国产在线视频一区二区| 日韩国产欧美三级| 中文字幕一区日韩精品欧美| 亚洲精品一区二区三区在线观看| 欧美一区日韩一区|