⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 board.c

📁 摩托罗拉冷火系列bootloader源码
💻 C
字号:
#include "arch.h"#include "mcfuart.h"char	ident[] = "Moreton Bay NETtel";char	copyright[] = "(C) 1999, Moreton Bay Ventures";#define	IMAGE_ADDR  0xf0010000#define IMAGE_SIZE 0x000e0000#define XFER_ADDR 0x400#define DEFAULT_PORT 0extern unsigned int consoleBase;void configureConsole(){	consoleBase = MCFUART_BASE1;	configureSerial(consoleBase, 19200, MCF_CLK);}void configureAuxSerial(){	configureSerial(MCFUART_BASE2, 115200, MCF_CLK);}/* State to LED mapping */void setLED(int state){	unsigned char bits;	switch(state) {		case 0:			bits = 0x00;			break;		case 1:			bits = 0x01;			break;		case 2:			bits = 0x02;			break;		case 3:			bits = 0x04;			break;		case 4:			bits = 0x08;			break;		case 5:			bits = 0x10;			break;		case 6:			bits = 0x20;			break;		case 7:			bits = 0x40;			break;		case 8:			bits = 0x80;			break;		case 10:			bits = 0x10;			break;		case 11:			bits = 0x11;			break;		case 12:			bits = 0x12;			break;		case 13:			bits = 0x13;			break;		case 14:			bits = 0x14;			break;		case 15:			bits = 0x15;			break;		default:			return;	}	*((volatile unsigned char *)0x30400000)		= (unsigned char)(~bits);}extern unsigned int downloadPort;extern unsigned int image_size;extern unsigned char *xfer_addr;extern unsigned char *down_addr;extern unsigned char *dest_addr;extern unsigned char *source_addr;void setImageParams(){	downloadPort = DEFAULT_PORT;	image_size  = IMAGE_SIZE;	xfer_addr   = (unsigned char *)XFER_ADDR;	down_addr   = (unsigned char *)IMAGE_ADDR;	dest_addr   = (unsigned char *)0xf1000000;	source_addr = (unsigned char *)IMAGE_ADDR;}void setupBoard(){	volatile unsigned char	*mbar;	mbar = (volatile unsigned char *) MCF_MBAR;	/*	 *	Firstly set up the POWER and DIAG LEDs. They are on	 *	parallel I/O pins of the 5307.	 */	*((volatile unsigned short *) (mbar + MCFSIM_PAR)) = 0x0000;	*((volatile unsigned short *) (mbar + MCFSIM_PADDR)) = 0x00ec;	/* Set POWER and DIAG LEDs on */	*((volatile unsigned short *) (mbar + MCFSIM_PADAT)) = 0x0000;	/*	 *	Setup chip selects...	 */	/* CS0 -- FLASH ROM */	*((volatile unsigned short *) (mbar + MCFSIM_CSAR0)) = 0xf000;	*((volatile unsigned long *) (mbar + MCFSIM_CSMR0)) = 0x000f0001;	*((volatile unsigned short *) (mbar + MCFSIM_CSCR0)) = 0x1980;	/* CS1 -- PCI host bridge */	*((volatile unsigned short *) (mbar + MCFSIM_CSAR1)) = 0x5000;	*((volatile unsigned long *) (mbar + MCFSIM_CSMR1)) = 0x000f0001;	*((volatile unsigned short *) (mbar + MCFSIM_CSCR1)) = 0x3d80;	/* CS2-7 */	*((volatile unsigned short *) (mbar + MCFSIM_CSBAR)) = 0x3000;	*((volatile unsigned short *) (mbar + MCFSIM_CSBAMR)) = 0x0000;	/* CS2 -- LED bank, address 0x30400000 */	*((volatile unsigned short *) (mbar + MCFSIM_CSMR2)) = 0x0001;	*((volatile unsigned short *) (mbar + MCFSIM_CSCR2)) = 0x0140;	setLED(0);	/* CS3 -- ethernet, address 0x30600000 */	*((volatile unsigned short *) (mbar + MCFSIM_CSMR3)) = 0x0001;	*((volatile unsigned short *) (mbar + MCFSIM_CSCR3)) = 0x0d80;}static int delay(int size){	int	i;	for (i = 0; (i < size); i++)		nop();}void setupDRAM(){	volatile unsigned char *mbar = (unsigned char *)MCF_MBAR;	unsigned long	junk;	*((volatile unsigned short *) (mbar + MCFSIM_DCR)) = 0x8130;	*((volatile unsigned long *) (mbar + MCFSIM_DACR0)) = 0x00000300;	*((volatile unsigned long *) (mbar + MCFSIM_DMR0)) = 0x003c0001;	*((volatile unsigned long *) (mbar + MCFSIM_DACR0)) = 0x00000308;	junk = *((volatile unsigned long *) 0x200);	nop();	*((volatile unsigned long *) (mbar + MCFSIM_DACR0)) = 0x00008300;	delay(0x1000);	*((volatile unsigned long *) (mbar + MCFSIM_DACR0)) = 0x00008340;	*((volatile unsigned long *) 0x200) = 0x00000000;	delay(0x10);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -