OpenEmbedded supports a lot of architectures some of the more common use cases have reference QEMU based BSPs in OpenEmbedded Core and some of them have the BSP support in respective layers, however OpenEmbedded Core provides all the plumbing needed to support those architectures e.g. ARM Big-Endian,  Broadcom XLP, SH4 etc.

I maintain NSLU2 BSP layer, in the new OE architecture. NSLU2 is a well known platform of the past where it has a lot of OpenSource ecosystem ported to run on NSLU2, many distributions e.g. Angstrom, Debian, SlugOS, supported NSLU2 machines. NSLU2 is based on Xscale processor which has ARMv5TE core in it. One of the uniqueness of this device is that many distribution use it in Big-Endian mode and infact thats the default and more common usecase, SlugOS distribution which provided firmware for NSLU2 is based on OpenEmbedded, I also created the slugOS (distribution) layer which has lagged a bit.

However this time around, I thought lets try to create OpenEmbedded Core Reference Images for NSLU2BE, so follow the getting started instructions for OpenEmbedded Core and additionally steps below using OpenEmbedded Core master.

Add machine BSP layer to the layer set. ( build/conf/bblayers.conf)


/builds1/slug/meta-nslu2 \

/builds1/slug/openembedded-core/meta \


Then in build directory just get baking

MACHINE=nslu2be bitbake core-image-minimal

In the end it builds a root file system image and resulting kernel (core-image-minimal-nslu2be-20130616033921.rootfs.tar.gz

and zImage--2.6.37+svnr1091-r1.1-nslu2be-20130615013911.bin)

Both booted in one go over NFS, (booting this little device with new kernel/rootfs is not as straight forward), I used nfsboot because it has only 8MB of flash (and I did not want to brick it), First use turnup to switch system to boot from NFS and then reboot. It uses Redboot as first level bootloader and APEX as second level which launches kernel. redboot can tftp but memory it can write to is < 1M and it does not have ATAGS support hence the need to Second Level bootloader APEX. I stopped at APEX and downloaded the newly built kernel using XMODEM into relevant RAM location

I also tried Angstrom-next (a Yocto Compatible Distribution) and its reference image systemd-image built out-of-box since NSLU2 BSPs are supported in Angstrom.

MACHINE=nslu2be bitbake systemd-image

I have not found time to try the systemd-image yet

If you did not notice then I would like to emphesize that this needed no changed in OpenEmbedded Core metadata to support Big-Endian and BSP layer, I fixed/upgraded few recipes for modern day and age. I got a bit more edgy and tried kernel 3.9.6 and guess what it booted too !!  now I am sure 3.10-rc6 will boot fine too. Time to add new kernel recipes to BSP layer.