
U-Boot for Motorola M68K

Last Update: January 12, 2004
====================================================================

This file contains status information for the port of U-Boot to the
Motorola M68K series of CPUs.

1. OVERVIEW
-----------
Bernhard Kuhn ported U-Boot 0.4.0 to the Motorola Coldfire
architecture. The patches of Bernhard support the MCF5272 and
MCF5282. A great disadvantage of these patches was that they needed
a pre-bootloader to start u-boot. Because of this, a new port was
created which no longer needs a first stage booter.

Although this port is intended to cover all M68k processors, only
the parts for the Motorola Coldfire MCF5272 and MCF5282 are
implemented at the moment. Additional CPUs and boards will be
hopefully added soon!


2. SUPPORTED CPUs
-----------------

2.1 Motorola Coldfire MCF5272
-----------------------------
CPU specific code is located in: cpu/mcf52x2


2.1 Motorola Coldfire MCF5282
-----------------------------
CPU specific code is located in: cpu/mcf52x2

At the moment the code isn't fully implemented and still needs a pre-loader!
The preloader must initialize the processor and then start u-boot. The board
must be configured for a pre-loader (see 4.1)

For the preloader, please see
http://mailman.uclinux.org/pipermail/uclinux-dev/2003-December/023384.html

U-boot is configured to run at 0x20000 at default. This can be configured by
change TEXT_BASE in board/m5282evb/config.mk and CFG_MONITOR_BASE in
include/configs/M5282EVB.h.


3. SUPPORTED BOARDs
-------------------

3.1 Motorola M5272C3 EVB
------------------------
Board specific code is located in: board/m5272c3

To configure the board, type: make M5272C3_config

U-Boot Memory Map:
------------------
0xffe00000 - 0xffe3ffff		u-boot
0xffe04000 - 0xffe05fff		environment (embedded in u-boot!)
0xffe40000 - 0xffffffff		free for linux/applications


3.2 Motorola M5282 EVB
------------------------
Board specific code is located in: board/m5282evb

To configure the board, type: make M5272C3_config


4. CONFIGURATION OPTIONS/SETTINGS
----------------------------------

4.1 Configuration to use a pre-loader
-------------------------------------
If u-boot should be loaded to RAM and started by a pre-loader
CONFIG_MONITOR_IS_IN_RAM must be defined. If it is defined the
initial vector table and basic processor initialization will not
be compiled in. The start address of u-boot must be adjusted in
the boards config header file (CFG_MONITOR_BASE) and Makefile
(TEXT_BASE) to the load address.


4.1 MCF5272 specific Options/Settings
-------------------------------------

CONFIG_MCF52x2	-- defined for all MCF52x2 CPUs
CONFIG_M5272	-- defined for all Motorola MCF5272 CPUs

CONFIG_MONITOR_IS_IN_RAM
		-- defined if u-boot is loaded by a pre-loader

CFG_MBAR	-- defines the base address of the MCF5272 configuration registers
CFG_INIT_RAM_ADDR
		-- defines the base address of the MCF5272 internal SRAM
CFG_ENET_BD_BASE
		-- defines the base addres of the FEC buffer descriptors

CFG_SCR		-- defines the contents of the System Configuration Register
CFG_SPR		-- defines the contents of the System Protection Register
CFG_BRx_PRELIM	-- defines the contents of the Chip Select Base Registers
CFG_ORx_PRELIM	-- defines the contents of the Chip Select Option Registers

CFG_PxDDR	-- defines the contents of the Data Direction Registers
CFG_PxDAT	-- defines the contents of the Data Registers
CFG_PXCNT	-- defines the contents of the Port Configuration Registers


4.2 MCF5282 specific Options/Settings
-------------------------------------

CONFIG_MCF52x2	-- defined for all MCF52x2 CPUs
CONFIG_M5282	-- defined for all Motorola MCF5282 CPUs

CONFIG_MONITOR_IS_IN_RAM
		-- defined if u-boot is loaded by a pre-loader

CFG_MBAR	-- defines the base address of the MCF5282 internal register space
CFG_INIT_RAM_ADDR
		-- defines the base address of the MCF5282 internal SRAM
CFG_INT_FLASH_BASE
		-- defines the base address of the MCF5282 internal Flash memory
CFG_ENET_BD_BASE
		-- defines the base addres of the FEC buffer descriptors


5. COMPILER
-----------
To create U-Boot the gcc-2.95.3 compiler set (m68k-elf-20030314) from uClinux.org was used.
You can download it from: http://www.uclinux.org/pub/uClinux/m68k-elf-tools/


Regards,

Josef
<josef.baumgartner@telex.de>
