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 - cpu/mcf5445x/cpu.c cpu specific code - cpu/mcf5445x/cpu_init.c Flexbus ChipSelect, Mux pins setup, icache and RTC extra regs - cpu/mcf5445x/interrupts.c cpu specific interrupt support - cpu/mcf5445x/speed.c system, pci, flexbus, and cpu clock - cpu/mcf5445x/Makefile Makefile - cpu/mcf5445x/config.mk config make - 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 - lib_m68k/board.c board init function - lib_m68k/cache.c - lib_m68k/interrupts Coldfire common interrupt functions - lib_m68k/m68k_linux.c - lib_m68k/time.c Timer functions (Dma timer and PIT) - lib_m68k/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 CFG_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 CFG_MCFRTC_BASE -- provide base address for RTC in immap.h CFG_RTC_OSCILLATOR -- define RTC clock frequency RTC_DEBUG -- define to show RTC debug message CFG_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 CFG_DISCOVER_PHY -- enable PHY discovery CFG_RX_ETH_BUFFER -- Set FEC Receive buffer CFG_FAULT_ECHO_LINK_DOWN-- CFG_FEC0_PINMUX -- Set FEC0 Pin configuration CFG_FEC1_PINMUX -- Set FEC1 Pin configuration CFG_FEC0_MIIBASE -- Set FEC0 MII base register CFG_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 CFG_IDE_MAXBUS -- define max channel CFG_IDE_MAXDEVICE -- define max devices per channel CFG_ATA_BASE_ADDR -- define ATA base address CFG_ATA_IDE0_OFFSET -- define ATA IDE0 offset CFG_ATA_DATA_OFFSET -- define ATA data IO CFG_ATA_REG_OFFSET -- define for normal register accesses CFG_ATA_ALT_OFFSET -- define for alternate registers CFG_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 CFG_I2C_SPEED -- define for I2C speed CFG_I2C_SLAVE -- define for I2C slave address CFG_I2C_OFFSET -- define for I2C base address offset CFG_IMMR -- define for MBAR offset CONFIG_PCI -- define for PCI support CONFIG_PCI_PNP -- define for Plug n play support CFG_PCI_MEM_BUS -- PCI memory logical offset CFG_PCI_MEM_PHYS -- PCI memory physical offset CFG_PCI_MEM_SIZE -- PCI memory size CFG_PCI_IO_BUS -- PCI IO logical offset CFG_PCI_IO_PHYS -- PCI IO physical offset CFG_PCI_IO_SIZE -- PCI IO size CFG_PCI_CFG_BUS -- PCI Configuration logical offset CFG_PCI_CFG_PHYS -- PCI Configuration physical offset CFG_PCI_CFG_SIZE -- PCI Configuration size CONFIG_EXTRA_CLOCK -- Enable extra clock such as vco, flexbus, pci, etc CFG_MBAR -- define MBAR offset CFG_ATMEL_BOOT -- To determine the u-boot is booted from Atmel or Intel CONFIG_MONITOR_IS_IN_RAM -- Not support CFG_INIT_RAM_ADDR -- defines the base address of the MCF54455 internal SRAM CFG_CSn_BASE -- defines the Chip Select Base register CFG_CSn_MASK -- defines the Chip Select Mask register CFG_CSn_CTRL -- defines the Chip Select Control register CFG_ATMEL_BASE -- defines the Atmel Flash base CFG_INTEL_BASE -- defines the Intel Flash base CFG_SDRAM_BASE -- defines the DRAM Base CFG_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' autoscr - run script from memory 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 icache - enable or disable instruction cache icrc32 - checksum calculation ide - IDE sub-system iloop - infinite loop on address range imd - i2c memory display iminfo - print header information for application image imls - list all images found in flash imm - i2c memory modify (auto-incrementing) imw - memory write (fill) inm - memory modify (constant address) iprobe - probe to discover valid I2C chip addresses 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 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: / #