#include "arch.h" #include "mcfuart.h" char ident[] = "Motorola 5307 C3"; char copyright[] = "(C) 2002 Ken Treis (ken@reasonability.net)"; 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; extern unsigned long consoleBase; void configureConsole() { consoleBase = MCFUART_BASE1; configureSerial(consoleBase, 19200, MCF_CLK); } void configureAuxSerial() { configureSerial(MCFUART_BASE2, 115200, MCF_CLK); } void setLED() {}; void setImageParams() { downloadPort = 1; image_size = 0x000f0000; source_addr = (unsigned char *)0xfff10000; down_addr = (unsigned char *)0xfff10000; xfer_addr = (unsigned char *)0x20000; dest_addr = (unsigned char *)0x20000; } void setupBoard() { volatile unsigned char *mbar; mbar = (volatile unsigned char *) MCF_MBAR; // CS0: Flash *((volatile unsigned short *) (mbar + MCFSIM_CSAR0)) = 0xfff0; *((volatile unsigned long *) (mbar + MCFSIM_CSMR0)) = 0x000f0001; *((volatile unsigned short *) (mbar + MCFSIM_CSCR0)) = 0x1980; /* CS2-7 */ *((volatile unsigned short *) (mbar + MCFSIM_CSBAR)) = 0x0000; *((volatile unsigned short *) (mbar + MCFSIM_CSBAMR)) = 0xFF00; } 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); }