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

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

?? main.c

?? ARM 4510 bootloader,完整的工程實例
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "DataType.h"
#include "board.h"
#include "console.h"
#include "utils.h"
#include "types.h"
#include "39vf160.h"

#define	MAX_CMD_LEN	128
#define	MAX_ARGS	MAX_CMD_LEN/4
#define	ENTER_KEY	0x0d
#define	BACK_KEY	0x08
#define	ESC_KEY		0x1b

int IP_ADDRESS = 0xc0a80064;
unsigned int SERIAL_BAUD;
#define	DFT_SERIAL_BAUD	57600

#ifdef	__NO_REMAP
#define	DFT_DOWNLOAD_ADDR	0x1008000
#else
#define	DFT_DOWNLOAD_ADDR	0x8000
#endif

#define	DFT_PROGRAM_BEGIN	0
unsigned int download_addr;
unsigned int program_begin;	

#define	prompt()	puts("\\>")
char star_line[] = "/*********************************************************/\n";

/*********************************************************/
int tftp_main(unsigned long ip, unsigned long addr, int method);

int LoadFile2Mem(int argc, char *argv[])
{
	
	if(argc<2)
	{
		download_addr = DFT_DOWNLOAD_ADDR;
		printf("No begin address for download, use default address 0x%x\n", download_addr);
	}
	else
		download_addr = strtoul(argv[1]);
	
	tftp_main(IP_ADDRESS, download_addr, 0);

	return 0;
}

int ProgFlash(int argc, char *argv[])
{
	unsigned int size = ~0;
	unsigned int data_begin = ~0;
	unsigned int prog_begin = ~0;
	int overwrite0 = 1;
	int modify_a0 = 0;
	unsigned int bios_load_addr;		 

	if(argc<4)
	{		
		puts("Arguments error!\n");
		puts("Usage:	prog a1 a2 size [-no0]\na1 = program begin address\na2 = data pointer to ram\nsize = program size(Bytes)\n-no0 = don't overwrite address 0\n");
		return -1;
	}	
		
	prog_begin = strtoul(argv[1]);			
	data_begin = strtoul(argv[2]);
	size       = strtoul(argv[3]);
	
	if(size==0)
	{
		puts("Write 0 Bytes!\n");
		return -1;
	}
	
	if(prog_begin==-1||data_begin==-1)		//
	{
		puts("Arguments error\n");
		return -1;
	}	
	
	printf("program flash begin @0x%x, from ram data @0x%x, size = %dBytes\nAre you sure? [y/n]", prog_begin, data_begin, size);
	while(1)
	{
		if(kbhit())
		{
			int key = getch();
			if(key=='y'||key=='Y')
			{
				putch(key);
				next_line();
				break;
			}
			if(key=='n'||key=='N')
			{
				putch(key);
				next_line();
				return 0;
			}				
		}
			
	}		

#define	__ROM_SIZE	0x200000
#define	BIOS_BASE	(__ROM_SIZE-0x10000)
#define	BIOS_LOAD	(__ROM_SIZE-4)
	
	if(argc>4)
		if(strncmp(argv[4], "-no0", 4)==0)
			overwrite0 = 0;		
	
	if((prog_begin==0)&&overwrite0)
	{
		unsigned int ins;
		
		
		ins = *(unsigned int *)data_begin;				
		if((ins>>24)==0xea)			// instruction:	b	xxxx, now just support b instruction!!!			
			bios_load_addr = ((ins&0xffffff)<<2)+8;
		else
			bios_load_addr = 4;		// other instruction, jump to 4
													
		bios_load_addr = (bios_load_addr-BIOS_LOAD-8)/4;
		bios_load_addr = (bios_load_addr&0xffffff)|0xea000000;					
				
		*(unsigned int *)data_begin = 0xea000000+(BIOS_BASE-8)/4;				
		
		modify_a0 = 1;
	}
	
	SectorProg(prog_begin, (unsigned short *)data_begin, size);
	
	if(modify_a0)
	{
		size = FlashSector(size-1)+SECTOR_SIZE;				
		
		FlashRead(FlashSector(BIOS_LOAD), (unsigned short *)(DFT_DOWNLOAD_ADDR+size), SECTOR_SIZE);			
		*(unsigned int *)(DFT_DOWNLOAD_ADDR+size+SECTOR_SIZE-4) = bios_load_addr;
		SectorProg(FlashSector(BIOS_LOAD), (unsigned short *)(DFT_DOWNLOAD_ADDR+size), SECTOR_SIZE);			
	}
		
	
	return 0;
}

