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

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

?? cmd_boot.c

?? ARM的bootloader代碼.rar
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * (C) Copyright 2002 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> * Marius Groeger <mgroeger@sysgo.de> *  * (C) Copyright 2000 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA *//* * Boot support */#include <armboot.h>#include <command.h>#include <cmd_boot.h>#include <cmd_autoscript.h>#include <s_record.h>#include <net.h>#if (CONFIG_COMMANDS & CFG_CMD_LOADS)static ulong load_serial (ulong offset);static int read_record (char *buf, ulong len);static int do_echo = 1;#endif#if (CONFIG_COMMANDS & CFG_CMD_BDI)int do_bdinfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	int i;	printf ("enetaddr      =");	for (i=0; i<6; ++i) {		printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);	}		printf("\n");	printf ("ip_addr       = ");		print_IPaddr (bd->bi_ip_addr);		printf("\n");	printf ("baudrate      = %d bps\n", bd->bi_baudrate);	printf ("arch_number   = %ld\n", bd->bi_arch_number);	printf ("env_t         = %08lX\n", (ulong)bd->bi_env);	printf ("boot_params   = %08lX\n", (ulong)bd->bi_boot_params);	for (i=0; i<CONFIG_NR_DRAM_BANKS; ++i) {		printf ("DRAM:%02d.start = %08lX\n", i, bd->bi_dram[i].start);		printf ("DRAM:%02d.size  = %08lX\n", i, bd->bi_dram[i].size);	}	return 0;}#endif	/* CFG_CMD_BDI */int do_go (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	ulong	addr, rc;	if (argc < 2) {		printf ("Usage:\n%s\n", cmdtp->usage);		return 1;	}	addr = simple_strtoul(argv[1], NULL, 16);	printf ("## Starting application at 0x%08lx ...\n", addr);	/*	 * pass address parameter as argv[0] (aka command name),	 * and all remaining args	 */	rc = ((ulong (*)(bd_t *, int, char *[]))addr) (bd, --argc, &argv[1]);	printf ("## Application terminated, rc = 0x%lx\n", rc);	return 0;}#if (CONFIG_COMMANDS & CFG_CMD_LOADS)int do_load_serial (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	ulong offset = 0;	ulong addr;	int i;	char *env_echo;#ifdef	CFG_LOADS_BAUD_CHANGE	int loads_baudrate = bd->bi_baudrate;#endif	if (((env_echo = getenv(bd, "loads_echo")) != NULL) && (*env_echo == '1')) {		do_echo = 1;	} else {		do_echo = 0;	}#ifdef	CFG_LOADS_BAUD_CHANGE	if (argc >= 2) {		offset = simple_strtoul(argv[1], NULL, 16);	}	if (argc == 3) {		loads_baudrate = (int)simple_strtoul(argv[2], NULL, 10);		/* default to current baudrate */		if (loads_baudrate == 0)			loads_baudrate = bd->bi_baudrate;	}#else	/* ! CFG_LOADS_BAUD_CHANGE */	if (argc == 2) {		offset = simple_strtoul(argv[1], NULL, 16);	}#endif	/* CFG_LOADS_BAUD_CHANGE */#ifdef	CFG_LOADS_BAUD_CHANGE	if (loads_baudrate != bd->bi_baudrate) {		printf ("## Switch baudrate to %d bps and press ENTER ...\n",			loads_baudrate);		udelay(50000);		serial_setbrg (bd->bi_intfreq, loads_baudrate);		udelay(50000);		for (;;) {			if (getc() == '\r')				break;		}	}#endif	/* CFG_LOADS_BAUD_CHANGE */	printf ("## Ready for S-Record download ...\n");	addr = load_serial (offset);	/*	 * Gather any trailing characters (for instance, the ^D which	 * is sent by 'cu' after sending a file), and give the	 * box some time (100 * 1 ms)	 */	for (i=0; i<100; ++i) {		if (serial_tstc()) {			(void) serial_getc();		}		udelay(1000);	}	if (addr == ~0) {		printf ("## S-Record download aborted\n");	} else {		printf ("## Start Addr      = 0x%08lx\n", addr);		load_addr = addr;	}#ifdef	CFG_LOADS_BAUD_CHANGE	if (loads_baudrate != bd->bi_baudrate) {		printf ("## Switch baudrate to %d bps and press ESC ...\n",			(int)bd->bi_baudrate);		udelay (50000);		serial_setbrg (bd->bi_intfreq, bd->bi_baudrate);		udelay (50000);		for (;;) {			if (getc() == 0x1B) /* ESC */				break;		}	}#endif	return 0;}static ulongload_serial (ulong offset){	char	record[SREC_MAXRECLEN + 1];	/* buffer for one S-Record	*/	char	binbuf[SREC_MAXBINLEN];		/* buffer for binary data	*/	int	binlen;				/* no. of data bytes in S-Rec.	*/	int	type;				/* return code for record type	*/	ulong	addr;				/* load address from S-Record	*/	ulong	store_addr;	ulong	start_addr = ~0;	ulong	end_addr   =  0;	int	line_count =  0;	while (read_record(record, SREC_MAXRECLEN + 1) >= 0) {		type = srec_decode (record, &binlen, &addr, binbuf);		if (type < 0) {			return (~0);		/* Invalid S-Record		*/		}		switch (type) {		case SREC_DATA2:		case SREC_DATA3:		case SREC_DATA4:		    store_addr = addr + offset;		    if (addr2info(store_addr)) {			int rc;			switch (rc=flash_write((uchar *)binbuf,store_addr,binlen))			{			case 0:	break;			case 1: printf ("\nError: Timeout writing to Flash\n");				return (~0);			case 2:	printf ("\nError: Flash not Erased\n");				return (~0);			case 4: printf ("\nError: Can't write to protected Flash sectors\n");				return (~0);			default:				printf ("%s[%d] FIXME: rc=%d\n",					__FILE__,__LINE__,rc);				return (~0);			}		    } else {			memcpy ((char *)(store_addr), binbuf, binlen);		    }		    if ((store_addr) < start_addr)		    	start_addr = store_addr;		    if ((store_addr+binlen-1) > end_addr)		    	end_addr = store_addr+binlen-1;		    break;		case SREC_END2:		case SREC_END3:		case SREC_END4:		    udelay (10000);		    printf ("\n"			    "## First Load Addr = 0x%08lx\n"			    "## Last  Load Addr = 0x%08lx\n"			    "## Total Size      = 0x%08lx = %ld Bytes\n",			    start_addr, end_addr,			    end_addr-start_addr+1,			    end_addr-start_addr+1		    );		    return (addr);		case SREC_START:		    break;		default:		    break;		}		if (!do_echo) {	/* print a '.' every 100 lines */			if ((++line_count % 100) == 0)				putc ('.');		}	}	return (~0);			/* Download aborted		*/}static intread_record (char *buf, ulong len){	char *p;	char c;	--len;	/* always leave room for terminating '\0' byte */	for (p=buf; p < buf+len; ++p) {		c = serial_getc();		/* read character		*/		if (do_echo)			serial_putc (c);	/* ... and echo it		*/		switch (c) {		case '\r':		case '\n':			*p = '\0';			return (p - buf);		case '\0':		case 0x03:			/* ^C - Control C		*/			return (-1);		default:			*p = c;		}	    // Check for the console hangup (if any different from serial)		if (ctrlc())		{		    return (-1);		}	}	/* line too long - truncate */	*p = '\0';	return (p - buf);}#endif	/* CFG_CMD_LOADS */#if (CONFIG_COMMANDS & CFG_CMD_LOADB)  /* loadb command (load binary) included */#define XON_CHAR        17#define XOFF_CHAR       19#define START_CHAR      0x01#define END_CHAR        0x0D#define SPACE           0x20#define K_ESCAPE        0x23#define SEND_TYPE       'S'#define DATA_TYPE       'D'#define ACK_TYPE        'Y'#define NACK_TYPE       'N'#define BREAK_TYPE      'B'#define tochar(x) ((char) (((x) + SPACE) & 0xff))#define untochar(x) ((int) (((x) - SPACE) & 0xff))extern int os_data_count;extern int os_data_header[8];void set_kerm_bin_mode(unsigned long *);int k_recv(void);int s1boot(unsigned long *, unsigned long *, int *);static ulong load_serial_bin (ulong offset);char his_eol;        /* character he needs at end of packet */int  his_pad_count;  /* number of pad chars he needs */char his_pad_char;   /* pad chars he needs */char his_quote;      /* quote chars he'll use */int do_load_serial_bin (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	ulong offset = 0;	ulong addr;	int i;	int loadb_baudrate = bd->bi_baudrate;	int rc = 0;	if (argc >= 2) {		offset = simple_strtoul(argv[1], NULL, 16);	}	if (argc == 3) {		loadb_baudrate = (int)simple_strtoul(argv[2], NULL, 10);		/* default to current baudrate */		if (loadb_baudrate == 0)			loadb_baudrate = bd->bi_baudrate;	}	if (loadb_baudrate != bd->bi_baudrate) {		printf ("## Switch baudrate to %d bps and press ENTER ...\n",			loadb_baudrate);		udelay(50000);		serial_setbrg (bd, loadb_baudrate);		udelay(50000);		for (;;) {			if (getc() == '\r')				break;		}	}	printf ("## Ready for binary (kermit) download ...\n");	addr = load_serial_bin (offset);	/*	 * Gather any trailing characters (for instance, the ^D which	 * is sent by 'cu' after sending a file), and give the	 * box some time (100 * 1 ms)	 */	for (i=0; i<100; ++i) {		if (serial_tstc()) {			(void) serial_getc();		}		udelay(1000);	}	if (addr == ~0) {		load_addr = 0;		printf ("## Binary (kermit) download aborted\n");	} else {		printf ("## Start Addr      = 0x%08lx\n", addr);		load_addr = addr;	}	if (loadb_baudrate != bd->bi_baudrate) {		printf ("## Switch baudrate to %d bps and press ESC ...\n",			(int)bd->bi_baudrate);		udelay (50000);		serial_setbrg (bd, bd->bi_baudrate);		udelay (50000);		for (;;) {			if (getc() == 0x1B) /* ESC */				break;		}	}#ifdef CONFIG_AUTOSCRIPT	if (load_addr) {		char *s;		if (((s = getenv(bd, "autoscript")) != NULL) && (strcmp(s,"yes") == 0)) {			printf("Running autoscript at addr 0x%08lX ...\n", load_addr);			rc = autoscript (bd, load_addr);		}	}#endif	return rc;}static ulongload_serial_bin (ulong offset){  set_kerm_bin_mode((ulong *)offset);  k_recv();  return offset;}void send_pad(void){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合激情成人伊人| 另类的小说在线视频另类成人小视频在线 | 一色桃子久久精品亚洲| 国产在线播放一区三区四| 2021国产精品久久精品| 国产麻豆成人传媒免费观看| 久久精品男人的天堂| 顶级嫩模精品视频在线看| 中文字幕制服丝袜成人av| 91污在线观看| 日韩影院精彩在线| 欧美成人a视频| 国产91丝袜在线播放| 亚洲女爱视频在线| 欧美精品色综合| 韩国女主播成人在线| 国产日韩av一区| 一本色道a无线码一区v| 日韩国产欧美一区二区三区| 欧美大片免费久久精品三p| 国产成人无遮挡在线视频| 亚洲欧美一区二区久久| 69久久夜色精品国产69蝌蚪网| 精品一区二区在线免费观看| 中文字幕一区二区三中文字幕| 欧美中文字幕一区二区三区亚洲| 美女高潮久久久| 国产精品久久久99| 欧美日韩成人综合在线一区二区| 国内外精品视频| 亚洲午夜精品网| wwwwxxxxx欧美| 在线精品国精品国产尤物884a| 蜜臀av国产精品久久久久| 国产精品午夜春色av| 在线不卡一区二区| 成人免费毛片嘿嘿连载视频| 五月天一区二区| 国产欧美日产一区| 欧美一区二区三区性视频| 99热精品国产| 黄色日韩三级电影| 夜夜亚洲天天久久| 国产免费成人在线视频| 欧美日韩黄色影视| 波多野结衣一区二区三区| 免费视频一区二区| 一区二区三区高清在线| 国产网红主播福利一区二区| 5858s免费视频成人| av亚洲精华国产精华| 精品亚洲aⅴ乱码一区二区三区| 亚洲欧美电影一区二区| 国产欧美一区二区精品久导航 | 91精品国产欧美一区二区18| 91欧美激情一区二区三区成人| 狠狠色丁香久久婷婷综合_中 | 欧美zozozo| 欧美日韩国产一二三| 91丨九色丨尤物| 成人短视频下载| 国产成人综合在线播放| 紧缚奴在线一区二区三区| 亚洲成av人片观看| 一区二区三区免费看视频| 亚洲国产精品二十页| 久久亚洲一区二区三区四区| 欧美美女喷水视频| 欧美写真视频网站| 在线观看成人小视频| 91网站最新地址| 不卡在线观看av| 成人永久aaa| 成人va在线观看| 国产99久久久国产精品| 国产成人av一区| 国产精品一区二区在线观看网站 | 国产麻豆精品95视频| 韩国av一区二区三区在线观看| 精品一区二区三区不卡| 精品一区二区在线播放| 久久精品国产一区二区三区免费看| 日韩电影在线观看一区| 午夜精品一区在线观看| 日韩在线一区二区三区| 日本不卡免费在线视频| 久久国产精品第一页| 国产一区二区不卡在线| 国产成人av一区| 99久久免费国产| 在线免费不卡电影| 欧美日本免费一区二区三区| 7777精品伊人久久久大香线蕉最新版| 欧美一区二区三区系列电影| 欧美不卡在线视频| 国产日韩av一区| 亚洲精品亚洲人成人网| 午夜精品一区二区三区三上悠亚 | 久久久久国产精品免费免费搜索| 国产视频亚洲色图| 自拍偷拍亚洲综合| 亚洲国产成人av好男人在线观看| 日韩精品一区第一页| 国产一区欧美日韩| 99re6这里只有精品视频在线观看| 在线视频一区二区免费| 欧美一区二区三区公司| 久久久久久久久久久久久夜| 日韩美女视频一区二区 | 91精品在线观看入口| 久久综合久久99| 亚洲视频电影在线| 丝袜美腿一区二区三区| 国产成人在线观看免费网站| 91激情五月电影| 日韩精品中文字幕一区| 亚洲欧洲一区二区在线播放| 日日噜噜夜夜狠狠视频欧美人| 国产成人av网站| 欧美日本国产一区| 中文字幕免费不卡| 五月婷婷欧美视频| 成人av网站在线观看| 欧美一区二区三区视频免费 | 一区二区三区四区不卡视频 | 国产麻豆精品在线| 欧美视频一区二| 日本一区二区免费在线观看视频| 亚洲国产成人porn| 成人一道本在线| 欧美大片一区二区三区| 亚洲综合偷拍欧美一区色| 国内外成人在线| 欧美精品一级二级| 中文字幕在线观看不卡视频| 免费成人在线视频观看| 91极品美女在线| 中文无字幕一区二区三区| 日本欧美加勒比视频| 色8久久人人97超碰香蕉987| 久久久777精品电影网影网 | 欧美性生交片4| 国产精品卡一卡二| 日本不卡高清视频| 日本精品免费观看高清观看| 欧美极品少妇xxxxⅹ高跟鞋| 捆绑变态av一区二区三区| 欧美性猛交xxxxxxxx| 亚洲欧美日韩电影| 国产.欧美.日韩| 久久女同精品一区二区| 蓝色福利精品导航| 欧美久久一区二区| 一区二区国产盗摄色噜噜| 成人国产免费视频| 日本一区二区视频在线观看| 国产老女人精品毛片久久| 欧美一级视频精品观看| 丝袜国产日韩另类美女| 欧美日韩一级黄| 亚洲在线视频网站| 91黄色免费版| 一区二区三区日本| 91国在线观看| 一个色综合av| 欧美在线制服丝袜| 亚洲一区二区三区自拍| 91污片在线观看| 亚洲一区二区三区不卡国产欧美| 91免费在线播放| 亚洲综合色在线| 欧美日韩日本视频| 日韩中文字幕亚洲一区二区va在线 | 久久精品国产99国产精品| 欧美一区二区三区在| 麻豆91在线观看| 日韩美女主播在线视频一区二区三区| 日韩电影一区二区三区四区| 欧美亚洲另类激情小说| 亚洲国产综合在线| 成人av网址在线观看| 国产精品沙发午睡系列990531| 成人黄色a**站在线观看| 亚洲视频一区二区免费在线观看| 成人午夜av在线| 一区二区三区四区亚洲| 欧美视频精品在线| 亚洲一区二区三区美女| 欧美日韩国产美| 奇米一区二区三区av| 精品久久久久久久久久久久包黑料| 韩国av一区二区三区在线观看| 国产精品久久久久久福利一牛影视| av高清久久久| 天堂蜜桃91精品| 色屁屁一区二区| 日韩av在线播放中文字幕| 精品88久久久久88久久久| 国产毛片精品国产一区二区三区| 国产精品护士白丝一区av|