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

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

?? m5272c3.c

?? MCF5272的板極初始化程序
?? C
字號:
/*
 * File:		board.c
 * Purpose:		Board specific routines for the M5272C3
 *
 * Notes:
 *
 */

#include "src/include/dbug.h"
#include "src/dev/flash/amd_flash.h"

#ifdef DBUG_NETWORK
#include "src/uif/net/net.h"
#include "src/dev/mcf5272/fec.h"
#include "src/dev/mcf5272/timer.h"
extern uint8 TIMER_NETWORK;
extern NIF nif1;
#endif

/********************************************************************/
/* 
 * Global BSP variables referenced by dBUG 
 */
const char BRD_STR[]		= "M5272C3";
const int  BRD_VER_MAJOR	= 1;
const char BRD_VER_MINOR	= 'b';
const char COPYRIGHT2[]		= "";

/********************************************************************/
/* 
 * Compiler specific code relocation section 
 */
#ifdef __DCC__
#pragma section CODE	".code_relocation"
#else
#error "Unsupported compiler option"
#endif

void relocate_putchar (char);
char relocate_getchar (void);
int  relocate_getchar_present (void);

/* 
 * Return to standard text section 
 */
#ifdef __DCC__
#pragma section CODE
#endif

/********************************************************************/
void
board_init (void)
{
	extern uint32 __VECTOR_RAM[];
	extern REGISTERS context;

    /* Point VBR to the vector table which is copied to RAM in main() */
    mcf5xxx_wr_vbr((uint32)__VECTOR_RAM);
 
	/* Good for detecting NULL dereferences */
	*(ADDRESS *)(0) = 0;

	printf("\n\n");
	switch (MCF5272_SIM_SCR & 0x3000)
	{
		case MCF5272_SIM_SCR_HRST:
			printf("Hard Reset\n");
			break;
		case MCF5272_SIM_SCR_DRAMRST:
			printf("Hard & SDRAM Controller Reset\n");
			break;
		case MCF5272_SIM_SCR_SWTR:
			printf("Software Watchdog Reset\n");
			break;
	}

	/* Allow interrupts from IRQ 6 (black button) */
	MCF5272_SIM_ICR4 = MCF5272_SIM_ICR_INT6_IL(7);

	printf("SDRAM Size: %dM\n", SDRAM_SIZE >> 20);
	context.a7 = SDRAM_SIZE;
}
/********************************************************************/
void
board_init2 (void)
{
	/* 
	 * The Timer routines cannot be called until after isr_init()
	 * Check main() for calling order of xxxx_init() functions. 
	 */

	/* Initialize the Network Timer */
	#if (defined(DBUG_NETWORK))
		timer_init(TIMER_NETWORK, TIMER_NETWORK_PERIOD, 
					SYSTEM_CLOCK, TIMER_NETWORK_LEVEL, NULL);
	#endif
}

/********************************************************************/
void
board_init3 (void)
{
	FLASH_INFO Am29PL160CB;
	
	strcpy(Am29PL160CB.name,"Am29PL160CB (1 x 32-bit)");
	Am29PL160CB.base = (ADDRESS) FLASH_ADDRESS;
	Am29PL160CB.size = (int) FLASH_SIZE;
	Am29PL160CB.erase = (void *) amd_flash_erase;
	Am29PL160CB.program = (void *) amd_flash_program;
	Am29PL160CB.sector_start = (void *) amd_flash_sector_start;
	Am29PL160CB.sector_end = (void *) amd_flash_sector_end;
	Am29PL160CB.putchar = (void *) relocate_putchar;
	Am29PL160CB.protect_start = (ADDRESS) DBUG_ADDRESS;
	Am29PL160CB.protect_size = (int) DBUG_SIZE;

	/*
	 * Initialize AMD Flash device
	 */
	amd_flash_init(FLASH_ADDRESS);
	
	/*
	 * Register AMD Flash with dBUG Flash Utilities
	 */
	flash_register_device(&Am29PL160CB);
}

