Freescale MCF54455EVB ColdFire Development Board
================================================

TsiChung Liew(Tsi-Chung.Liew@freescale.com)
Created 4/08/07
===========================================


Changed files:
==============

- board/freescale/m54455evb/m54455evb.c	Dram setup, IDE pre init, and PCI init
- board/freescale/m54455evb/flash.c		Atmel and INTEL flash support
- board/freescale/m54455evb/Makefile		Makefile
- board/freescale/m54455evb/config.mk	config make
- board/freescale/m54455evb/u-boot.lds	Linker description

- common/cmd_bdinfo.c		Clock frequencies output
- common/cmd_mii.c		mii support

- arch/m68k/cpu/mcf5445x/cpu.c		cpu specific code
- arch/m68k/cpu/mcf5445x/cpu_init.c	Flexbus ChipSelect, Mux pins setup, icache and RTC extra regs
- arch/m68k/cpu/mcf5445x/interrupts.c	cpu specific interrupt support
- arch/m68k/cpu/mcf5445x/speed.c		system, pci, flexbus, and cpu clock
- arch/m68k/cpu/mcf5445x/Makefile		Makefile
- arch/m68k/cpu/mcf5445x/config.mk	config make
- arch/m68k/cpu/mcf5445x/start.S		start up assembly code

- doc/README.m54455evb	This readme file

- drivers/net/mcffec.c		ColdFire common FEC driver
- drivers/serial/mcfuart.c	ColdFire common UART driver

- include/asm-m68k/bitops.h		Bit operation function export
- include/asm-m68k/byteorder.h		Byte order functions
- include/asm-m68k/fec.h		FEC structure and definition
- include/asm-m68k/fsl_i2c.h		I2C structure and definition
- include/asm-m68k/global_data.h	Global data structure
- include/asm-m68k/immap.h		ColdFire specific header file and driver macros
- include/asm-m68k/immap_5445x.h	mcf5445x specific header file
- include/asm-m68k/io.h			io functions
- include/asm-m68k/m5445x.h		mcf5445x specific header file
- include/asm-m68k/posix_types.h	Posix
- include/asm-m68k/processor.h		header file
- include/asm-m68k/ptrace.h		Exception structure
- include/asm-m68k/rtc.h		Realtime clock header file
- include/asm-m68k/string.h		String function export
- include/asm-m68k/timer.h		Timer structure and definition
- include/asm-m68k/types.h		Data types definition
- include/asm-m68k/uart.h		Uart structure and definition
- include/asm-m68k/u-boot.h		u-boot structure

- include/configs/M54455EVB.h	Board specific configuration file

- arch/m68k/lib/board.c			board init function
- arch/m68k/lib/cache.c
- arch/m68k/lib/interrupts			Coldfire common interrupt functions
- arch/m68k/lib/m68k_linux.c
- arch/m68k/lib/time.c			Timer functions (Dma timer and PIT)
- arch/m68k/lib/traps.c			Exception init code

- rtc/mcfrtc.c				Realtime clock Driver

1 MCF5445x specific Options/Settings
====================================
1.1 pre-loader is no longer suppoer in thie coldfire family

1.2 Configuration settings for M54455EVB Development Board
CONFIG_MCF5445x		-- define for all MCF5445x CPUs
CONFIG_M54455		-- define for all Freescale MCF54455 CPUs
CONFIG_M54455EVB	-- define for M54455EVB board

CONFIG_MCFUART		-- define to use common CF Uart driver
CONFIG_SYS_UART_PORT		-- define UART port number, start with 0, 1 and 2
CONFIG_BAUDRATE		-- define UART baudrate

CONFIG_MCFRTC		-- define to use common CF RTC driver
CONFIG_SYS_MCFRTC_BASE		-- provide base address for RTC in immap.h
CONFIG_SYS_RTC_OSCILLATOR	-- define RTC clock frequency
RTC_DEBUG		-- define to show RTC debug message
CONFIG_CMD_DATE		-- enable to use date feature in u-boot

CONFIG_MCFFEC		-- define to use common CF FEC driver
CONFIG_NET_MULTI	-- define to use multi FEC in u-boot
CONFIG_MII		-- enable to use MII driver
CONFIG_CF_DOMII		-- enable to use MII feature in cmd_mii.c
CONFIG_SYS_DISCOVER_PHY	-- enable PHY discovery
CONFIG_SYS_RX_ETH_BUFFER	-- Set FEC Receive buffer
CONFIG_SYS_FAULT_ECHO_LINK_DOWN--
CONFIG_SYS_FEC0_PINMUX		-- Set FEC0 Pin configuration
CONFIG_SYS_FEC1_PINMUX		-- Set FEC1 Pin configuration
CONFIG_SYS_FEC0_MIIBASE	-- Set FEC0 MII base register
CONFIG_SYS_FEC1_MIIBASE	-- Set FEC0 MII base register
MCFFEC_TOUT_LOOP	-- set FEC timeout loop
CONFIG_HAS_ETH1		-- define to enable second FEC in u-boot

