You were redirected here from eval8540boot.

FreeBSD/powerpc on MPC8540EVAL board

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

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

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.

This page based on a message to freebsd-embedded by Jacques Fourie

  • warnerlosh/eval8540boot.txt
  • Last modified: 2026/10/12 10:55
  • (external edit)