📄 board.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 + -