2006-06-23 Worth Burruss <worth@motioncontrol.org>

* Makefile.am, README, startup/init5235.c, startup/linkcmds,
	startup/linkcmdsflash, startup/linkcmdsram: Modify to the mcf5235
	eval boards to either load and run from ram using the dBug moniter as
	the boot deviced (Board setup as shipped from the factory), or it
	allows the user to Boot his code from flash he loads onto the eval
	board. The code changes between the two are based on the selected
	linker script using a variable in the script.  The options to the
	linker are used to override the default linker script and select
	which options to configure at boot either from flash, or from ram:
            -qnolinkcmds -T linkcmdsflash
	If no options are given the standard linker sript assumes dBug was
	used to set up the board and the user is going to load his program
	to RAM.
This commit is contained in:
Joel Sherrill
2006-06-23 16:04:33 +00:00
parent b7176bd70c
commit 504c5ca0f2
7 changed files with 101 additions and 38 deletions

View File

@@ -1,3 +1,19 @@
2006-06-23 Worth Burruss <worth@motioncontrol.org>
* Makefile.am, README, startup/init5235.c, startup/linkcmds,
startup/linkcmdsflash, startup/linkcmdsram: Modify to the mcf5235
eval boards to either load and run from ram using the dBug moniter as
the boot deviced (Board setup as shipped from the factory), or it
allows the user to Boot his code from flash he loads onto the eval
board. The code changes between the two are based on the selected
linker script using a variable in the script. The options to the
linker are used to override the default linker script and select
which options to configure at boot either from flash, or from ram:
-qnolinkcmds -T linkcmdsflash
If no options are given the standard linker sript assumes dBug was
used to set up the board and the user is going to load his program
to RAM.
2006-02-08 Joel Sherrill <joel@OARcorp.com>
* startup/linkcmds, startup/linkcmdsflash, startup/linkcmdsram: Add

View File

@@ -23,7 +23,8 @@ start.$(OBJEXT): start/start.S
$(CPPASCOMPILE) -DASM -o $@ -c $<
project_lib_DATA = start.$(OBJEXT)
dist_project_lib_DATA += startup/linkcmds
dist_project_lib_DATA += startup/linkcmds startup/linkcmdsflash \
startup/linkcmdsram
noinst_PROGRAMS += startup.rel
startup_rel_SOURCES = startup/bspclean.c \

View File

@@ -11,6 +11,14 @@ ROM: 2M
This is a Motorola evaluation board that uses the MCF5235 Coldfire CPU.
This board is running at 150MHz scaled from a 25MHz oscillator.
By default the BSP creates an image file for use when loaded into the
RAM of the evaluation board. To create an image file to boot from flash
add the following command to the applications Makefile:
LDFLAGS += -qnolinkcmds -T linkcmdsflash
Note: This BSP has also been tested with the Freescale / Axiom Manufacturing
(M5235BCC Business Card Controller) evaluation board.
ACKNOWLEDGEMENTS:
=================
This BSP is heavily based on the work of:

View File

