FreeBSD/mips for Cavium Octeon

I've recently improved the ABI selection in FreeBSD/mips. Now it is all handled via MACHINE_ARCH or TARGET_ARCH. mipsel and mipseb are the o32 32-bit versions. mips64eb and mips64el are for n64 64-bit versions.

I've knocked together a script for building an image for the Cavium Octeon eval boards that have CF that can boot using uboot from SDK 1.9.0 and 2.0.0 (and likely earlier versions, but I've not tested them). It creates two partitions: a FAT partition for the kernel and BSD partition for the rest of FreeBSD. It also takes care of building a big endian ufs system on a little endian system. You can find the script here. I've also create an image as well you can grab here. The script contains instructions for how to create the CF image.



Juli Mallett said...

Older SDKs work now; I fixed the bug in our ldscript a while ago.

I'd suggest not doing DHCP on octe0 by default since some boards have weird port layouts and some boards have explicit management ports (the new octm driver) and so on.

Warner Losh said...

Yea, it was weird that port 4 was 'octe0' but that's what Linux and uboot both do on my board.

I have three boards. The two CN5xxx based boards boot correctly (although one fails to find the CF that's there). I also have one CN3800 with really old SDK loaded and that one fails to load the kernel properly for reasons I've not diagnosed yet.

Anonymous said...

Very nice. What kind if cavium board do you have? I'm hoping to install FreeBSD on one of these in the future as a home firewall/router.

Warner Losh said...

I'm running it on a CN30XX-EVB-HS5 with a CN5020p1.1-700-SCP SoC in it.