CONFIG_ISO_PARTITION	-- enable ISO read/write
CONFIG_DOS_PARTITION	-- enable DOS read/write
CONFIG_IDE_RESET	-- define ide_reset()
CONFIG_IDE_PREINIT	-- define ide_preinit()
CONFIG_ATAPI		-- define ATAPI support
CONFIG_LBA48		-- define LBA48 (larger than 120GB) support
CONFIG_SYS_IDE_MAXBUS		-- define max channel
CONFIG_SYS_IDE_MAXDEVICE	-- define max devices per channel
CONFIG_SYS_ATA_BASE_ADDR	-- define ATA base address
CONFIG_SYS_ATA_IDE0_OFFSET	-- define ATA IDE0 offset
CONFIG_SYS_ATA_DATA_OFFSET	-- define ATA data IO
CONFIG_SYS_ATA_REG_OFFSET	-- define for normal register accesses
CONFIG_SYS_ATA_ALT_OFFSET	-- define for alternate registers
CONFIG_SYS_ATA_STRIDE		-- define for Interval between registers
_IO_BASE		-- define for IO base address

CONFIG_MCFTMR		-- define to use DMA timer
CONFIG_MCFPIT		-- define to use PIT timer

CONFIG_FSL_I2C		-- define to use FSL common I2C driver
CONFIG_HARD_I2C		-- define for I2C hardware support
CONFIG_SOFT_I2C		-- define for I2C bit-banged
CONFIG_SYS_I2C_SPEED		-- define for I2C speed
CONFIG_SYS_I2C_SLAVE		-- define for I2C slave address
CONFIG_SYS_I2C_OFFSET		-- define for I2C base address offset
CONFIG_SYS_IMMR		-- define for MBAR offset

CONFIG_PCI              -- define for PCI support
CONFIG_PCI_PNP          -- define for Plug n play support
CONFIG_SYS_PCI_MEM_BUS		-- PCI memory logical offset
CONFIG_SYS_PCI_MEM_PHYS	-- PCI memory physical offset
CONFIG_SYS_PCI_MEM_SIZE	-- PCI memory size
CONFIG_SYS_PCI_IO_BUS		-- PCI IO logical offset
CONFIG_SYS_PCI_IO_PHYS		-- PCI IO physical offset
CONFIG_SYS_PCI_IO_SIZE		-- PCI IO size
CONFIG_SYS_PCI_CFG_BUS		-- PCI Configuration logical offset
CONFIG_SYS_PCI_CFG_PHYS	-- PCI Configuration physical offset
CONFIG_SYS_PCI_CFG_SIZE	-- PCI Configuration size

CONFIG_EXTRA_CLOCK	-- Enable extra clock such as vco, flexbus, pci, etc

CONFIG_SYS_MBAR		-- define MBAR offset

CONFIG_SYS_ATMEL_BOOT		-- To determine the u-boot is booted from Atmel or Intel

CONFIG_MONITOR_IS_IN_RAM -- Not support

CONFIG_SYS_INIT_RAM_ADDR	-- defines the base address of the MCF54455 internal SRAM

CONFIG_SYS_CSn_BASE	-- defines the Chip Select Base register
CONFIG_SYS_CSn_MASK	-- defines the Chip Select Mask register
CONFIG_SYS_CSn_CTRL	-- defines the Chip Select Control register

CONFIG_SYS_ATMEL_BASE	-- defines the Atmel Flash base
CONFIG_SYS_INTEL_BASE	-- defines the Intel Flash base

CONFIG_SYS_SDRAM_BASE	-- defines the DRAM Base
CONFIG_SYS_SDRAM_BASE1	-- defines the DRAM Base 1

2. MEMORY MAP UNDER U-BOOT AND LINUX KERNEL
===========================================
2.1. System memory map:
	Flash:		0x00000000-0x3FFFFFFF (1024MB)
	DDR:		0x40000000-0x7FFFFFFF (1024MB)
	SRAM:		0x80000000-0x8FFFFFFF (256MB)
	ATA:		0x90000000-0x9FFFFFFF (256MB)
	PCI:		0xA0000000-0xBFFFFFFF (512MB)
	FlexBus:	0xC0000000-0xDFFFFFFF (512MB)
	IP:		0xF0000000-0xFFFFFFFF (256MB)

