| |
| 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 |