/********************************************************************/
/*
 * Character Input/Output support
 */
/********************************************************************/
char
board_getchar (void)
{
	/* Wait until character has been received */
	while (!(MCF5272_UART0_USR & MCF5272_UART_USR_RXRDY))
		; 
	return MCF5272_UART0_URB;
}

char
relocate_getchar (void)
{
	/* Wait until character has been received */
	while (!(MCF5272_UART0_USR & MCF5272_UART_USR_RXRDY))
		; 
	return MCF5272_UART0_URB;
}

/********************************************************************/
void
board_putchar (char ch)
{
	/* Wait until space is available in the FIFO */
	while (!(MCF5272_UART0_USR & MCF5272_UART_USR_TXRDY))
		;
	/* Send the character */
	MCF5272_UART0_UTB = (uint8)ch;
}

void
relocate_putchar (char ch)
{
	/* Wait until space is available in the FIFO */
	while (!(MCF5272_UART0_USR & MCF5272_UART_USR_TXRDY))
		;
	/* Send the character */
	MCF5272_UART0_UTB = (uint8)ch;
}

/********************************************************************/
int
board_getchar_present (void)
{
    return (MCF5272_UART0_USR & 1);
}

int
relocate_getchar_present (void)
{
    return (MCF5272_UART0_USR & 1);
}

/********************************************************************/
void
board_putchar_flush (void)
{
}

/********************************************************************/
int
board_dlio_init (void)
{
	/*	
	 * Download initialization routine 
	 */

#ifdef DBUG_NETWORK
	uint8* board_get_ethaddr(uint8*);

	if (uif_dlio == UIF_DLIO_NETWORK)
	{
		unsigned char mac[6];

		/* Register interrupt handlers */
		if (!isr_register_handler(ISR_DBUG_ISR, FEC_VECTOR,
				(void *)fec_handler,NULL, (void *)&nif1))
		{
			printf("Error: Unable to register handler\n");
			return -1;
		}

		/* Enable FEC interrupts to ColdFire core */
		MCF5272_SIM_ICR3 = MCF5272_SIM_ICR_ERX_IL(FEC_LEVEL);

		/* Initialize network device */
		fec_init(&nif1);

		/* Get user programmed MAC address */
		board_get_ethaddr(mac);

		/* Write ethernet address in the data structure */
		nif1.hwa[0] = mac[0];
		nif1.hwa[1] = mac[1];
		nif1.hwa[2] = mac[2];
		nif1.hwa[3] = mac[3];
		nif1.hwa[4] = mac[4];
		nif1.hwa[5] = mac[5];

		printf("Ethernet Address is %02X:%02X:%02X:%02X:%02X:%02X\n",\
				nif1.hwa[0], nif1.hwa[1], nif1.hwa[2],\
				nif1.hwa[3], nif1.hwa[4], nif1.hwa[5]);
	}
#endif

	return TRUE;
}

/********************************************************************/
int
board_dlio_getchar (void)
{
	/* Download character input routine */
	int ch;
 
	switch (uif_dlio)
	{
#ifdef DBUG_NETWORK
		case UIF_DLIO_NETWORK:
			ch = tftp_in_char();
			break;
#endif
		case UIF_DLIO_CONSOLE:
		default:
			ch = board_getchar();
			break;
	}
	return ch;
}
 
/********************************************************************/
int
board_dlio_vda (ADDRESS addr)
{
	/*	Determines if the given address is valid for downloads */

	if (((addr >= USER_SPACE) && 
			(addr < SDRAM_SIZE))
		|| ((addr >= EXT_SRAM_ADDRESS) &&
		    (addr < (EXT_SRAM_ADDRESS + EXT_SRAM_SIZE)))
		|| ((addr >= SRAM_ADDRESS) && 
			(addr < (SRAM_ADDRESS + SRAM_SIZE))))
		return 1;
	else
		return 0;
}