2.2. For the initial bringup, we adopted a consistent memory scheme between u-boot and
	linux kernel, you can customize it based on your system requirements:
	Atmel boot:
	Flash0:		0x00000000-0x0007FFFF (512KB)
	Flash1:		0x04000000-0x05FFFFFF (32MB)
	Intel boot:
	Flash0:		0x00000000-0x01FFFFFF (32MB)
	Flash1:		0x04000000-0x0407FFFF (512KB)

	CPLD:		0x08000000-0x08FFFFFF (16MB)
	FPGA:		0x09000000-0x09FFFFFF (16MB)
	DDR:		0x40000000-0x4FFFFFFF (256MB)
	SRAM:		0x80000000-0x80007FFF (32KB)
	IP:		0xFC000000-0xFC0FFFFF (64KB)

3. SWITCH SETTINGS
==================
3.1 SW1 Pin3: 0 - Boot from Atmel or 1 - INTEL
	SW1 Pin4: 0 - ULPI chip not in reset state or 1 - ULPI chip in reset state
	SW1 Pin5: 0 - Full ATA Bus enabled, FEC Phy1 powered down
			  1 - Upper 8 bits ATA data bus disabled, FEC PHY1 active
	SW1 Pin6: 0 - FEC Phy0 active or 1 - FEC Phy0 powered down
	SW1 Pin3: 0 - Boot from Atmel or 1 - INTEL

4. COMPILATION
==============
4.1	To create U-Boot the gcc-4.1-32 compiler set (ColdFire ELF version)
from codesourcery.com was used. Download it from:
http://www.codesourcery.com/gnu_toolchains/coldfire/download.html

4.2 Compilation
   export CROSS_COMPILE=cross-compile-prefix
   cd u-boot-1.x.x
   make distclean
   make M54455EVB_config, or		- default to atmel 33Mhz input clock
   make M54455EVB_atmel_config, or	- default to atmel 33Mhz input clock
   make M54455EVB_a33_config, or	- default to atmel 33Mhz input clock
   make M54455EVB_a66_config, or	- default to atmel 66Mhz input clock
   make M54455EVB_intel_config, or	- default to intel 33Mhz input clock
   make M54455EVB_i33_config, or	- default to intel 33Mhz input clock
   make M54455EVB_i66_config, or	- default to intel 66Mhz input clock
   make

5. SCREEN DUMP
==============
5.1 M54455EVB Development board
    Boot from Atmel (NOTE: May not show exactly the same)

U-Boot 1.2.0-g98c80b46-dirty (Jul 26 2007 - 12:44:08)

CPU:   Freescale MCF54455 (Mask:48 Version:1)
       CPU CLK 266 Mhz BUS CLK 133 Mhz FLB CLK 66 Mhz
       PCI CLK 33 Mhz INP CLK 33 Mhz VCO CLK 533 Mhz
Board: Freescale M54455 EVB
I2C:   ready
DRAM:  256 MB
FLASH: 16.5 MB
In:    serial
Out:   serial
Err:   serial
Net:   FEC0, FEC1
IDE:   Bus 0: not available
-> print
bootargs=root=/dev/ram rw
bootdelay=1
baudrate=115200
ethaddr=00:e0:0c:bc:e5:60
eth1addr=00:e0:0c:bc:e5:61
hostname=M54455EVB
netdev=eth0
inpclk=33333333
loadaddr=40010000
load=tftp ${loadaddr) ${u-boot}
upd=run load; run prog
prog=prot off 0 2ffff;era 0 2ffff;cp.b ${loadaddr} 0 ${filesize};save
ethact=FEC0
mtdids=nor0=M54455EVB-1
mtdparts=M54455EVB-1:16m(user)
u-boot=u-boot54455.bin
filesize=292b4
fileaddr=40010000
gatewayip=192.168.1.1
netmask=255.255.255.0
ipaddr=192.168.1.3
serverip=192.168.1.2
stdin=serial
stdout=serial
stderr=serial
mem=261632k

