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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cmd_mem.c

?? ARM的bootloader代碼.rar
?? C
字號:
/* * (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 *//* * Memory Functions * * Copied from FADS ROM, Dan Malek (dmalek@jlc.net) */#include <armboot.h>#include <command.h>#include <cmd_mem.h>#if (CONFIG_COMMANDS & CFG_CMD_MEMORY)static int mod_mem(cmd_tbl_t *, int, int, int, char *[]);/* Display values from last command. * Memory modify remembered values are different from display memory. */uint	dp_last_addr, dp_last_size;uint	dp_last_length = 0x40;uint	mm_last_addr, mm_last_size;static	ulong	base_address = 0;/* Memory Display * * Syntax: *	md{.b, .w, .l} {addr} {len} */#define DISP_LINE_LEN	16int do_mem_md    (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	ulong	addr, size, length;	ulong	i, nbytes, linebytes;	uchar	*cp;	/* We use the last specified parameters, unless new ones are	 * entered.	 */	addr = dp_last_addr;	size = dp_last_size;	length = dp_last_length;	if (argc < 2) {		printf ("Usage:\n%s\n", cmdtp->usage);		return 1;	}	if ((flag & CMD_FLAG_REPEAT) == 0) {		/* New command specified.  Check for a size specification.		 * Defaults to long if no or incorrect specification.		 */		size = 4;		if (argv[0][2] == '.') {			if (argv[0][3] == 'b') {				size = 1;			} else if (argv[0][3] == 'w') {				size = 2;			}		}		/* Address is specified since argc > 1		*/		addr = simple_strtoul(argv[1], NULL, 16);		addr += base_address;		/* If another parameter, it is the length to display.		 * Length is the number of objects, not number of bytes.		 */		if (argc > 2)			length = simple_strtoul(argv[2], NULL, 16);	}	/* Print the lines.	 *	 * We buffer all read data, so we can make sure data is read only	 * once, and all accesses are with the specified bus width.	 */	nbytes = length * size;	do {		char	linebuf[DISP_LINE_LEN];		uint	*uip = (uint   *)linebuf;		ushort	*usp = (ushort *)linebuf;		uchar	*ucp = (uchar *)linebuf;		printf("%08lx:", addr);		linebytes = (nbytes>DISP_LINE_LEN)?DISP_LINE_LEN:nbytes;		for (i=0; i<linebytes; i+= size) {			if (size == 4) {				printf(" %08x", (*uip++ = *((uint *)addr)));			} else if (size == 2) {				printf(" %04x", (*usp++ = *((ushort *)addr)));			} else {				printf(" %02x", (*ucp++ = *((uchar *)addr)));			}			addr += size;		}		printf("    ");		cp = linebuf;		for (i=0; i<linebytes; i++) {			if ((*cp < 0x20) || (*cp > 0x7e))				printf(".");			else				printf("%c", *cp);			cp++;		}		printf("\n");		nbytes -= linebytes;	} while (nbytes > 0);	dp_last_addr = addr;	dp_last_length = length;	dp_last_size = size;	return 0;}int do_mem_mm    (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	return mod_mem (cmdtp, 1, flag, argc, argv);}int do_mem_nm    (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	return mod_mem (cmdtp, 0, flag, argc, argv);}int do_mem_mw    (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	ulong	addr, size, writeval, count;	if ((argc < 3) || (argc > 4)) {		printf ("Usage:\n%s\n", cmdtp->usage);		return 1;	}	/* Check for size specification.	*/	size = 4;	if (argv[0][2] == '.') {		if (argv[0][3] == 'b') {			size = 1;		} else if (argv[0][3] == 'w') {			size = 2;		}	}	/* Address is specified since argc > 1	*/	addr = simple_strtoul(argv[1], NULL, 16);	addr += base_address;	/* Get the value to write.	*/	writeval = simple_strtoul(argv[2], NULL, 16);	/* Count ? */	if (argc == 4) {		count = simple_strtoul(argv[3], NULL, 16);	} else {		count = 1;	}	while (count-- > 0) {		if (size == 4)			*((ulong  *)addr) = (ulong )writeval;		else if (size == 2)			*((ushort *)addr) = (ushort)writeval;		else			*((uchar *)addr) = (uchar)writeval;		addr += size;	}	return 0;}int do_mem_cmp   (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	ulong	size, addr1, addr2, count, ngood;	if (argc != 4) {		printf ("Usage:\n%s\n", cmdtp->usage);		return 1;	}	/* Check for size specification.	*/	size = 4;	if (argv[0][3] == '.') {		if (argv[0][4] == 'b') {			size = 1;		} else if (argv[0][4] == 'w') {			size = 2;		}	}	addr1 = simple_strtoul(argv[1], NULL, 16);	addr1 += base_address;	addr2 = simple_strtoul(argv[2], NULL, 16);	addr2 += base_address;	count = simple_strtoul(argv[3], NULL, 16);	ngood = 0;	while (count-- > 0) {		if (size == 4) {			ulong word1 = *(ulong *)addr1;			ulong word2 = *(ulong *)addr2;			if (word1 != word2) {				printf("word at 0x%08lx (0x%08lx) "					"!= word at 0x%08lx (0x%08lx)\n",					addr1, word1, addr2, word2);				break;			}		}		else if (size == 2) {			ushort hword1 = *(ushort *)addr1;			ushort hword2 = *(ushort *)addr2;			if (hword1 != hword2) {				printf("halfword at 0x%08lx (0x%04x) "					"!= halfword at 0x%08lx (0x%04x)\n",					addr1, hword1, addr2, hword2);				break;			}		}		else {			uchar byte1 = *(uchar *)addr1;			uchar byte2 = *(uchar *)addr2;			if (byte1 != byte2) {				printf("byte at 0x%08lx (0x%02x) "					"!= byte at 0x%08lx (0x%02x)\n",					addr1, byte1, addr2, byte2);				break;			}		}		ngood++;		addr1 += size;		addr2 += size;	}	printf("Total of %ld %s%s were the same\n",		ngood, size == 4 ? "word" : size == 2 ? "halfword" : "byte",		ngood == 1 ? "" : "s");	return 0;}int do_mem_cp    (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	ulong	addr, size, dest, count;	if (argc != 4) {		printf ("Usage:\n%s\n", cmdtp->usage);		return 1;	}	/* Check for size specification.	*/	size = 4;	if (argv[0][2] == '.') {		if (argv[0][3] == 'b') {			size = 1;		} else if (argv[0][3] == 'w') {			size = 2;		}	}	addr = simple_strtoul(argv[1], NULL, 16);	addr += base_address;	dest = simple_strtoul(argv[2], NULL, 16);	dest += base_address;	count = simple_strtoul(argv[3], NULL, 16);	/* check if we are copying to Flash */	if (addr2info(dest) != NULL) {		int rc;		printf ("Copy to Flash... ");		rc = flash_write ((uchar *)addr, dest, count*size);	    	if (rc < 0) {	      		flash_perror(rc);			return 1;		}      		else      			printf("done.\n");                return 0;	}	while (count-- > 0) {		if (size == 4)			*((ulong  *)dest) = *((ulong  *)addr);		else if (size == 2)			*((ushort *)dest) = *((ushort *)addr);		else			*((uchar *)dest) = *((uchar *)addr);		addr += size;		dest += size;	}	return 0;}int do_mem_base  (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	if (argc > 1) {		/* Set new base address.		*/		base_address = simple_strtoul(argv[1], NULL, 16);	}	/* Print the current base address.	*/	printf("Base Address: 0x%08lx\n", base_address);	return 0;}int do_mem_loop  (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	ulong	addr, size, length, i, junk;	volatile uint	*longp;	volatile ushort *shortp;	volatile uchar	*cp;	if (argc < 3) {		printf ("Usage:\n%s\n", cmdtp->usage);		return 1;	}	/* Check for a size spefication.	 * Defaults to long if no or incorrect specification.	 */	size = 4;	if (argv[0][4] == '.') {		if (argv[0][5] == 'b')			size = 1;		else if (argv[0][5] == 'w')			size = 2;	}	/* Address is always specified.	*/	addr = simple_strtoul(argv[1], NULL, 16);	/* Length is the number of objects, not number of bytes.	*/	length = simple_strtoul(argv[2], NULL, 16);	/* We want to optimize the loops to run as fast as possible.	 * If we have only one object, just run infinite loops.	 */	if (length == 1) {		if (size == 4) {			longp = (uint *)addr;			for (;;)				i = *longp;		}		if (size == 2) {			shortp = (ushort *)addr;			for (;;)				i = *shortp;		}		cp = (uchar *)addr;		for (;;)			i = *cp;	}	if (size == 4) {		for (;;) {			longp = (uint *)addr;			i = length;			while (i-- > 0)				junk = *longp++;		}	}	if (size == 2) {		for (;;) {			shortp = (ushort *)addr;			i = length;			while (i-- > 0)				junk = *shortp++;		}	}	for (;;) {		cp = (uchar *)addr;		i = length;		while (i-- > 0)			junk = *cp++;	}	return 0;}/* Just a quickie to walk through some memory. */uint baseval = 0;int do_mem_mtest (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	int	*memaddr;	int	memval;	for (;;) {		if (ctrlc()) {			return 1;		}		memaddr = (uint *)CFG_MEMTEST_START;		printf("\nWriting: %08x, ", baseval);		memval = baseval;		do {			*memaddr++ = memval++;		} while ((uint)memaddr < CFG_MEMTEST_END);		memaddr = (uint *)CFG_MEMTEST_START;		printf("Reading: %08x", baseval);		memval = baseval;		do {			if (*memaddr != memval) {				printf ("Mem error @ 0x%08x: "					"found %08x, expected 0x%08x\n",					(uint)memaddr, *memaddr, memval);			}			memaddr++;			memval++;		} while ((uint)memaddr < CFG_MEMTEST_END);		baseval++;	}	return 0;}/* Modify memory. * * Syntax: *	mm{.b, .w, .l} {addr} *	nm{.b, .w, .l} {addr} */static intmod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char *argv[]){	ulong	addr, size, i;	int	nbytes;	extern char console_buffer[];	if (argc != 2) {		printf ("Usage:\n%s\n", cmdtp->usage);		return 1;	}#ifdef CONFIG_BOOT_RETRY_TIME	reset_cmd_timeout();	/* got a good command to get here */#endif	/* We use the last specified parameters, unless new ones are	 * entered.	 */	addr = mm_last_addr;	size = mm_last_size;	if ((flag & CMD_FLAG_REPEAT) == 0) {		/* New command specified.  Check for a size specification.		 * Defaults to long if no or incorrect specification.		 */		size = 4;		if (argv[0][2] == '.') {			if (argv[0][3] == 'b') {				size = 1;			} else if (argv[0][3] == 'w') {				size = 2;			}		}		/* Address is specified since argc > 1		*/		addr = simple_strtoul(argv[1], NULL, 16);		addr += base_address;	}	/* Print the address, followed by value.  Then accept input for	 * the next value.  A non-converted value exits.	 */	do {		printf("%08lx:", addr);		if (size == 4)			printf(" %08x", *((uint   *)addr));		else if (size == 2)			printf(" %04x", *((ushort *)addr));		else			printf(" %02x", *((uchar *)addr));		nbytes = readline (" ? ");		if (nbytes == 0) {			/* <CR> pressed as only input, don't modify current			 * location and move to next.			 */			if (incrflag)				addr += size;			nbytes = 1;#ifdef CONFIG_BOOT_RETRY_TIME			reset_cmd_timeout(); /* good enough to not time out */#endif		}#ifdef CONFIG_BOOT_RETRY_TIME		else if (nbytes == -2) {			break;	/* timed out, exit the command	*/		}#endif		else {			char *endp;			i = simple_strtoul(console_buffer, &endp, 16);			nbytes = endp - console_buffer;			if (nbytes) {#ifdef CONFIG_BOOT_RETRY_TIME				/* good enough to not time out				 */				reset_cmd_timeout();#endif				if (size == 4)					*((uint   *)addr) = i;				else if (size == 2)					*((ushort *)addr) = i;				else					*((uchar *)addr) = i;				if (incrflag)					addr += size;			}		}	} while (nbytes);	mm_last_addr = addr;	mm_last_size = size;	return 0;}int do_mem_crc (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]){	ulong	addr, length;	ulong	crc;	if (argc < 3) {		printf ("Usage:\n%s\n", cmdtp->usage);		return 1;	}	addr = simple_strtoul(argv[1], NULL, 16);	addr += base_address;	length = simple_strtoul(argv[2], NULL, 16);	crc = crc32 (0, (const uchar *)addr, length);	printf ("CRC32 for %08lx ... %08lx ==> %08lx\n",		addr, addr + length -1, crc);	return 0;}#endif	/* CFG_CMD_MEMORY */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色久优优欧美色久优优| 欧美日韩成人激情| 轻轻草成人在线| 国产精品国产三级国产a| 欧美一区二区三区视频在线| 成人午夜碰碰视频| 久久草av在线| 91免费精品国自产拍在线不卡| 免费在线观看视频一区| 亚洲视频综合在线| 久久久一区二区三区捆绑**| 欧美日韩大陆一区二区| 91免费在线视频观看| 国产精品99久久久久久久女警 | 亚洲成人免费在线| 国产精品每日更新| 久久亚洲精华国产精华液| 538在线一区二区精品国产| 日本福利一区二区| 成人av午夜影院| 国产乱子伦视频一区二区三区 | 亚洲丝袜另类动漫二区| 国产亚洲欧美日韩俺去了| 日韩免费一区二区三区在线播放| 欧美中文一区二区三区| 91丨porny丨蝌蚪视频| 懂色av一区二区三区蜜臀| 精品一二三四区| 麻豆国产精品视频| 青青草国产精品97视觉盛宴| 亚洲成人午夜影院| 亚洲午夜影视影院在线观看| 伊人开心综合网| 一区二区三区在线观看视频| 一区二区在线观看免费| 亚洲素人一区二区| 夜夜操天天操亚洲| 一区二区三区四区国产精品| 亚洲伦理在线免费看| 亚洲日本免费电影| 日韩精品成人一区二区三区| 亚洲精品在线电影| 激情文学综合丁香| 亚洲男人的天堂av| 亚洲精品国产a| 一区二区成人在线观看| 亚洲一级不卡视频| 午夜精品一区二区三区三上悠亚| 婷婷国产v国产偷v亚洲高清| 天堂蜜桃91精品| 日韩va亚洲va欧美va久久| 日本女优在线视频一区二区| 蜜桃一区二区三区四区| 国产最新精品免费| 成人免费视频视频在线观看免费| a美女胸又www黄视频久久| 99久久伊人久久99| 欧美亚日韩国产aⅴ精品中极品| 欧亚洲嫩模精品一区三区| 欧美男生操女生| 久久蜜臀中文字幕| 最新热久久免费视频| 亚洲国产另类精品专区| 久久精品国产一区二区三| 国产福利一区在线| 91麻豆福利精品推荐| 欧美日韩午夜在线视频| 精品国产99国产精品| 国产精品久久久久久久蜜臀| 亚洲精品中文在线| 久久精品久久99精品久久| 成人免费视频app| 在线影视一区二区三区| 欧美一区二区三区四区久久| 国产免费久久精品| 亚洲国产精品久久久久婷婷884| 秋霞午夜鲁丝一区二区老狼| 国产精品白丝av| 欧美日本在线播放| 欧美韩国日本综合| 偷拍一区二区三区| 国产成人精品免费网站| 欧美图区在线视频| 国产亚洲精品久| 亚洲不卡一区二区三区| 精品一区中文字幕| 91官网在线免费观看| 久久你懂得1024| 亚洲一级二级三级| 懂色av一区二区三区蜜臀| 欧美精品自拍偷拍| 国产精品久久久久影视| 日本欧洲一区二区| 91在线丨porny丨国产| 日韩欧美激情在线| 亚洲欧美日韩系列| 国产一区二区日韩精品| 欧美日韩一本到| 国产精品色呦呦| 蜜臀91精品一区二区三区 | 亚洲成人免费影院| 粉嫩久久99精品久久久久久夜| 欧美久久一二三四区| 一区在线观看免费| 国产激情一区二区三区桃花岛亚洲| 欧美在线不卡视频| 国产精品久久久久久久蜜臀| 精品一区二区三区在线播放| 欧美日韩在线一区二区| 亚洲视频小说图片| 风间由美一区二区av101| 欧美一区二区免费观在线| 一区二区三区在线视频免费观看| 国产福利一区二区三区视频| 日韩欧美高清一区| 婷婷开心久久网| 在线免费观看日本欧美| 国产精品美女久久久久久| 经典三级一区二区| 日韩一区二区麻豆国产| 天天综合网天天综合色| 在线一区二区视频| 一区二区在线免费| 一本大道久久精品懂色aⅴ| 国产精品午夜久久| 成人精品gif动图一区| 久久久国产综合精品女国产盗摄| 麻豆91在线播放| 3751色影院一区二区三区| 日韩精品一二三| 正在播放一区二区| 婷婷一区二区三区| 欧美一区二区三区啪啪| 亚洲成人精品影院| 欧美肥妇bbw| 日日摸夜夜添夜夜添国产精品| 欧美日韩亚洲综合| 日韩av二区在线播放| 欧美一区二区三区视频| 美国十次综合导航| 26uuu亚洲综合色| 国产精品影音先锋| 欧美经典一区二区| 成av人片一区二区| 日韩美女久久久| 一本色道亚洲精品aⅴ| 一区二区三区四区乱视频| 欧美色老头old∨ideo| 亚洲成av人片在线观看| 在线播放/欧美激情| 久久国产精品区| 国产日韩综合av| 成人激情电影免费在线观看| 综合色天天鬼久久鬼色| 91久久精品午夜一区二区| 亚洲国产综合色| 日韩一级二级三级精品视频| 老司机免费视频一区二区| www成人在线观看| 成人avav在线| 亚洲综合在线五月| 制服丝袜亚洲精品中文字幕| 蜜臀av国产精品久久久久 | 亚洲女子a中天字幕| 欧美在线色视频| 免费成人av在线播放| 国产情人综合久久777777| 一本一道久久a久久精品综合蜜臀| 亚洲电影视频在线| 2021国产精品久久精品| 99久久久无码国产精品| 日本成人超碰在线观看| 国产日韩欧美不卡| 欧美性感一区二区三区| 狠狠狠色丁香婷婷综合激情 | 欧美日韩一级黄| 国产在线播放一区二区三区| 中文字幕综合网| 欧美成人精品1314www| 99免费精品视频| 毛片基地黄久久久久久天堂| 国产精品久久久久毛片软件| 91精品在线麻豆| 成人91在线观看| 精品影视av免费| 亚洲一区二区三区爽爽爽爽爽| 欧美成人官网二区| 91麻豆文化传媒在线观看| 久久99热狠狠色一区二区| 亚洲精品成人悠悠色影视| 久久综合色婷婷| 欧美伦理电影网| av亚洲精华国产精华精| 久久99热这里只有精品| 亚洲一区国产视频| 亚洲国产精华液网站w| 7777精品久久久大香线蕉| aa级大片欧美| 国产精品正在播放| 日韩成人免费电影|