void trans_to_boot(int, int);

int BootLoader(int argc, char *argv[])
{
	int key;
	
	puts("boot from flash, are you sure? [y/n]");
	while(1)
	{
		if(kbhit())
		{
			key = getch();
			if(key=='y'||key=='Y')
			{
				putch(key);
				next_line();
				trans_to_boot(BIOS_BASE, BIOS_LOAD);												
			}
			if(key=='n'||key=='N')
			{
				putch(key);
				next_line();
				break;	
			}
		}			
	}
	
	return 0;
}

int AutoProgFlash(int argc, char *argv[])
{
	char ch_tmp[3][10];
	char *para_ptr[4];	
		
	ultostr(ch_tmp[0], 0);	
	ultostr(ch_tmp[1], DFT_DOWNLOAD_ADDR);	 	
	ultostr(ch_tmp[2], tftp_main(IP_ADDRESS, DFT_DOWNLOAD_ADDR, 1));		
	
	para_ptr[1] = ch_tmp[0];
	para_ptr[2] = ch_tmp[1];
	para_ptr[3] = ch_tmp[2];	
	
	ProgFlash(4, para_ptr);
	return	0;	
}

int CopyFlash(int argc, char *argv[])
{
	unsigned int src, dst, size;
	char tmp[10];
	
	if(argc<4)
	{
		puts("Usage : copy a1 a2 size\n");
		puts("a1 = src address, a2 = dst address, size = copy bytes (all in hex)\n");
		return -1;
	}
	
	src  = strtoul(argv[1]);
	dst  = strtoul(argv[2]);
	size = strtoul(argv[3]);
	if(src==-1||dst==-1||size==-1)
	{
		puts("give error address\n");
		return	-1;
	}	
	
	FlashRead(src, (unsigned short *)DFT_DOWNLOAD_ADDR, size);
	
	argv[1] = argv[2];
	argv[2] = tmp;
	ultostr(tmp, DFT_DOWNLOAD_ADDR);
	
	ProgFlash(4, argv);

	return 0;
}

int SetIPAddr(int argc, char *argv[])
{
	int i, j, err = 0;
	char *str;
	int ip[4];
	char ch = '.';
	
	if(argc<2)
	{
		printf("IP address : %u.%u.%u.%u\n", (IP_ADDRESS>>24)&0xff, (IP_ADDRESS>>16)&0xff, (IP_ADDRESS>>8)&0xff, IP_ADDRESS&0xff);
		return 0;
	}
	
	str = argv[1];
	
	for(j=0; j<4; j++)
	{
		if(j==3)
			ch = 0;
		i = 0;
		if(str[++i]!=ch)
			if(str[++i]!=ch)
				if(str[++i]!=ch)
					err = 1;
		str[i] = 0;
		ip[j] = CharToDec(str, i);
		if(ip[j]<0||ip[j]>254||err)
		{
			puts("IP address error\n");
			return -1;
		}			
		str += i+1;
	}
	
	printf("Set IP address : %u.%u.%u.%u\n", ip[0], ip[1], ip[2], ip[3]);					
	IP_ADDRESS = (ip[0]<<24)|(ip[1]<<16)|(ip[2]<<8)|ip[3];
	
	return 0;	
}

int LoadFromUart(int argc, char *argv[])
{
	int start, time_out;
	int load_addr = DFT_DOWNLOAD_ADDR;		
		
	if(argc>1)
	{
		start = strtoul(argv[1]);
		if(load_addr>0)
			load_addr = start;						
	}
	start = load_addr;
	
#define WAIT_TIME	0x500000	
	time_out = WAIT_TIME;	
	do{
		if(kbhit())
		{
			*((unsigned char *)load_addr++) = getkey();
			time_out = WAIT_TIME;
		}
	}while(--time_out);
	
	printf("Received 0x%x bytes from serial port.\n", load_addr-start);
	
	return 0;
#undef	WAIT_TIME	
}

int RunProgram(int argc, char *argv[])
{
	void (*fp)(void) = (void (*)(void))DFT_DOWNLOAD_ADDR;
	
	if(argc>1)
	{
		int	p = strtoul(argv[1]);
		if(p>0)
			fp = (void (*)(void))p;			
	}
	
	printf("Run program from 0x%x, are you aure? [y/n]", fp);
	
	while(1)
	{
		if(kbhit())
		{
			int key = getkey();
			if(key=='y'||key=='Y')
			{
				putch(key);
				next_line();
				break;
			}
			if(key=='n'||key=='N')
			{
				putch(key);
				next_line();
				return 0;
			}				
		}
	}
	
	(*fp)();
	
	return 0;		
}

