How to make a yocto rootfs for MIPS CI20

Setup the build environment
If the host system doesn't have git-1.7.5 or higher, tar-1.24 or higher and python-2.7.3 or higher, then your best choice is to use the buildtools tarball provided for that kind of situation. Download it from here:

http://downloads.yoctoproject.org/releases/yocto/yocto-1.6.1/buildtools/

Install the buildtools by running the .sh file (/opt/ could be a good place to install it) and then source the environment setup file:

chmod +x poky-eglibc-x86_64-buildtools-tarball-core2-64-buildtools-nativesdk-standalone-1.6.1.sh ./poky-eglibc-x86_64-buildtools-tarball-core2-64-buildtools-nativesdk-standalone-1.6.1.s source /opt/poky/1.6.1/environment-setup-x86_64-pokysdk-linux

Downloading YP Core - Daisy
Download the "YP Core - Daisy" tarball from here:

http://downloads.yoctoproject.org/releases/yocto/yocto-1.6.1/poky-daisy-11.0.1.tar.bz2

Building Yocto
Unpack the tarball and "cd" into the "poky-daisy-11.0.1" directory.

tar xf poky-daisy-11.0.1.tar.bz2 cd poky-daisy-11.0.1

Since in this example we are creating an image for the CI20, we need to build it for MIPS32r2 LittleEndian Hard-Float. We will need to specify a target machine, but unfortunately there isn't any target machine for the CI20 in Yocto right now. In fact, there isn't support for MIPS32r2 either. We are going to change that.

Adding support for MIPS32r2
Create the "meta/conf/machine/include/tune-mips32r2.inc" to add support for MIPS32r2:

cat > meta/conf/machine/include/tune-mips32r2.inc << "EOF" DEFAULTTUNE ?= "mips32r2" require conf/machine/include/mips/arch-mips.inc TUNEVALID[mips32r2] = "Enable mips32r2 specific processor optimizations" TUNECONFLICTS[mips32r2] = "n64 n32" TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "mips32r2", " -march=mips32r2", "", d)}" AVAILTUNES += "mips32r2 mips32r2el mips32r2-nf mips32r2el-nf" TUNE_FEATURES_tune-mips32r2 = "${TUNE_FEATURES_tune-mips} mips32r2" MIPSPKGSFX_VARIANT_tune-mips32r2 = "mips32r2" PACKAGE_EXTRA_ARCHS_tune-mips32r2 = "mips mips32r2" TUNE_FEATURES_tune-mips32r2el = "${TUNE_FEATURES_tune-mipsel} mips32r2" MIPSPKGSFX_VARIANT_tune-mips32r2el = "mips32r2el" PACKAGE_EXTRA_ARCHS_tune-mips32r2el = "mipsel mips32r2el" TUNE_FEATURES_tune-mips32r2-nf = "${TUNE_FEATURES_tune-mips-nf} mips32r2" MIPSPKGSFX_VARIANT_tune-mips32r2-nf = "mips32r2" PACKAGE_EXTRA_ARCHS_tune-mips32r2-nf = "mips-nf mips32r2-nf" TUNE_FEATURES_tune-mips32r2el-nf = "${TUNE_FEATURES_tune-mipsr2el-nf} mips32r2" MIPSPKGSFX_VARIANT_tune-mips32r2el-nf = "mips32r2el" PACKAGE_EXTRA_ARCHS_tune-mips32r2el-nf = "mipsel-nf mips32r2el-nf" EOF

Adding the CI20 machine
Create the "meta-yocto-bsp/conf/machine/ci20.conf" file:

cat > meta-yocto-bsp/conf/machine/ci20.conf << "EOF" require conf/machine/include/tune-mips32r2.inc DEFAULTTUNE = "mips32r2el" MACHINE_FEATURES = "serial" SERIAL_CONSOLE = "115200 ttyS4" IMAGE_FSTYPES ?= "tar.bz2" EOF
 * 1) @TYPE: Machine
 * 2) @NAME: CI20
 * 3) @DESCRIPTION: MIPS Creator CI20

Building the rootfs
Now you need to source the environment file:

source oe-init-build-env

That will create a build directory for you and "cd" automatically into it.

Now create the BSP layer issuing this command:

yocto-bsp create ci20 mips

It will ask some questions; just choose the default option for all of them.

Now we need to edit the "conf/local.conf" file to specify how we want our image to be built. Modify the value of the target machine and set it to "ci20":

MACHINE = "ci20"

Now create the image using this command:

bitbake core-image-sato

When the build process finishes you will find your rootfs image in the "tmp/deploy/images/ci20/" directory.

tmp/deploy/images/ci20/core-image-sato-ci20-.rootfs.tar.bz2