Environment size: 563/8188 bytes
-> bdinfo
memstart    = 0x40000000
memsize     = 0x10000000
flashstart  = 0x00000000
flashsize   = 0x01080000
flashoffset = 0x00000000
sramstart   = 0x80000000
sramsize    = 0x00008000
mbar        = 0xFC000000
busfreq     = 133.333 MHz
pcifreq     = 33.333 MHz
flbfreq     = 66.666 MHz
inpfreq     = 33.333 MHz
vcofreq     = 533.333 MHz
ethaddr     = 00:E0:0C:BC:E5:60
eth1addr    = 00:E0:0C:BC:E5:61
ip_addr     = 192.168.1.3
baudrate    = 115200 bps
->
-> help
?       - alias for 'help'
base    - print or set address offset
bdinfo  - print Board Info structure
boot    - boot default, i.e., run 'bootcmd'
bootd   - boot default, i.e., run 'bootcmd'
bootelf - Boot from an ELF image in memory
bootm   - boot application image from memory
bootp	- boot image via network using BootP/TFTP protocol
bootvx  - Boot vxWorks from an ELF image
cmp     - memory compare
coninfo - print console devices and information
cp      - memory copy
crc32   - checksum calculation
date    - get/set/reset date & time
dcache  - enable or disable data cache
diskboot- boot from IDE device
echo    - echo args to console
erase   - erase FLASH memory
ext2load- load binary file from a Ext2 filesystem
ext2ls  - list files in a directory (default /)
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls   - list files in a directory (default /)
flinfo  - print FLASH memory information
fsinfo	- print information about filesystems
fsload	- load binary file from a filesystem image
go      - start application at address 'addr'
help    - print online help
i2c     - I2C sub-system
icache  - enable or disable instruction cache
ide     - IDE sub-system
iminfo  - print header information for application image
imls    - list all images found in flash
itest	- return true/false on integer compare
loadb   - load binary file over serial line (kermit mode)
loads   - load S-Record file over serial line
loady   - load binary file over serial line (ymodem mode)
loop    - infinite loop on address range
ls	- list files in a directory (default /)
md      - memory display
mii     - MII utility commands
mm      - memory modify (auto-incrementing)
mtest   - simple RAM test
mw      - memory write (fill)
nfs	- boot image via network using NFS protocol
nm      - memory modify (constant address)
pci     - list and access PCI Configuration Space
ping	- send ICMP ECHO_REQUEST to network host
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv  - set environment variables
sleep   - delay execution for some time
source  - run script from memory
tftpboot- boot image via network using TFTP protocol
version - print monitor version
->bootm 4000000

## Booting image at 04000000 ...
   Image Name:   Linux Kernel Image
   Created:      2007-08-14  15:13:00 UTC
   Image Type:   M68K Linux Kernel Image (uncompressed)
   Data Size:    2301952 Bytes =  2.2 MB
   Load Address: 40020000
   Entry Point:  40020000
   Verifying Checksum ... OK
OK
Linux version 2.6.20-gfe5136d6-dirty (mattw@kea) (gcc version 4.2.0 20070318 (pr
erelease) (Sourcery G++ Lite 4.2-20)) #108 Mon Aug 13 13:00:13 MDT 2007
starting up linux startmem 0xc0254000, endmem 0xcfffffff, size 253MB
Built 1 zonelists.  Total pages: 32624
Kernel command line: root=/dev/mtdblock1 rw rootfstype=jffs2 ip=none mtdparts=ph
ysmap-flash.0:5M(kernel)ro,-(jffs2)
PID hash table entries: 1024 (order: 10, 4096 bytes)
Console: colour dummy device 80x25
Dentry cache hash table entries: 32768 (order: 4, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 3, 65536 bytes)
Memory: 257496k/262136k available (1864k kernel code, 2440k data, 88k init)
Mount-cache hash table entries: 1024
NET: Registered protocol family 16
SCSI subsystem initialized
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 0, 8192 bytes)
TCP established hash table entries: 8192 (order: 2, 32768 bytes)
TCP bind hash table entries: 4096 (order: 1, 16384 bytes)
TCP: Hash tables configured (established 8192 bind 4096)
TCP reno registered
JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
ColdFire internal UART serial driver version 1.00
ttyS0 at 0xfc060000 (irq = 90) is a builtin ColdFire UART
ttyS1 at 0xfc064000 (irq = 91) is a builtin ColdFire UART
ttyS2 at 0xfc068000 (irq = 92) is a builtin ColdFire UART
RAMDISK driver initialized: 16 RAM disks of 64000K size 1024 blocksize
loop: loaded (max 8 devices)
FEC ENET Version 0.2
fec: PHY @ 0x0, ID 0x20005ca2 -- DP83849
eth0: ethernet 00:08:ee:00:e4:19
physmap platform flash device: 01000000 at 04000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 8-bit bank
 Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
cfi_cmdset_0001: Erase suspend on write enabled
2 cmdlinepart partitions found on MTD device physmap-flash.0
Creating 2 MTD partitions on "physmap-flash.0":
0x00000000-0x00500000 : "kernel"
mtd: Giving out device 0 to kernel
0x00500000-0x01000000 : "jffs2"
mtd: Giving out device 1 to jffs2
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
VFS: Mounted root (jffs2 filesystem).
Setting the hostname to freescale
Mounting filesystems
mount: Mounting usbfs on /proc/bus/usb failed: No such file or directory
Starting syslogd and klogd
Setting up networking on loopback device:
Setting up networking on eth0:
eth0: config: auto-negotiation on, 100FDX, 100HDX, 10FDX, 10HDX.
Adding static route for default gateway to 172.27.255.254:
Setting nameserver to 172.27.0.1 in /etc/resolv.conf:
Starting inetd:
/ #