extern unsigned int BaudParameters[6];
int SetBaudRate(int argc, char *argv[])
{
	int i;	
	
	for(i=0; i<6; i++)
		printf("%d : %d\n", i, BaudParameters[i]);
		
	puts("Please enter choice : ");
	
	while(1)
	{
		int ch = getch();
		
		if(ch<='6'||ch>='0')
		{
			SERIAL_BAUD = BaudParameters[ch-'0'];
			printf("Baud rate set to : %d\nPress any key to continue\n", SERIAL_BAUD);
			i = 0x4000;
			while(i--);		//wait transmit end
			console_init(SERIAL_BAUD);
			getch();
			break;
		}
			
	}	

	return 0;
}
/*********************************************************/
int WriteReg(int argc, char *argv[], int op)
{
	int reg;
	int val = 0;
	
	if(argc<3)
	{
		return -1;
	}
	
	reg = strtoul(argv[1]);
	val = strtoul(argv[2]);
	
	switch(op)
	{
		case 0:
			*(volatile unsigned char *)reg = val;
			break;
		case 1:
			*(volatile unsigned short *)reg = val;
			break;
		case 2:
			*(volatile unsigned int *)reg = val;
			break;
	}		
	printf("Write %x to %x\n", val, reg);
	return 0;	
}
int ReadReg(int argc, char *argv[], int op)
{
	int reg, val;
	
	if(argc<2)
		return -1;
		
	reg = strtoul(argv[1]);		
	
	switch(op)
	{
		case 0:
			val = *(volatile unsigned char*)reg;
			break;
		case 1:
			val = *(volatile unsigned short*)reg;
			break;
		case 2:	
			val = *(volatile unsigned int*)reg;
			break;	
	}
	printf("Read data at address:%x is %x\n", reg, val);	
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情视频网站| 麻豆久久久久久| 久久久91精品国产一区二区三区| 在线精品视频一区二区三四| 色狠狠桃花综合| 欧美亚洲自拍偷拍| 欧美日韩一区视频| 精品视频一区 二区 三区| 欧美日韩国产在线观看| 欧美日韩在线直播| 欧美肥妇free| 精品久久久久久最新网址| 精品国精品国产| 精品成人a区在线观看| 久久午夜羞羞影院免费观看| 国产日产精品一区| 国产精品免费久久| 一区二区三区四区不卡视频| 亚洲成人av福利| 美女国产一区二区| 国产精品夜夜嗨| 99国产精品国产精品久久| 91黄色激情网站| 欧美精品电影在线播放| 久久综合中文字幕| 国产精品久久久久久久久果冻传媒| 国产精品色一区二区三区| 亚洲天堂免费看| 青青国产91久久久久久| 国产 日韩 欧美大片| 91亚洲午夜精品久久久久久| 欧美片网站yy| 国产性色一区二区| 亚洲一区二区三区视频在线播放| 蜜桃视频一区二区三区在线观看| 国产一区二区视频在线| 欧美亚洲国产一区二区三区va| 欧美一区二区三区的| 国产亚洲欧美激情| 亚洲成人av免费| 成人av集中营| 欧美电视剧在线看免费| 一区二区欧美在线观看| 激情伊人五月天久久综合| 91麻豆国产在线观看| 日韩视频一区二区三区| 亚洲自拍偷拍麻豆| 国产精品香蕉一区二区三区| 制服丝袜中文字幕一区| 中文字幕一区二区三区色视频 | 欧美日韩中文一区| 中文幕一区二区三区久久蜜桃| 人禽交欧美网站| 欧美伊人久久久久久久久影院| 国产亚洲人成网站| 免费美女久久99| 91性感美女视频| 国产三级一区二区| 日本免费在线视频不卡一不卡二| 成人97人人超碰人人99| 久久免费看少妇高潮| 午夜精品久久久久久久蜜桃app | 色综合天天综合网国产成人综合天 | 美女网站色91| 欧美午夜影院一区| 国产精品第一页第二页第三页| 免费看欧美女人艹b| 色婷婷综合视频在线观看| 国产三级欧美三级日产三级99| 日韩中文字幕91| 欧美日韩免费高清一区色橹橹 | 欧美丰满少妇xxxbbb| 亚洲国产精品一区二区久久恐怖片| 成人午夜激情影院| 久久久综合视频| 国内欧美视频一区二区 | 国产精品入口麻豆九色| 狠狠狠色丁香婷婷综合激情 | 狠狠网亚洲精品| 久久综合狠狠综合久久综合88| 极品美女销魂一区二区三区免费| 欧美一区二区三区四区五区| 麻豆精品视频在线| 精品日韩欧美在线| 韩日欧美一区二区三区| 精品国产一区二区三区久久久蜜月| 琪琪久久久久日韩精品| 6080国产精品一区二区| 日韩精品欧美成人高清一区二区| 欧美人与z0zoxxxx视频| 另类小说色综合网站| 久久综合久久综合久久综合| 国产成人亚洲综合a∨婷婷 | 精品久久久久久最新网址| 国产一区二区免费视频| 国产精品蜜臀av| 91精品办公室少妇高潮对白| 亚洲第一在线综合网站| 欧美日韩电影在线播放| 免费一级片91| 国产日韩欧美a| 大尺度一区二区| 亚洲麻豆国产自偷在线| 欧美另类变人与禽xxxxx| 蜜臀av在线播放一区二区三区| 欧美激情一区二区三区不卡| 欧美日韩视频一区二区| 国产高清视频一区| 亚洲色图欧美激情| 欧美日韩国产高清一区二区 | 亚洲国产成人高清精品| 精品国内片67194| 色一区在线观看| 美女视频第一区二区三区免费观看网站| 久久综合色婷婷| 欧美最新大片在线看 | 国产精品久久久久久久蜜臀| 欧美夫妻性生活| 成人性色生活片| 麻豆精品蜜桃视频网站| 亚洲激情网站免费观看| 久久婷婷综合激情| 欧洲一区二区三区在线| 成人午夜精品在线| 日韩国产精品久久久| 亚洲女厕所小便bbb| 精品国产99国产精品| 在线视频你懂得一区二区三区| 国产综合久久久久影院| 亚洲成人www| 亚洲日本中文字幕区| 久久久精品免费观看| 777久久久精品| 日本高清无吗v一区| 国产成人精品网址| 久久精品二区亚洲w码| 无码av免费一区二区三区试看| 亚洲欧美另类小说| 亚洲国产成人一区二区三区| 精品国产1区2区3区| 日韩一区二区麻豆国产| 正在播放亚洲一区| 欧美三级电影网| 欧美性生活大片视频| 色综合久久综合网97色综合| 99视频一区二区| 国产宾馆实践打屁股91| 国产精品自拍在线| 国产成人免费av在线| 国产一区福利在线| 国产精品1区二区.| 国产一区二三区| 国产传媒欧美日韩成人| 福利电影一区二区| 成人午夜私人影院| 91麻豆蜜桃一区二区三区| 91丨porny丨户外露出| 99精品偷自拍| 91一区二区在线观看| 欧美亚洲一区二区三区四区| 欧美吻胸吃奶大尺度电影| 精品视频123区在线观看| 6080日韩午夜伦伦午夜伦| 日韩一区二区三区电影在线观看 | 91精品国产入口| 欧美一区二区在线视频| 日韩一区二区在线看| 精品国产sm最大网站免费看| 亚洲国产精品99久久久久久久久| 国产亚洲一本大道中文在线| 综合中文字幕亚洲| 亚洲观看高清完整版在线观看| 五月天一区二区| 国产一区二区三区观看| 99国产欧美久久久精品| 色婷婷av一区| 欧美一级久久久久久久大片| 国产日韩欧美激情| 一区二区三区在线视频免费观看| 亚洲一区二区在线免费看| 秋霞午夜av一区二区三区| 成人免费视频播放| 欧美性猛交xxxx乱大交退制版 | 国产激情一区二区三区| 国产成人在线视频播放| 色综合亚洲欧洲| 欧美一区二区三区白人| 国产精品天干天干在线综合| 亚洲在线视频网站| 精品一区二区免费在线观看| 91麻豆精品在线观看| 日韩精品一区二区在线| 亚洲欧美在线aaa| 免费日本视频一区| 91老师片黄在线观看| 久久久精品天堂| 午夜精品久久久久| av影院午夜一区| 久久亚洲春色中文字幕久久久| 亚洲国产综合在线|