File:		README.COBRA5272
Author:		Florian Schlote for Sentec elektronik (linux@sentec-elektronik.de)
Contents:	This is the README of u-boot (Universal bootloader) for our
		COBRA5272 board.
Version:	v01.00
Date:		Tue Mar 30 00:28:33 CEST 2004
License:	This document is published under the GNU GPL
______________________________________________________________________

CHANGES
040330   v01.00 Creation

______________________________________________________________________


CONFIGURING
-----------

1. Modify include/configs/cobra5272.h acc. to your prefs

2. If necessary, modify board/cobra5272/config.mk (see below)

3.

> make cobra5272_config

> make


Please refer to u-boot README (general info, u-boot-x-x-x/README),
to u-boot-x-x-x/board/cobra5272/README and
to the comments in u-boot-x-x-x/include/configs/cobra5272.h

Configuring u-boot is done by commenting/uncommenting preprocessor defines.

Default configuration is

	FLASH version (for further info see subsection below)
	link address 0xffe00000

	16 MB RAM

	network enabled
	no default IP address for target, host set, no MACaddress set

	bootdelay for autoboot 5 sec.
	autoboot disabled


#-----------------------------------
# u-boot FLASH version & RAM version
#-----------------------------------

The u-boot bootloader for Coldfire processors can be configured

	1. as a standalone bootloader residing in flash & relocating itself to RAM on
	startup automatically => "FLASH version"

	2. as a RAM version which will not load from flash automatically as it needs a
	prestage bootloader ("chainloading") & is running only from the RAM address it
	is linked to => "RAM version"

	This version may be very helpful when installing u-boot for the first time
	since it can be used to make available s. th. like a "bootstrap
	mechanism".


How to build the different images:

------------------------------
Flash version
------------------------------

Compile u-boot

in dir ./u-boot-x-x-x/

please first check:

	in ./include/configs/cobra5272.h

		CONFIG_MONITOR_IS_IN_RAM has to be undefined, e. g. as follows:

		#if 0
			#define CONFIG_MONITOR_IS_IN_RAM
			/* define if monitor is started from a pre-loader */
		#endif

	=> u-boot as single bootloader starting from flash


	in board/cobra5272/config.mk CONFIG_TEXT_BASE should be

		CONFIG_TEXT_BASE = 0xffe00000

	=> linking address for u-boot as single bootloader stored in flash

then:

	host> make cobra5272_config
		rm -f include/config.h include/config.mk
		Configuring for cobra5272 board...
	host> make
		[...]

	host> cp u-boot.bin /tftpboot/u-boot_flash.bin


------------------------------
RAM version
------------------------------

in dir ./u-boot-x-x-x/

	host> make distclean

please modify the settings:

	in ./include/configs/cobra5272.h

		CONFIG_MONITOR_IS_IN_RAM now has to be defined, e. g. as follows:

		#if 1
			#define CONFIG_MONITOR_IS_IN_RAM
			/*define if monitor is started from a pre-loader */
		#endif

	=> u-boot as RAM version, chainloaded by another bootloader or using bdm cable


	in board/cobra5272/config.mk CONFIG_TEXT_BASE should be

		CONFIG_TEXT_BASE = 0x00020000

	=> target linking address for RAM


then:

	host> make cobra5272_config
		rm -f include/config.h include/config.mk
		Configuring for cobra5272 board...
	host> make
		[...]

	host> cp u-boot.bin /tftpboot/u-boot_ram.bin


----
HINT
----

If the m68k-elf-toolchain & the m68k-bdm-gdb is installed you can run the RAM
version by typing (in dir ./u-boot-x-x-x/)
"board/cobra5272/bdm/load-cobra_uboot" ,
in ./u-boot-x-x-x/ the RAM version u-boot (elf format) has to be available.
