Date: Thu, 13 Mar 2008 15:56:53 +0200 From: "Jacques Fourie" <jacques.fourie@gmail.com> To: freebsd-embedded@freebsd.org Subject: Howto boot FreeBSD on MPC8540EVAL Message-ID: <be2f52430803130656g31af83d7i402aa123dd2aca78@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi, For the benefit of the list I'll describe how I got FreeBSD current to boot on a MPC8540EVAL platform. This basically consisted of installing a newer version of u-boot onto the flash and some minor kernel modifications (thanks for all the help Rafal). u-boot installation --------------------- The MPC8540EVAL ships with u-boot pre-installed. Unfortunately the version on mine was too old to contain the api module used by the FreeBSD bootloader. Here is a short summary of how I installed a newer version: * Downloaded a snapshot of u-boot 1.3.2 (Close to release at time of writing) * Added the following to include/configs/MPC8540EVAL.h : #define CONFIG_MII 1 #define CONFIG_API 1 #define CONFIG_CMD_ELF #define CONFIG_CMD_CONSOLE #define CONFIG_CMD_MII * Compiled u-boot on a Linux box with the toolchain that ships with the Metrowerks BSP for this platform. I tried to compile using the FreeBSD cross compiler but ran into some problems with the binutils and gcc combination. * Setup a tftp server on a FreeBSD7.0 box by editing the appropriate entry in inetd.conf (and starting inetd). * Setup a dhcpd server * Copy the new u-boot.bin to the tftp root directory * Boot the MPC8540EVAL and write the new u-boot onto the flash : MPC8540EVAL=> tftpboot 0x100000 ubnew.bin MPC8540EVAL=> protect off 0xfff80000 0xffffffff MPC8540EVAL=> era 0xfff80000 0xffffffff MPC8540EVAL=> cp.b 0x100000 0xfff80000 ${filesize} MPC8540EVAL=> setenv filesize MPC8540EVAL=> saveenv MPC8540EVAL=> protect on 0xfff80000 0xffffffff MPC8540EVAL=> reset FreeBSD ----------- I performed the following steps on a FreeBSD 7.0-RELEASE installation. * Checkout latest sources from -current * Apply the following patch to src/sys/dev/tsec/if_tsec.c: index a5aff35..bd3854b 100644 --- a/sys/dev/tsec/if_tsec.c +++ b/sys/dev/tsec/if_tsec.c @@ -1561,7 +1561,7 @@ tsec_miibus_readreg(device_t dev, int ph sc = device_get_softc(dev); - if (device_get_unit(dev) != phy) + if (phy != 4 && phy != 7) return (0); sc = tsec0_sc; * Cross-compile FreeBSD powerpc world and kernel using MPC85XX kernel config * Do a 'make installworld DESTDIR=/some/dir' * Edit /some/dir/boot/loader.conf and add the line 'hw.uart.console="mm:0xfef04500"' * NFS export /some/dir * Added the 'root-path' option to the DHCP server to point to this directory. * Copy ubldr from src/sys/boot/powerpc/uboot/ubldr to the tftp root directory * Boot into new u-boot, download ubldr and execute it: MPC8540EVAL=> tftpboot 0x100000 ubldr MPC8540EVAL=> bootelf 0x100000 If all goes well you'll now see the boot loader loading and then booting the kernel. Jacques
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?be2f52430803130656g31af83d7i402aa123dd2aca78>