xref: /openbmc/u-boot/doc/README.m68k (revision ef64e782)
1
2U-Boot for Motorola (or Freescale/NXP) ColdFire processors
3
4===============================================================================
5History
6
7November 02, 2017	Angelo Dureghello <angelo@sysam.it>
8August   08, 2005	Jens Scharsig <esw@bus-elektronik.de>
9			MCF5282 implementation without preloader
10January  12, 2004	<josef.baumgartner@telex.de>
11===============================================================================
12
13
14This file contains status information for the port of U-Boot to the
15Motorola ColdFire series of CPUs.
16
17
181. Overview
19
20The ColdFire instruction set is "assembly source" compatible but an evolution
21of the original 68000 instruction set. Some not much used instructions has
22been removed. The instructions are only 16, 32, or 48 bits long, a
23simplification compared to the 68000 series.
24
25Bernhard Kuhn ported U-Boot 0.4.0 to the Motorola ColdFire architecture.
26The patches of Bernhard support the MCF5272 and MCF5282. A great disadvantage
27of these patches was that they needed a pre-bootloader to start U-Boot.
28Because of this, a new port was created which no longer needs a first stage
29booter.
30
31Thanks mainly to Freescale but also to several other contributors, U-Boot now
32supports nearly the entire range of ColdFire processors and their related
33development boards.
34
35
362. Supported CPU families
37
38Please "make menuconfig" with ARCH=m68k, or check arch/m68k/cpu to see the
39currently supported processor and families.
40
41
423. Supported boards
43
44U-Boot supports actually more than 40 ColdFire based boards.
45Board configuration can be done trough include/configs/<boardname>.h but the
46current recommended method is to use the new and more friendly approach as
47the "make menuconfig" way, very similar to the Linux way.
48
49To know details as memory map, build targets, default setup, etc, of a
50specific board please check:
51
52include/configs/<boardname>.h
53and/or
54configs/<boardname>_defconfig
55
56It is possible to build all ColdFire boards in a single command-line command,
57from u-boot root directory, as:
58
59./tools/buildman/buildman m68k
60
61
623.1. Build U-Boot for a specific board
63
64A bash script similar to the one below may be used:
65
66#!/bin/bash
67
68export CROSS_COMPILE=/opt/toolchains/m68k/gcc-4.9.0-nolibc/bin/m68k-linux-
69
70board=M5475DFE
71
72make distclean
73make ARCH=m68k ${board}_defconfig
74make ARCH=m68k KBUILD_VERBOSE=1
75
76
774. Adopted toolchains
78
79Please check:
80https://www.denx.de/wiki/U-Boot/ColdFireNotes
81
82
835. ColdFire specific configuration options/settings
84
85
865.1. Configuration to use a pre-loader
87
88If U-Boot should be loaded to RAM and started by a pre-loader
89CONFIG_MONITOR_IS_IN_RAM must be defined. If it is defined the
90initial vector table and basic processor initialization will not
91be compiled in. The start address of U-Boot must be adjusted in
92the boards config header file (CONFIG_SYS_MONITOR_BASE) and Makefile
93(CONFIG_SYS_TEXT_BASE) to the load address.
94
95
965.2 ColdFire CPU specific options/settings
97
98To specify a CPU model, some defines shoudl be used, i.e.:
99
100CONFIG_MCF52x2	-- defined for all MCF52x2 CPUs
101CONFIG_M5272	-- defined for all Motorola MCF5272 CPUs
102
103Other options, generally set inside include/configs/<boardname>.h, they may
104apply to one or more cpu for the ColdFire family:
105
106CONFIG_SYS_MBAR	-- defines the base address of the MCF5272 configuration
107		   registers
108CONFIG_SYS_ENET_BD_BASE
109		-- defines the base address of the FEC buffer descriptors
110CONFIG_SYS_SCR	-- defines the contents of the System Configuration Register
111CONFIG_SYS_SPR	-- defines the contents of the System Protection Register
112CONFIG_SYS_MFD	-- defines the PLL Multiplication Factor Divider
113		   (see table 9-4 of MCF user manual)
114CONFIG_SYS_RFD	-- defines the PLL Reduce Frequency Devider
115		   (see table 9-4 of MCF user manual)
116CONFIG_SYS_CSx_BASE
117		-- defines the base address of chip select x
118CONFIG_SYS_CSx_SIZE
119		-- defines the memory size (address range) of chip select x
120CONFIG_SYS_CSx_WIDTH
121		-- defines the bus with of chip select x
122CONFIG_SYS_CSx_MASK
123		-- defines the mask for the related chip select x
124CONFIG_SYS_CSx_RO
125		-- if set to 0 chip select x is read/write else chip select
126		   is read only
127CONFIG_SYS_CSx_WS
128		-- defines the number of wait states  of chip select x
129CONFIG_SYS_CACHE_ICACR
130CONFIG_SYS_CACHE_DCACR
131CONFIG_SYS_CACHE_ACRX
132		-- cache-related registers config
133CONFIG_SYS_SDRAM_BASE
134CONFIG_SYS_SDRAM_SIZE
135CONFIG_SYS_SDRAM_BASEX
136CONFIG_SYS_SDRAM_CFG1
137CONFIG_SYS_SDRAM_CFG2
138CONFIG_SYS_SDRAM_CTRL
139CONFIG_SYS_SDRAM_MODE
140CONFIG_SYS_SDRAM_EMOD
141		-- SDRAM config for SDRAM controller-specific registers, please
142		   see arch/m68k/cpu/<specific_cpu>/start.S files to see how
143		   these options are used.
144CONFIG_MCFUART
145		-- defines enabling of ColdFire UART driver
146CONFIG_SYS_UART_PORT
147		-- defines the UART port to be used (only a single UART can be
148		   actually enabled)
149CONFIG_SYS_SBFHDR_SIZE
150		-- size of the prepended SBF header, if any
151