How to make a yocto rootfs for MIPS CI20

Revision as of 08:19, 11 September 2014 by Vincent (talk | contribs) (Adding support for MIPS32r2)
Jump to: navigation, search

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:

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
source /opt/poky/1.6.1/environment-setup-x86_64-pokysdk-linux

Downloading YP Core - Daisy

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

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/" to add support for MIPS32r2:

cat > meta/conf/machine/include/ << "EOF"
DEFAULTTUNE ?= "mips32r2"

require conf/machine/include/mips/

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"

Adding the CI20 machine

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

cat > meta-yocto-bsp/conf/machine/ci20.conf << "EOF"
#@TYPE: Machine
#@NAME: CI20

require conf/machine/include/

DEFAULTTUNE = "mips32r2el"
SERIAL_CONSOLE = "115200 ttyS4"
IMAGE_FSTYPES ?= "tar.bz2"

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.