
U-Boot for Motorola (or Freescale/NXP) ColdFire processors

===============================================================================
History

November 02, 2017	Angelo Dureghello <angelo@sysam.it>
August   08, 2005	Jens Scharsig <esw@bus-elektronik.de>
			MCF5282 implementation without preloader
January  12, 2004	<josef.baumgartner@telex.de>
===============================================================================


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


1. Overview

The ColdFire instruction set is "assembly source" compatible but an evolution
of the original 68000 instruction set. Some not much used instructions has
been removed. The instructions are only 16, 32, or 48 bits long, a
simplification compared to the 68000 series.

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.

Thanks mainly to Freescale but also to several other contributors, U-Boot now
supports nearly the entire range of ColdFire processors and their related
development boards.


2. Supported CPU families

Please "make menuconfig" with ARCH=m68k, or check arch/m68k/cpu to see the
currently supported processor and families.


3. Supported boards

U-Boot supports actually more than 40 ColdFire based boards.
Board configuration can be done trough include/configs/<boardname>.h but the
current recommended method is to use the new and more friendly approach as
the "make menuconfig" way, very similar to the Linux way.

To know details as memory map, build targets, default setup, etc, of a
specific board please check:

include/configs/<boardname>.h
and/or
configs/<boardname>_defconfig

It is possible to build all ColdFire boards in a single command-line command,
from u-boot root directory, as:

./tools/buildman/buildman m68k


3.1. Build U-Boot for a specific board

A bash script similar to the one below may be used:

#!/bin/bash

export CROSS_COMPILE=/opt/toolchains/m68k/gcc-4.9.0-nolibc/bin/m68k-linux-

board=M5475DFE

make distclean
make ARCH=m68k ${board}_defconfig
make ARCH=m68k KBUILD_VERBOSE=1


4. Adopted toolchains

Please check:
https://www.denx.de/wiki/U-Boot/ColdFireNotes


5. ColdFire specific configuration options/settings


5.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 (CONFIG_SYS_MONITOR_BASE) and Makefile
(CONFIG_SYS_TEXT_BASE) to the load address.


5.2 ColdFire CPU specific options/settings

To specify a CPU model, some defines shoudl be used, i.e.:

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

Other options, generally set inside include/configs/<boardname>.h, they may
apply to one or more cpu for the ColdFire family:

CONFIG_SYS_MBAR	-- defines the base address of the MCF5272 configuration
		   registers
CONFIG_SYS_ENET_BD_BASE
		-- defines the base address of the FEC buffer descriptors
CONFIG_SYS_SCR	-- defines the contents of the System Configuration Register
CONFIG_SYS_SPR	-- defines the contents of the System Protection Register
CONFIG_SYS_MFD	-- defines the PLL Multiplication Factor Divider
		   (see table 9-4 of MCF user manual)
CONFIG_SYS_RFD	-- defines the PLL Reduce Frequency Devider
		   (see table 9-4 of MCF user manual)
CONFIG_SYS_CSx_BASE
		-- defines the base address of chip select x
CONFIG_SYS_CSx_SIZE
		-- defines the memory size (address range) of chip select x
CONFIG_SYS_CSx_WIDTH
		-- defines the bus with of chip select x
CONFIG_SYS_CSx_MASK
		-- defines the mask for the related chip select x
CONFIG_SYS_CSx_RO
		-- if set to 0 chip select x is read/write else chip select
		   is read only
CONFIG_SYS_CSx_WS
		-- defines the number of wait states  of chip select x
CONFIG_SYS_CACHE_ICACR
CONFIG_SYS_CACHE_DCACR
CONFIG_SYS_CACHE_ACRX
		-- cache-related registers config
CONFIG_SYS_SDRAM_BASE
CONFIG_SYS_SDRAM_SIZE
CONFIG_SYS_SDRAM_BASEX
CONFIG_SYS_SDRAM_CFG1
CONFIG_SYS_SDRAM_CFG2
CONFIG_SYS_SDRAM_CTRL
CONFIG_SYS_SDRAM_MODE
CONFIG_SYS_SDRAM_EMOD
		-- SDRAM config for SDRAM controller-specific registers, please
		   see arch/m68k/cpu/<specific_cpu>/start.S files to see how
		   these options are used.
CONFIG_MCFUART
		-- defines enabling of ColdFire UART driver
CONFIG_SYS_UART_PORT
		-- defines the UART port to be used (only a single UART can be
		   actually enabled)
CONFIG_SYS_SBFHDR_SIZE
		-- size of the prepended SBF header, if any
