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

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

?? cpci750.c

?? 針對OpenJtag通用調試板的Uboot程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
	printf ("\nDEVICES\n");	for (i = 0; i <= DEVICE3; i++) {		base = memoryGetDeviceBaseAddress (i);		size = memoryGetDeviceSize (i);		width = memoryGetDeviceWidth (i) * 8;		printf ("DEV %d:  base - 0x%08x  size - %dM bytes\twidth - %d bits", i, base, size >> 20, width);		if (i == 0)			printf ("\t- FLASH\n");		else if (i == 1)			printf ("\t- FLASH\n");		else if (i == 2)			printf ("\t- FLASH\n");		else			printf ("\t- RTC/REGS/CAN\n");	}	/* Bootrom */	base = memoryGetDeviceBaseAddress (BOOT_DEVICE);	/* Boot */	size = memoryGetDeviceSize (BOOT_DEVICE);	width = memoryGetDeviceWidth (BOOT_DEVICE) * 8;	printf (" BOOT:  base - 0x%08x  size - %dM bytes\twidth - %d bits\t- FLASH\n",		base, size >> 20, width);	return (0);}/* DRAM check routines copied from gw8260 */#if defined (CFG_DRAM_TEST)/*********************************************************************//* NAME:  move64() -  moves a double word (64-bit)		     *//*								     *//* DESCRIPTION:							     *//*   this function performs a double word move from the data at	     *//*   the source pointer to the location at the destination pointer.  *//*								     *//* INPUTS:							     *//*   unsigned long long *src  - pointer to data to move		     *//*								     *//* OUTPUTS:							     *//*   unsigned long long *dest - pointer to locate to move data	     *//*								     *//* RETURNS:							     *//*   None							     *//*								     *//* RESTRICTIONS/LIMITATIONS:					     *//*   May cloober fr0.						     *//*								     *//*********************************************************************/static void move64 (unsigned long long *src, unsigned long long *dest){	asm ("lfd  0, 0(3)\n\t"	/* fpr0   =  *scr       */	     "stfd 0, 0(4)"	/* *dest  =  fpr0       */      : : : "fr0");		/* Clobbers fr0         */	return;}#if defined (CFG_DRAM_TEST_DATA)unsigned long long pattern[] = {	0xaaaaaaaaaaaaaaaaLL,	0xccccccccccccccccLL,	0xf0f0f0f0f0f0f0f0LL,	0xff00ff00ff00ff00LL,	0xffff0000ffff0000LL,	0xffffffff00000000LL,	0x00000000ffffffffLL,	0x0000ffff0000ffffLL,	0x00ff00ff00ff00ffLL,	0x0f0f0f0f0f0f0f0fLL,	0x3333333333333333LL,	0x5555555555555555LL,};/*********************************************************************//* NAME:  mem_test_data() -  test data lines for shorts and opens    *//*								     *//* DESCRIPTION:							     *//*   Tests data lines for shorts and opens by forcing adjacent data  *//*   to opposite states. Because the data lines could be routed in   *//*   an arbitrary manner the must ensure test patterns ensure that   *//*   every case is tested. By using the following series of binary   *//*   patterns every combination of adjacent bits is test regardless  *//*   of routing.						     *//*								     *//*     ...101010101010101010101010				     *//*     ...110011001100110011001100				     *//*     ...111100001111000011110000				     *//*     ...111111110000000011111111				     *//*								     *//*   Carrying this out, gives us six hex patterns as follows:	     *//*								     *//*     0xaaaaaaaaaaaaaaaa					     *//*     0xcccccccccccccccc					     *//*     0xf0f0f0f0f0f0f0f0					     *//*     0xff00ff00ff00ff00					     *//*     0xffff0000ffff0000					     *//*     0xffffffff00000000					     *//*								     *//*   The number test patterns will always be given by:		     *//*								     *//*   log(base 2)(number data bits) = log2 (64) = 6		     *//*								     *//*   To test for short and opens to other signals on our boards. we  *//*   simply							     *//*   test with the 1's complemnt of the paterns as well.	     *//*								     *//* OUTPUTS:							     *//*   Displays failing test pattern				     *//*								     *//* RETURNS:							     *//*   0 -  Passed test						     *//*   1 -  Failed test						     *//*								     *//* RESTRICTIONS/LIMITATIONS:					     *//*  Assumes only one one SDRAM bank				     *//*								     *//*********************************************************************/int mem_test_data (void){	unsigned long long *pmem = (unsigned long long *) CFG_MEMTEST_START;	unsigned long long temp64 = 0;	int num_patterns = sizeof (pattern) / sizeof (pattern[0]);	int i;	unsigned int hi, lo;	for (i = 0; i < num_patterns; i++) {		move64 (&(pattern[i]), pmem);		move64 (pmem, &temp64);		/* hi = (temp64>>32) & 0xffffffff;          */		/* lo = temp64 & 0xffffffff;                */		/* printf("\ntemp64 = 0x%08x%08x", hi, lo); */		hi = (pattern[i] >> 32) & 0xffffffff;		lo = pattern[i] & 0xffffffff;		/* printf("\npattern[%d] = 0x%08x%08x", i, hi, lo);  */		if (temp64 != pattern[i]) {			printf ("\n   Data Test Failed, pattern 0x%08x%08x",				hi, lo);			return 1;		}	}	return 0;}#endif /* CFG_DRAM_TEST_DATA */#if defined (CFG_DRAM_TEST_ADDRESS)/*********************************************************************//* NAME:  mem_test_address() -	test address lines		     *//*								     *//* DESCRIPTION:							     *//*   This function performs a test to verify that each word im	     *//*   memory is uniquly addressable. The test sequence is as follows: *//*								     *//*   1) write the address of each word to each word.		     *//*   2) verify that each location equals its address		     *//*								     *//* OUTPUTS:							     *//*   Displays failing test pattern and address			     *//*								     *//* RETURNS:							     *//*   0 -  Passed test						     *//*   1 -  Failed test						     *//*								     *//* RESTRICTIONS/LIMITATIONS:					     *//*								     *//*								     *//*********************************************************************/int mem_test_address (void){	volatile unsigned int *pmem =		(volatile unsigned int *) CFG_MEMTEST_START;	const unsigned int size = (CFG_MEMTEST_END - CFG_MEMTEST_START) / 4;	unsigned int i;	/* write address to each location */	for (i = 0; i < size; i++) {		pmem[i] = i;	}	/* verify each loaction */	for (i = 0; i < size; i++) {		if (pmem[i] != i) {			printf ("\n   Address Test Failed at 0x%x", i);			return 1;		}	}	return 0;}#endif /* CFG_DRAM_TEST_ADDRESS */#if defined (CFG_DRAM_TEST_WALK)/*********************************************************************//* NAME:   mem_march() -  memory march				     *//*								     *//* DESCRIPTION:							     *//*   Marches up through memory. At each location verifies rmask if   *//*   read = 1. At each location write wmask if	write = 1. Displays  *//*   failing address and pattern.				     *//*								     *//* INPUTS:							     *//*   volatile unsigned long long * base - start address of test	     *//*   unsigned int size - number of dwords(64-bit) to test	     *//*   unsigned long long rmask - read verify mask		     *//*   unsigned long long wmask - wrtie verify mask		     *//*   short read - verifies rmask if read = 1			     *//*   short write  - writes wmask if write = 1			     *//*								     *//* OUTPUTS:							     *//*   Displays failing test pattern and address			     *//*								     *//* RETURNS:							     *//*   0 -  Passed test						     *//*   1 -  Failed test						     *//*								     *//* RESTRICTIONS/LIMITATIONS:					     *//*								     *//*								     *//*********************************************************************/int mem_march (volatile unsigned long long *base,	       unsigned int size,	       unsigned long long rmask,	       unsigned long long wmask, short read, short write){	unsigned int i;	unsigned long long temp = 0;	unsigned int hitemp, lotemp, himask, lomask;	for (i = 0; i < size; i++) {		if (read != 0) {			/* temp = base[i]; */			move64 ((unsigned long long *) &(base[i]), &temp);			if (rmask != temp) {				hitemp = (temp >> 32) & 0xffffffff;				lotemp = temp & 0xffffffff;				himask = (rmask >> 32) & 0xffffffff;				lomask = rmask & 0xffffffff;				printf ("\n Walking one's test failed: address = 0x%08x," "\n\texpected 0x%08x%08x, found 0x%08x%08x", i << 3, himask, lomask, hitemp, lotemp);				return 1;			}		}		if (write != 0) {			/*  base[i] = wmask; */			move64 (&wmask, (unsigned long long *) &(base[i]));		}	}	return 0;}#endif /* CFG_DRAM_TEST_WALK *//*********************************************************************//* NAME:   mem_test_walk() -  a simple walking ones test	     *//*								     *//* DESCRIPTION:							     *//*   Performs a walking ones through entire physical memory. The     *//*   test uses as series of memory marches, mem_march(), to verify   *//*   and write the test patterns to memory. The test sequence is as  *//*   follows:							     *//*     1) march writing 0000...0001				     *//*     2) march verifying 0000...0001  , writing  0000...0010	     *//*     3) repeat step 2 shifting masks left 1 bit each time unitl    *//*	   the write mask equals 1000...0000			     *//*     4) march verifying 1000...0000				     *//*   The test fails if any of the memory marches return a failure.   *//*								     *//* OUTPUTS:							     *//*   Displays which pass on the memory test is executing	     *//*								     *//* RETURNS:							     *//*   0 -  Passed test						     *//*   1 -  Failed test						     *//*								     *//* RESTRICTIONS/LIMITATIONS:					     *//*								     *//*								     *//*********************************************************************/int mem_test_walk (void){	unsigned long long mask;	volatile unsigned long long *pmem =		(volatile unsigned long long *) CFG_MEMTEST_START;	const unsigned long size = (CFG_MEMTEST_END - CFG_MEMTEST_START) / 8;	unsigned int i;	mask = 0x01;	printf ("Initial Pass");	mem_march (pmem, size, 0x0, 0x1, 0, 1);	printf ("\b\b\b\b\b\b\b\b\b\b\b\b");	printf ("		");	printf ("         ");	printf ("\b\b\b\b\b\b\b\b\b\b\b\b");	for (i = 0; i < 63; i++) {		printf ("Pass %2d", i + 2);		if (mem_march (pmem, size, mask, mask << 1, 1, 1) != 0) {			/*printf("mask: 0x%x, pass: %d, ", mask, i); */			return 1;		}		mask = mask << 1;		printf ("\b\b\b\b\b\b\b");	}	printf ("Last Pass");	if (mem_march (pmem, size, 0, mask, 0, 1) != 0) {		/* printf("mask: 0x%x", mask); */		return 1;	}	printf ("\b\b\b\b\b\b\b\b\b");	printf ("	     ");	printf ("\b\b\b\b\b\b\b\b\b");	return 0;}/*********************************************************************//* NAME:    testdram() -  calls any enabled memory tests	     *//*								     *//* DESCRIPTION:							     *//*   Runs memory tests if the environment test variables are set to  *//*   'y'.							     *//*								     *//* INPUTS:							     *//*   testdramdata    - If set to 'y', data test is run.		     *//*   testdramaddress - If set to 'y', address test is run.	     *//*   testdramwalk    - If set to 'y', walking ones test is run	     *//*								     *//* OUTPUTS:							     *//*   None							     *//*								     *//* RETURNS:							     *//*   0 -  Passed test						     *//*   1 -  Failed test						     *//*								     *//* RESTRICTIONS/LIMITATIONS:					     *//*								     *//*								     *//*********************************************************************/int testdram (void){	char *s;	int rundata    = 0;	int runaddress = 0;	int runwalk    = 0;#ifdef CFG_DRAM_TEST_DATA	s = getenv ("testdramdata");	rundata = (s && (*s == 'y')) ? 1 : 0;#endif#ifdef CFG_DRAM_TEST_ADDRESS	s = getenv ("testdramaddress");	runaddress = (s && (*s == 'y')) ? 1 : 0;#endif#ifdef CFG_DRAM_TEST_WALK	s = getenv ("testdramwalk");	runwalk = (s && (*s == 'y')) ? 1 : 0;#endif	if ((rundata == 1) || (runaddress == 1) || (runwalk == 1)) {		printf ("Testing RAM from 0x%08x to 0x%08x ...  (don't panic... that will take a moment !!!!)\n", CFG_MEMTEST_START, CFG_MEMTEST_END);	}#ifdef CFG_DRAM_TEST_DATA	if (rundata == 1) {		printf ("Test DATA ...  ");		if (mem_test_data () == 1) {			printf ("failed \n");			return 1;		} else			printf ("ok \n");	}#endif#ifdef CFG_DRAM_TEST_ADDRESS	if (runaddress == 1) {		printf ("Test ADDRESS ...  ");		if (mem_test_address () == 1) {			printf ("failed \n");			return 1;		} else			printf ("ok \n");	}#endif#ifdef CFG_DRAM_TEST_WALK	if (runwalk == 1) {		printf ("Test WALKING ONEs ...  ");		if (mem_test_walk () == 1) {			printf ("failed \n");			return 1;		} else			printf ("ok \n");	}#endif	if ((rundata == 1) || (runaddress == 1) || (runwalk == 1)) {		printf ("passed\n");	}	return 0;}#endif /* CFG_DRAM_TEST *//* ronen - the below functions are used by the bootm function           *//*  - we map the base register to fbe00000 (same mapping as in the LSP) *//*  - we turn off the RX gig dmas - to prevent the dma from overunning  *//*    the kernel data areas.                                            *//*  - we diable and invalidate the icache and dcache.                   */void my_remap_gt_regs_bootm (u32 cur_loc, u32 new_loc){	u32 temp;	temp = in_le32 ((u32 *) (new_loc + INTERNAL_SPACE_DECODE));	if ((temp & 0xffff) == new_loc >> 16)		return;	temp = (in_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE)) &		0xffff0000) | (new_loc >> 16);	out_le32 ((u32 *) (cur_loc + INTERNAL_SPACE_DECODE), temp);	while ((WORD_SWAP (*((volatile unsigned int *) (NONE_CACHEABLE |							new_loc |							(INTERNAL_SPACE_DECODE)))))	       != temp);}void board_prebootm_init (){/* change window size of PCI1 IO in order tp prevent overlaping with REG BASE. */		GT_REG_WRITE (PCI_1_IO_SIZE, (_64K - 1) >> 16);/* Stop GigE Rx DMA engines */	GT_REG_WRITE (MV64360_ETH_RECEIVE_QUEUE_COMMAND_REG (0), 0x0000ff00);/*	GT_REG_WRITE (MV64360_ETH_RECEIVE_QUEUE_COMMAND_REG (1), 0x0000ff00); *//*      GV_REG_WRITE (MV64360_ETH_RECEIVE_QUEUE_COMMAND_REG (2), 0x0000ff00); *//* Relocate MV64360 internal regs */	my_remap_gt_regs_bootm (CFG_GT_REGS, CFG_DFL_GT_REGS);	icache_disable ();	invalidate_l1_instruction_cache ();	flush_data_cache ();	dcache_disable ();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区小说| 欧美一级片在线观看| 97精品超碰一区二区三区| 欧美亚洲综合一区| 国产亚洲一区二区三区四区| 亚洲精品久久7777| 国产大片一区二区| 在线不卡免费av| 亚洲视频一区二区免费在线观看| 日韩电影一二三区| 91国偷自产一区二区开放时间 | 国产亲近乱来精品视频| 日韩一区二区精品| www.欧美.com| www欧美成人18+| 日韩精品亚洲一区二区三区免费| 成人福利电影精品一区二区在线观看| 欧美狂野另类xxxxoooo| 亚洲少妇30p| 国产91精品露脸国语对白| 欧美一区二区播放| 丝瓜av网站精品一区二区| 91美女片黄在线观看| 亚洲国产成人在线| 国产精品综合一区二区| 精品免费日韩av| 久久丁香综合五月国产三级网站| 欧美午夜电影网| 亚洲综合激情另类小说区| 97久久超碰国产精品| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲人快播电影网| 久久综合九色综合欧美就去吻| 亚洲最新视频在线观看| 一本色道久久综合亚洲91 | 日韩国产一区二| 欧美四级电影网| 亚洲免费观看在线视频| 日韩一区二区三区在线视频| 一区二区国产盗摄色噜噜| 一本色道久久综合狠狠躁的推荐 | 成人欧美一区二区三区黑人麻豆| 顶级嫩模精品视频在线看| 成人听书哪个软件好| 国产iv一区二区三区| 欧美美女网站色| 亚洲国产成人一区二区三区| 国产精品女人毛片| 国产成人精品免费视频网站| 国产午夜精品福利| 成人avav影音| 亚洲欧美电影院| 欧美视频一区在线观看| 蜜臀av一区二区三区| 久久综合国产精品| 成人av在线一区二区三区| 亚洲精品高清视频在线观看| 精品视频全国免费看| 麻豆中文一区二区| 国产欧美综合色| 色久优优欧美色久优优| 天堂va蜜桃一区二区三区| 亚洲精品一区在线观看| 99久久99久久精品国产片果冻| 亚洲图片欧美视频| 久久综合999| 色呦呦日韩精品| 欧美一区二区三区公司| 日本视频在线一区| 99国内精品久久| 亚洲va韩国va欧美va| 日韩欧美视频在线| av成人免费在线| 午夜视频一区二区| 日本一区二区久久| 欧美日韩另类国产亚洲欧美一级| 久久99久久99| 一区二区三区四区五区视频在线观看 | 久久精品久久综合| 国产精品国产a级| 欧美一区二区免费观在线| 国产黄色精品网站| 日韩高清在线观看| 中文字幕亚洲综合久久菠萝蜜| 欧美日产在线观看| 成人av资源下载| 久久99久国产精品黄毛片色诱| 亚洲人精品一区| 欧美精彩视频一区二区三区| 91精品国产综合久久精品性色| 成人国产精品免费网站| 裸体歌舞表演一区二区| 久久久久国产成人精品亚洲午夜 | 久久99久久久久| 亚洲美女屁股眼交| 一区二区三区高清| 国产偷国产偷亚洲高清人白洁| 欧美日韩国产片| 色综合色狠狠天天综合色| 国产黄人亚洲片| 久久精品国产亚洲一区二区三区| 亚洲一区电影777| 国产精品久99| 国产欧美日韩三区| 久久婷婷久久一区二区三区| 91精品麻豆日日躁夜夜躁| 欧美主播一区二区三区美女| 国产99久久久精品| 国产美女娇喘av呻吟久久| 免费不卡在线视频| 日韩国产成人精品| 三级成人在线视频| 午夜精品福利一区二区蜜股av| 一区二区激情视频| 一区二区高清在线| 久久综合精品国产一区二区三区| 欧美一级黄色录像| 日韩成人精品在线观看| 久久色中文字幕| 亚洲精品一区二区三区精华液 | 中文天堂在线一区| 欧美激情一区三区| 中文字幕+乱码+中文字幕一区| 国产亚洲短视频| 国产视频视频一区| 国产精品久久一卡二卡| 国产精品久久久久永久免费观看 | 亚洲免费在线电影| 一区二区三区鲁丝不卡| 亚洲影院久久精品| 亚洲高清在线精品| 久久狠狠亚洲综合| 日本黄色一区二区| 91国偷自产一区二区三区观看 | 国产丝袜美腿一区二区三区| 欧美美女激情18p| 国产精品系列在线观看| 国产一区二区免费在线| 国产成人福利片| 99re6这里只有精品视频在线观看| 99久久国产免费看| 欧美日韩不卡一区| 精品久久久久久综合日本欧美| 久久久久久久综合日本| 一区二区中文视频| 亚洲成人你懂的| 激情欧美一区二区三区在线观看| 成人午夜激情片| 欧美日韩日日夜夜| 精品99999| 最新成人av在线| 日本欧美一区二区| 成人午夜视频免费看| 91久久免费观看| 精品久久久久久久久久久久包黑料 | 国产精品不卡在线| 亚洲国产日韩综合久久精品| 黄一区二区三区| 国产精选一区二区三区| av不卡一区二区三区| 91精品国产综合久久精品图片| 久久色.com| 午夜视频一区二区| 99久久久国产精品免费蜜臀| 91精品午夜视频| 亚洲少妇30p| 国产麻豆精品视频| 欧美日韩一区在线观看| 国产女人aaa级久久久级| 天天色综合成人网| 91香蕉国产在线观看软件| 日韩欧美美女一区二区三区| 亚洲精品免费一二三区| 国产一区二区看久久| 欧美日韩三级视频| 亚洲欧美视频一区| 色国产精品一区在线观看| 久久伊人蜜桃av一区二区| 亚洲一区免费视频| av不卡一区二区三区| 国产无遮挡一区二区三区毛片日本| 午夜久久久久久久久久一区二区| 不卡一区二区三区四区| 精品第一国产综合精品aⅴ| 丝袜亚洲另类丝袜在线| 欧美亚洲一区二区在线观看| 亚洲色图在线看| 欧美一二三在线| 亚洲欧洲日韩av| 亚洲午夜久久久久久久久电影网| 高清视频一区二区| 久久中文字幕电影| 久久机这里只有精品| 日韩一二三区视频| 偷拍日韩校园综合在线| 在线视频一区二区免费| 亚洲欧洲日韩综合一区二区| 国产精品自拍毛片| 久久婷婷国产综合国色天香| 久久精品国产精品亚洲精品|