/********************************************************************/
void
board_dlio_done (void)
{
	/*
	 * Download complete, clean up
	 */
#ifdef DBUG_NETWORK
	if (uif_dlio == UIF_DLIO_NETWORK)
	{
		/*	Disable FEC interrupts to ColdFire core */
		MCF5272_SIM_ICR3 = MCF5272_SIM_ICR_ERX_IL(0);

		isr_remove_handler(ISR_DBUG_ISR,(void *)fec_handler);
    }
#endif
}

/********************************************************************/
#ifdef DBUG_NETWORK
int
board_dlio_filetype (char *filename, char *ext)
{
	(void)filename;
	(void)ext;

	return UIF_DLIO_UNKNOWN;
}
#endif

/********************************************************************/
void
board_reset (void)
{
	int i;
	MCF5272_SIM_SCR = MCF5272_SIM_SCR_SOFT_RES;

	/* Pause */
	for (i = 0; i < 0x100; i++)
		;
}

/********************************************************************/
void
board_irq_enable (void)
{
	asm_set_ipl(0);
}

/********************************************************************/
void
board_irq_disable (void)
{
	asm_set_ipl(6);
}

/********************************************************************/
void ext_irq6_handler (void) 
{
	/* Clear the interrupt */
	MCF5272_SIM_ICR4 = MCF5272_SIM_ICR_INT6_IL(7);
}

/********************************************************************/
void
update_board_params (uint8 *data, int length, uint32 offset)
{
	/*
	 * This function copies the PARAM section of the Flash
	 * into SRAM, modifies the SRAM copy of PARAM with 'data'
	 * for 'length' bytes, then writes the updated copy into
	 * Flash again.
	 */
	extern uint8 __PARAMS_START[];
	uint8 *target = (uint8 *)(__PARAMS_START + offset);
	int index, pbytes;
	int amd_flash_program(ADDRESS, ADDRESS, int, int, 
						void (*)(void), void (*)(char));
 
	board_irq_disable();
 
	memcpy((void*)__PARAMS_START,(void*)PARAMS_ADDRESS,(uint32)PARAMS_SIZE); 
 
	for (index = 0; index < length; ++index)
	{
		*target++ = *data++;
	}
 
	pbytes = amd_flash_program((ADDRESS)PARAMS_ADDRESS, (ADDRESS)__PARAMS_START,
							(uint32)PARAMS_SIZE, TRUE, NULL, NULL);
				 
	if (pbytes != PARAMS_SIZE)
	{
		printf("Flash programming error:  %#X bytes of %#X written!\n",
			pbytes, PARAMS_SIZE);
	}
}

/********************************************************************/

/*
 * Additional commands and SET/SHOW options for this board.
 */

/********************************************************************/

const char MEM_STR[] = "  %-14s   %#08X   %#08X   %d-bit\n";
const char PRT_STR[] = "  %-14s   %#08X   %#08X\n";
const char CS_STR[]  = "  CS%d  %s\n";  

void
mmap (int argc, char **argv)
{
	(void)argc;
	(void)argv;

	printf("\n");
	printf("      Type           Start         End      Port Size\n");
	printf("  ---------------------------------------------------\n");
	printf(MEM_STR, "SDRAM", 		SDRAM_ADDRESS, 
									SDRAM_ADDRESS + SDRAM_SIZE - 1, 32);

	printf(MEM_STR, "SRAM (Int)", 	SRAM_ADDRESS, 
									SRAM_ADDRESS + SRAM_SIZE - 1, 32);

	printf(MEM_STR, "SRAM (Ext)", 	EXT_SRAM_ADDRESS, 
									EXT_SRAM_ADDRESS + EXT_SRAM_SIZE - 1, 32);

	printf(MEM_STR, "MBAR", 		MBAR_ADDRESS, 
									MBAR_ADDRESS + 0x1800, 32);

	printf(MEM_STR, "Flash",		FLASH_ADDRESS,	
									FLASH_ADDRESS + FLASH_SIZE - 1, 16);

	printf("\n");
	printf("   Protected         Start         End\n");
	printf("  ----------------------------------------\n");
	printf(PRT_STR, "dBUG Code", 	DBUG_ADDRESS, 
									DBUG_ADDRESS + DBUG_SIZE - 1);
									
	printf(PRT_STR, "dBUG Data", 	VECTOR_RAM, 
									USER_SPACE - 1);
	printf("\n");
	printf("    Chip Selects\n");
	printf("  ----------------\n");
	printf(CS_STR, 0, "Flash");
	printf(CS_STR, 2, "Ext SRAM");
	printf(CS_STR, 7, "SDRAM");
	printf("\n");
}

