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

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

?? ar405.c

?? 改寫的U-boot for s3c4510 (注意此源碼是在windows下壓縮了)。 1、支持串口下載
?? C
字號:
/* * (C) Copyright 2001-2004 * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com * * 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 */#include <common.h>#include "ar405.h"#include <asm/processor.h>#include <command.h>/*cmd_boot.c*/extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);extern void lxt971_no_sleep(void);/* ------------------------------------------------------------------------- */#if 0#define FPGA_DEBUG#endif/* fpga configuration data - generated by bin2cc */const unsigned char fpgadata[] = {#include "fpgadata.c"};const unsigned char fpgadata_xl30[] = {#include "fpgadata_xl30.c"};/* * include common fpga code (for esd boards) */#include "../common/fpga.c"int board_early_init_f (void){	DECLARE_GLOBAL_DATA_PTR;	int index, len, i;	int status;#ifdef FPGA_DEBUG	/* set up serial port with default baudrate */	(void) get_clocks ();	gd->baudrate = CONFIG_BAUDRATE;	serial_init ();	console_init_f ();#endif	/*	 * Boot onboard FPGA	 */	/* first try 40er image */	gd->board_type = 40;	status = fpga_boot ((unsigned char *) fpgadata, sizeof (fpgadata));	if (status != 0) {		/* try xl30er image */		gd->board_type = 30;		status = fpga_boot ((unsigned char *) fpgadata_xl30, sizeof (fpgadata_xl30));		if (status != 0) {			/* booting FPGA failed */#ifndef FPGA_DEBUG			/* set up serial port with default baudrate */			(void) get_clocks ();			gd->baudrate = CONFIG_BAUDRATE;			serial_init ();			console_init_f ();#endif			printf ("\nFPGA: Booting failed ");			switch (status) {			case ERROR_FPGA_PRG_INIT_LOW:				printf ("(Timeout: INIT not low after asserting PROGRAM*)\n ");				break;			case ERROR_FPGA_PRG_INIT_HIGH:				printf ("(Timeout: INIT not high after deasserting PROGRAM*)\n ");				break;			case ERROR_FPGA_PRG_DONE:				printf ("(Timeout: DONE not high after programming FPGA)\n ");				break;			}			/* display infos on fpgaimage */			index = 15;			for (i = 0; i < 4; i++) {				len = fpgadata[index];				printf ("FPGA: %s\n", &(fpgadata[index + 1]));				index += len + 3;			}			putc ('\n');			/* delayed reboot */			for (i = 20; i > 0; i--) {				printf ("Rebooting in %2d seconds \r", i);				for (index = 0; index < 1000; index++)					udelay (1000);			}			putc ('\n');			do_reset (NULL, 0, 0, NULL);		}	}	/*	 * IRQ 0-15  405GP internally generated; active high; level sensitive	 * IRQ 16    405GP internally generated; active low; level sensitive	 * IRQ 17-24 RESERVED	 * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive	 * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive	 * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive	 * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive	 * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive	 * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive	 * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive	 */	mtdcr (uicsr, 0xFFFFFFFF);	/* clear all ints */	mtdcr (uicer, 0x00000000);	/* disable all ints */	mtdcr (uiccr, 0x00000000);	/* set all to be non-critical */	mtdcr (uicpr, 0xFFFFFF81);	/* set int polarities */	mtdcr (uictr, 0x10000000);	/* set int trigger levels */	mtdcr (uicvcr, 0x00000001);	/* set vect base=0,INT0 highest priority */	mtdcr (uicsr, 0xFFFFFFFF);	/* clear all ints */	*(ushort *) 0xf03000ec = 0x0fff;	/* enable all interrupts in fpga */	return 0;}/* ------------------------------------------------------------------------- *//* * Check Board Identity: */int checkboard (void){	DECLARE_GLOBAL_DATA_PTR;	int index;	int len;	char str[64];	int i = getenv_r ("serial#", str, sizeof (str));	const unsigned char *fpga;	puts ("Board: ");	if (i == -1) {		puts ("### No HW ID - assuming AR405");	} else {		puts(str);	}	puts ("\nFPGA:  ");	/* display infos on fpgaimage */	if (gd->board_type == 30) {		fpga = fpgadata_xl30;	} else {		fpga = fpgadata;	}	index = 15;	for (i = 0; i < 4; i++) {		len = fpga[index];		printf ("%s ", &(fpga[index + 1]));		index += len + 3;	}	putc ('\n');	/*	 * Disable sleep mode in LXT971	 */	lxt971_no_sleep();	return 0;}/* ------------------------------------------------------------------------- */long int initdram (int board_type){	unsigned long val;	mtdcr(memcfga, mem_mb0cf);	val = mfdcr(memcfgd);	return (4*1024*1024 << ((val & 0x000e0000) >> 17));}/* ------------------------------------------------------------------------- */int testdram (void){	/* TODO: XXX XXX XXX */	printf ("test: 16 MB - ok\n");	return (0);}#if 1 /* test-only: some internal test routines... *//* * Some test routines */int do_digtest(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]){	volatile uchar *digen = (volatile uchar *)0xf03000b4;	volatile ushort *digout = (volatile ushort *)0xf03000b0;	volatile ushort *digin = (volatile ushort *)0xf03000a0;	int i;	int k;	int start;	int end;	if (argc != 3) {		puts("Usage: digtest n_start n_end (digtest 0 7)\n");		return 0;	}	start = simple_strtol (argv[1], NULL, 10);	end = simple_strtol (argv[2], NULL, 10);	/*	 * Enable digital outputs	 */	*digen = 0x08;	printf("\nStarting digital In-/Out Test from I/O %d to %d (Cntrl-C to abort)...\n",	       start, end);	/*	 * Set outputs one by one	 */	for (;;) {		for (i=start; i<=end; i++) {			*digout = 0x0001 << i;			for (k=0; k<200; k++)				udelay(1000);			if (*digin != (0x0001 << i)) {				printf("ERROR: OUT=0x%04X, IN=0x%04X\n", 0x0001 << i, *digin);				return 0;			}			/* Abort if ctrl-c was pressed */			if (ctrlc()) {				puts("\nAbort\n");				return 0;			}		}	}	return 0;}U_BOOT_CMD(	digtest,	3,	1,	do_digtest,	"digtest - Test digital in-/output\n",	NULL	);#define ERROR_DELTA     256struct io {	volatile short val;	short dummy;};int do_anatest(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]){	volatile short val;	int i;	int volt;	struct io *out;	struct io *in;	out = (struct io *)0xf0300090;	in = (struct io *)0xf0300000;	i = simple_strtol (argv[1], NULL, 10);	volt = 0;	printf("Setting Channel %d to %dV...\n", i, volt);	out[i].val = (volt * 0x7fff) / 10;	udelay(10000);	val = in[i*2].val;	printf("-> InChannel %d: 0x%04x=%dV\n", i*2, val, (val * 4000) / 0x7fff);	if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||	    (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {		printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,		       ((volt * 0x7fff) / 40) + ERROR_DELTA);		return -1;	}	val = in[i*2+1].val;	printf("-> InChannel %d: 0x%04x=%dV\n", i*2+1, val, (val * 4000) / 0x7fff);	if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||	    (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {		printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,		       ((volt * 0x7fff) / 40) + ERROR_DELTA);		return -1;	}	volt = 5;	printf("Setting Channel %d to %dV...\n", i, volt);	out[i].val = (volt * 0x7fff) / 10;	udelay(10000);	val = in[i*2].val;	printf("-> InChannel %d: 0x%04x=%dV\n", i*2, val, (val * 4000) / 0x7fff);	if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||	    (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {		printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,		       ((volt * 0x7fff) / 40) + ERROR_DELTA);		return -1;	}	val = in[i*2+1].val;	printf("-> InChannel %d: 0x%04x=%dV\n", i*2+1, val, (val * 4000) / 0x7fff);	if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||	    (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {		printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,		       ((volt * 0x7fff) / 40) + ERROR_DELTA);		return -1;	}	volt = 10;	printf("Setting Channel %d to %dV...\n", i, volt);	out[i].val = (volt * 0x7fff) / 10;	udelay(10000);	val = in[i*2].val;	printf("-> InChannel %d: 0x%04x=%dV\n", i*2, val, (val * 4000) / 0x7fff);	if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||	    (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {		printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,		       ((volt * 0x7fff) / 40) + ERROR_DELTA);		return -1;	}	val = in[i*2+1].val;	printf("-> InChannel %d: 0x%04x=%dV\n", i*2+1, val, (val * 4000) / 0x7fff);	if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||	    (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {		printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,		       ((volt * 0x7fff) / 40) + ERROR_DELTA);		return -1;	}	printf("Channel %d OK!\n", i);	return 0;}U_BOOT_CMD(	anatest,	2,	1,	do_anatest,	"anatest - Test analog in-/output\n",	NULL	);int counter = 0;void cyclicInt(void *ptr){	*(ushort *)0xf03000e8 = 0x0800; /* ack int */	counter++;}int do_inctest(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]){	volatile uchar *digout = (volatile uchar *)0xf03000b4;	volatile ulong *incin;	int i;	incin = (volatile ulong *)0xf0300040;	/*	 * Clear inc counter	 */	incin[0] = 0;	incin[1] = 0;	incin[2] = 0;	incin[3] = 0;	incin = (volatile ulong *)0xf0300050;	/*	 * Inc a little	 */	for (i=0; i<10000; i++) {		switch (i & 0x03) {		case 0:			*digout = 0x02;			break;		case 1:			*digout = 0x03;			break;		case 2:			*digout = 0x01;			break;		case 3:			*digout = 0x00;			break;		}		udelay(10);	}	printf("Inc 0 = %ld\n", incin[0]);	printf("Inc 1 = %ld\n", incin[1]);	printf("Inc 2 = %ld\n", incin[2]);	printf("Inc 3 = %ld\n", incin[3]);	*(ushort *)0xf03000e0 = 0x0c80-1; /* set counter */	*(ushort *)0xf03000ec |= 0x0800; /* enable int */	irq_install_handler (30, (interrupt_handler_t *) cyclicInt, NULL);	printf("counter=%d\n", counter);	return 0;}U_BOOT_CMD(	inctest,	3,	1,	do_inctest,	"inctest - Test incremental encoder inputs\n",	NULL	);#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人一区二区三区片免费| 欧美日韩高清一区二区不卡| 91在线观看视频| 欧美日韩成人一区二区| 久久久噜噜噜久噜久久综合| 亚洲线精品一区二区三区八戒| 国产在线看一区| 欧美精品久久久久久久久老牛影院| 久久精品亚洲一区二区三区浴池| 亚洲综合丝袜美腿| 成人av资源站| 久久久久久久久岛国免费| 亚洲图片欧美视频| 91亚洲国产成人精品一区二区三| 26uuu精品一区二区| 丝袜诱惑制服诱惑色一区在线观看 | 国产精品动漫网站| 久久爱另类一区二区小说| 欧美日韩综合在线| 亚洲欧美日韩成人高清在线一区| 国产精品自拍av| 欧美成人vps| 麻豆精品国产传媒mv男同| 欧美日韩二区三区| 亚洲国产精品欧美一二99| 99re亚洲国产精品| 亚洲少妇30p| youjizz国产精品| 久久久www成人免费毛片麻豆| 午夜精品久久久久久久久久久 | 久久麻豆一区二区| 麻豆专区一区二区三区四区五区| 欧美人与禽zozo性伦| 亚洲国产另类av| 欧美日本在线播放| 日韩综合在线视频| 欧美一区二区三区小说| 日韩电影免费一区| 欧美电视剧在线看免费| 久久av资源网| 国产婷婷色一区二区三区在线| 狠狠色狠狠色合久久伊人| 久久尤物电影视频在线观看| 国精产品一区一区三区mba视频| 精品国产免费人成电影在线观看四季 | 国产麻豆视频一区| 国产亚洲一二三区| 成人av网站在线| 亚洲综合丝袜美腿| 欧美一区二区福利视频| 狠狠色综合日日| 国产亚洲va综合人人澡精品| 不卡欧美aaaaa| 亚洲国产美国国产综合一区二区| 91精品国产色综合久久久蜜香臀| 久久99精品一区二区三区| 精品电影一区二区| 97久久精品人人做人人爽50路| 亚洲精品福利视频网站| 欧美一级片在线看| 成人av在线资源| 亚洲成人在线观看视频| 精品国产成人系列| 色综合久久中文字幕| 日本伊人色综合网| 国产精品久线在线观看| 欧美福利一区二区| 成人午夜免费av| 首页国产丝袜综合| 国产精品日产欧美久久久久| 欧美亚洲动漫精品| 狠狠狠色丁香婷婷综合激情| 亚洲乱码精品一二三四区日韩在线| 欧美日韩aaaaaa| 成人污污视频在线观看| 午夜精品久久久久久久99水蜜桃 | 欧美三区在线视频| 国产精品一区二区久久精品爱涩| 亚洲乱码国产乱码精品精的特点| 欧美一区在线视频| 色天天综合色天天久久| 国产一区二区三区蝌蚪| 视频在线观看91| 亚洲欧洲国产专区| 久久久亚洲精品一区二区三区| 欧美视频一区二区三区| 不卡的av在线播放| 久久99在线观看| 水野朝阳av一区二区三区| 国产精品网站在线播放| 日韩免费看网站| 欧美日韩激情一区二区三区| 99视频超级精品| 国内精品写真在线观看| 日韩av在线发布| 亚洲国产成人av| 一区二区三区中文免费| 国产精品国产a级| 久久久久久9999| 日韩欧美成人激情| 9191成人精品久久| 欧美巨大另类极品videosbest | 久久免费的精品国产v∧| 欧美无乱码久久久免费午夜一区 | 欧美三级中文字幕在线观看| 播五月开心婷婷综合| 国产美女av一区二区三区| 欧美性xxxxxxxx| 欧美日本精品一区二区三区| 成人激情免费视频| 国产精品影音先锋| 激情图区综合网| 免费观看日韩电影| 美女免费视频一区二区| 日本欧美在线看| 免费一级片91| 韩国精品主播一区二区在线观看 | 亚洲图片欧美色图| 亚洲国产精品久久久久秋霞影院| 一区二区三区不卡视频在线观看| 一区二区三区国产精华| 亚洲理论在线观看| 亚洲一区二区三区在线看| 一区二区激情视频| 亚洲综合另类小说| 肉色丝袜一区二区| 琪琪一区二区三区| 国产美女在线精品| 成人免费视频视频| 久久精品国产999大香线蕉| 亚洲大片精品永久免费| 亚洲gay无套男同| 亚洲国产精品久久不卡毛片| 五月激情六月综合| 久久国产麻豆精品| 国产精品1区二区.| 91丨porny丨中文| 欧美日本视频在线| 欧美精品一区二区在线观看| 中文字幕欧美三区| 亚洲影院免费观看| 免费观看一级欧美片| 国产成人啪午夜精品网站男同| 99久久综合精品| 欧美精品久久天天躁| 精品国产乱码久久久久久闺蜜| 国产精品美女久久久久av爽李琼 | 黑人巨大精品欧美一区| 成人精品亚洲人成在线| 精品视频色一区| 一区二区在线电影| 亚洲午夜在线观看视频在线| 免费成人小视频| 99re这里只有精品首页| 欧美美女视频在线观看| 国产视频一区不卡| 偷拍一区二区三区四区| 国产成人av资源| 欧美欧美欧美欧美首页| 欧美激情一区二区| 丝袜美腿一区二区三区| 国产99久久精品| 欧美裸体一区二区三区| 国产精品国产三级国产aⅴ中文 | 欧美日韩一区不卡| 国产欧美日韩亚州综合| 亚洲一卡二卡三卡四卡五卡| 国产+成+人+亚洲欧洲自线| 欧美日高清视频| 亚洲美女在线国产| 国产精品18久久久久久vr| 欧美久久一二三四区| 亚洲男帅同性gay1069| 国产高清不卡二三区| 欧美老女人在线| 亚洲天堂中文字幕| 豆国产96在线|亚洲| 日韩欧美一二三四区| 蜜桃视频免费观看一区| 色噜噜狠狠色综合中国| 欧美国产日本视频| 久久国产麻豆精品| 91精品国产色综合久久ai换脸 | 色综合久久88色综合天天免费| 久久亚洲一级片| 麻豆精品一区二区| 欧美久久一二区| 亚洲v中文字幕| 在线视频亚洲一区| 亚洲欧美偷拍三级| 99精品视频在线免费观看| 国产精品区一区二区三区| 国产一区二区不卡| 久久综合色婷婷| 国产专区欧美精品| 精品第一国产综合精品aⅴ| 久久精品国产77777蜜臀| 日韩午夜在线播放| 免费高清成人在线| 久久色在线视频|