@@ -14,11 +14,23 @@
#define m68k_set_acr1(_acr1) asm volatile ("movec %0,%%acr1" : : "d" (_acr1))
#define MM_SDRAM_BASE (0x00000000)
/*
* MCF5235_BSP_START_FROM_FLASH comes from the linker script
* If it is set to 0 then it is assumed that the motorola debug monitor
* is present and we do not need to re-initialize the SDRAM. Otherwise,
* if it is set to 1 then we want to boot our own code from flash and we
* do need to initialize the SDRAM.
*/
extern uint32_t MCF5235_BSP_START_FROM_FLASH;
void Init5235 (void)
{
extern void CopyDataClearBSSAndStart (void);
int x;
int temp = 0;
int *address_of_MCF5235_BSP_START_FROM_FLASH;
//Setup the GPIO Registers
MCF5235_GPIO_UART=0x3FFF;
@@ -29,37 +41,40 @@ void Init5235 (void)
MCF5235_CS_CSMR0 = 0x001f0001;
MCF5235_CS_CSCR0 = 0x1980;
//Setup the SDRAM
for(x=0; x<20000; x++)
{
temp +=1;
}
MCF5235_SDRAMC_DCR = 0x042E;
MCF5235_SDRAMC_DACR0 = 0x00001300;
MCF5235_SDRAMC_DMR0 = (0x00FC0000) | (0x00000001);
for(x=0; x<20000; x++)
{
temp +=1;
}
// set ip ( bit 3 ) in dacr
MCF5235_SDRAMC_DACR0 |= (0x00000008) ;
// init precharge
*((unsigned long *)MM_SDRAM_BASE) = 0xDEADBEEF;
// set RE in dacr
MCF5235_SDRAMC_DACR0 |= (0x00008000);
// wait
for(x=0; x<20000; x++)
{
temp +=1;
}
// issue IMRS
MCF5235_SDRAMC_DACR0 |= (0x00000040);
*((short *)MM_SDRAM_BASE) = 0;
for(x=0; x<60000; x++)
{
temp +=1;
}
*((unsigned long*)MM_SDRAM_BASE)=0x12345678;
address_of_MCF5235_BSP_START_FROM_FLASH = (int *) & MCF5235_BSP_START_FROM_FLASH;
if ( (int)address_of_MCF5235_BSP_START_FROM_FLASH == 1) {
//Setup the SDRAM
for(x=0; x<20000; x++)
{
temp +=1;
}
MCF5235_SDRAMC_DCR = 0x042E;
MCF5235_SDRAMC_DACR0 = 0x00001300;
MCF5235_SDRAMC_DMR0 = (0x00FC0000) | (0x00000001);
for(x=0; x<20000; x++)
{
temp +=1;
}
// set ip ( bit 3 ) in dacr
MCF5235_SDRAMC_DACR0 |= (0x00000008) ;
// init precharge
*((unsigned long *)MM_SDRAM_BASE) = 0xDEADBEEF;
// set RE in dacr
MCF5235_SDRAMC_DACR0 |= (0x00008000);
// wait
for(x=0; x<20000; x++)
{
temp +=1;
}
// issue IMRS
MCF5235_SDRAMC_DACR0 |= (0x00000040);
*((short *)MM_SDRAM_BASE) = 0;
for(x=0; x<60000; x++)
{
temp +=1;
}
*((unsigned long*)MM_SDRAM_BASE)=0x12345678;
} /* we have finished setting up the sdram */
/* Copy the interrupt vector table to address 0x0 in SDRAM */
{
@@ -73,7 +88,9 @@ void Init5235 (void)
}
}
/*
m68k_set_vbr(0);
/*
* Copy data, clear BSS and call boot_card()
*/
CopyDataClearBSSAndStart ();

View File

@@ -1,6 +1,6 @@
/*
* This file contains directives for the GNU linker which are specific
* to the Arcturus uC DIMM ColdFire 5282
* to the Freescale ColdFire mcf5235
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
@@ -12,6 +12,13 @@
* $Id$
*/
/*
* declare for the MCF5235_BSP_START_FROM_FLASH
* 0 - use debug monitor to load to ram
* 1 - load everything from flash from scratch
*/
MCF5235_BSP_START_FROM_FLASH = 0;
/*
* Declare some sizes.
*/

View File

@@ -1,6 +1,6 @@
/*
* This file contains directives for the GNU linker which are specific
* to the Arcturus uC DIMM ColdFire 5282
* to the Freescale ColdFire mcf5235
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
@@ -12,6 +12,13 @@
* $Id$
*/
/*
* declare for the MCF5235_BSP_START_FROM_FLASH
* 0 - use debug monitor to load to ram
* 1 - load everything from flash from scratch
*/
MCF5235_BSP_START_FROM_FLASH = 1;
/*
* Declare some sizes.
*/
@@ -64,8 +71,8 @@ SECTIONS
/*
* Initialization and finalization code.
*
* Various files can provide initialization and finalization
*
* Various files can provide initialization and finalization
* functions. crtbegin.o and crtend.o are two instances. The
* body of these functions are in .init and .fini sections. We
* accumulate the bodies here, and prepend function prologues

View File

@@ -1,6 +1,6 @@
/*
* This file contains directives for the GNU linker which are specific
* to the Arcturus uC DIMM ColdFire 5282
* to the Freescale ColdFire mcf5235
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
@@ -12,6 +12,13 @@
* $Id$
*/
/*
* declare for the MCF5235_BSP_START_FROM_FLASH
* 0 - use debug monitor to load to ram
* 1 - load everything from flash from scratch
*/
MCF5235_BSP_START_FROM_FLASH = 0;
/*
* Declare some sizes.
*/