/********************************************************************/
void
dldbug (int argc, char **argv)
{
	char answer[UIF_MAX_LINE];
	void download_dbug (void (*)(void));
	
	(void)argc;
	(void)argv;

	/*
	 * Print message
	 */
	printf("Erase Flash, download and program new dBUG image to Flash...\n");
	printf("Continue? ");
	get_line(answer);
	if (strncasecmp("yes",answer,3) != 0)
		return;
	 
	/*
	 * Jump to USER_SPACE and begin serial download and programming
	 * of new dBUG image
	 */
	download_dbug((void*)(DBUG_ADDRESS + 0x100));	 
}

/********************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品国产免大香伊| 日韩一区二区视频| 欧美成人伊人久久综合网| 国产精品进线69影院| 性感美女极品91精品| 福利一区在线观看| 日韩免费一区二区| 亚洲成av人片一区二区三区| 国产成人aaa| 精品国产91久久久久久久妲己| 中文一区二区完整视频在线观看| 亚洲精品久久久久久国产精华液| 麻豆精品一区二区av白丝在线| 91热门视频在线观看| 日韩三级av在线播放| 中文字幕一区二区视频| 丝袜脚交一区二区| 成人国产一区二区三区精品| 日韩视频一区二区| 喷白浆一区二区| 在线播放国产精品二区一二区四区| 亚洲天堂成人在线观看| 国产激情视频一区二区三区欧美| 日韩欧美一区二区视频| 免费人成在线不卡| 欧美精品高清视频| 日韩精品午夜视频| 911精品产国品一二三产区| 亚洲图片有声小说| 欧美日韩一区国产| 亚洲第一在线综合网站| 在线观看中文字幕不卡| 亚洲影视资源网| 欧美日韩一区视频| 麻豆精品视频在线观看| 欧美变态tickle挠乳网站| 另类小说色综合网站| 日韩欧美在线影院| 麻豆极品一区二区三区| 欧美日韩精品久久久| 亚洲一级片在线观看| 91亚洲永久精品| 国产精品久久久久婷婷二区次| 成人午夜伦理影院| 一区二区欧美精品| 欧美一区二区三区视频在线| 青草av.久久免费一区| 久久久久久久久蜜桃| 成人激情动漫在线观看| 国产精品传媒在线| 欧美无砖砖区免费| 男女激情视频一区| 国产精品免费视频网站| 在线视频综合导航| 久久www免费人成看片高清| 欧美激情资源网| 91视频你懂的| 麻豆一区二区在线| 亚洲精品一二三| 欧美日本一区二区三区四区| 日韩av电影天堂| 中文字幕欧美区| 4438x亚洲最大成人网| 国产成人综合精品三级| 一区二区三区精品视频| 欧美变态凌虐bdsm| 在线免费观看不卡av| 精品一区二区精品| 最新久久zyz资源站| 欧美日韩久久不卡| 精品制服美女丁香| 国产精品二区一区二区aⅴ污介绍| 91日韩精品一区| 五月综合激情婷婷六月色窝| 正在播放一区二区| www.欧美精品一二区| 一区二区日韩av| 日韩精品一区二区三区老鸭窝| 成人综合在线观看| 亚洲高清一区二区三区| 国产片一区二区| 91福利小视频| 国内精品伊人久久久久av一坑| 日韩美女精品在线| 精品国产一区二区三区久久影院| 99久久99久久精品免费看蜜桃| 日本美女视频一区二区| 国产精品久久久久婷婷| 欧美v亚洲v综合ⅴ国产v| av福利精品导航| 精品一区二区在线观看| 视频在线观看91| 国产精品乱码一区二区三区软件| 日韩精品一区二区三区三区免费| 91在线视频在线| 国产精品一区专区| 日韩精品乱码av一区二区| 91精品国产一区二区三区蜜臀 | 一区二区三区丝袜| 久久久久久久久免费| 欧美午夜理伦三级在线观看| 99视频一区二区| 9人人澡人人爽人人精品| 日韩中文欧美在线| 亚洲欧美另类图片小说| 国产日本亚洲高清| 亚洲精品在线一区二区| 精品国产乱码久久久久久蜜臀 | 国产福利精品一区二区| 久久99精品国产麻豆婷婷洗澡| 日本在线不卡视频| 日韩av午夜在线观看| 日本视频在线一区| 另类成人小视频在线| 蜜桃一区二区三区在线观看| 日本欧美肥老太交大片| 久久精品国产99国产精品| 男人的j进女人的j一区| 久久精品国产色蜜蜜麻豆| 久久不见久久见中文字幕免费| 老司机午夜精品| 国产成人在线视频免费播放| 国产夫妻精品视频| 99久久国产综合精品麻豆| 91碰在线视频| 91精品久久久久久蜜臀| 精品美女在线播放| 国产精品久久久久久久久久久免费看 | 欧美裸体bbwbbwbbw| 7777精品伊人久久久大香线蕉 | 亚洲欧美视频在线观看视频| 亚洲欧洲99久久| 亚洲第一久久影院| 国产综合久久久久久久久久久久| 成人丝袜视频网| 色综合久久久网| 91免费版pro下载短视频| 欧美三片在线视频观看| 日韩亚洲电影在线| 欧美激情一区二区三区四区| 亚洲欧洲日产国产综合网| 亚洲成在人线在线播放| 久久超碰97人人做人人爱| 成人黄色一级视频| 欧美日韩一区精品| 国产欧美日韩麻豆91| 亚洲国产一区二区在线播放| 精品在线免费观看| 色综合天天综合网天天看片| 在线不卡免费av| 中文字幕av一区二区三区 | 亚洲欧美日韩电影| 亚洲国产欧美一区二区三区丁香婷| 免费成人在线播放| 93久久精品日日躁夜夜躁欧美| 欧美久久高跟鞋激| 国产精品视频在线看| 日韩国产一二三区| 懂色av一区二区三区免费观看| 欧美在线看片a免费观看| 久久色在线视频| 五月天中文字幕一区二区| 成熟亚洲日本毛茸茸凸凹| 91精品午夜视频| 亚洲激情成人在线| 国产99久久久国产精品潘金| 欧美美女直播网站| 亚洲视频综合在线| 国内国产精品久久| 7777精品伊人久久久大香线蕉的| 亚洲人亚洲人成电影网站色| 国产做a爰片久久毛片| 欧美精品在欧美一区二区少妇| 中文字幕一区二区三| 国产美女娇喘av呻吟久久| 欧美顶级少妇做爰| 亚洲国产日韩在线一区模特| 成人动漫一区二区| 国产视频一区二区三区在线观看| 美腿丝袜在线亚洲一区| 欧美羞羞免费网站| 亚洲精品午夜久久久| bt欧美亚洲午夜电影天堂| 久久99精品国产麻豆不卡| 欧美精品 日韩| 亚洲精品视频观看| 91久久久免费一区二区| √…a在线天堂一区| 91香蕉视频污| 亚洲欧美日韩国产手机在线 | 欧美精选在线播放| 亚洲成人黄色影院| 欧洲av一区二区嗯嗯嗯啊| 亚洲欧美国产毛片在线| 国产精品麻豆视频| 成人美女在线观看| 亚洲同性同志一二三专区| 99国产欧美另类久久久精品| 中文字幕亚洲精品在线观看| 白白色亚洲国产精品|