Warning: This page is about preliminary work

Open Embedded BSP layer for Qualcomm platforms

The following Open Embedded layer has been started to support Qualcomm platforms. For now, only the Inforce IFC6410 is supported, more platforms will be supported eventually.


The Linux kernel used for the IFC6410 is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Ubuntu-based member builds. The graphic stack is based on mesa, using the freedreno driver.

This BSP layer is working with the development version of Open Embedded Core (aka master branch). It has been tested with the following OE core commit:

commit 6bc3696d8451a23d743daf03ee98c4ba54ce4551
Author: Richard Purdie <[email protected]>
Date:   Mon Jul 21 19:10:20 2014 +0100

    wget: Remove unneeded DEPENDS line
    Signed-off-by: Richard Purdie <[email protected]>

Make sure to use at least this commit, since some OE Core patches are required to build a working image.

Setup a build environment

The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. However for simplicity the following instructions do not use any distribution, and instead use the 'distro-less' OE Core. As such, the Qualcomm layer only depends on OE core (and of course bitbake). If you are not familiar with Open Embedded and/or the Yocto project it is very much recommended to read the appropriate documentation at https://www.yoctoproject.org/documentation/current.

You need to download the following git trees:

mkdir oe && cd oe
git clone git://github.com/openembedded/oe-core openembedded-core
git clone git://github.com/openembedded/bitbake openembedded-core/bitbake
git clone http://git.linaro.org/git/people/nicolas.dechesne/meta-qualcomm.git

To initialize your build environment, you need to run:

source openembedded-core/oe-init-build-env <build folder>

Now, you need to edit the file <build>/conf/local.conf and set

MACHINE ?= "ifc6410"

If you want your images to have a SSH server installed by default, you can to add ssh-server-dropbear to EXTRA_IMAGE_FEATURES in this configuration file.

These instructions can be used to generate a kernel compressed image and a root file system that can be used on the IFC6410. You can refer to How to build and flash instructions, to learn how to use the generated files.

You now need to edit <build>/conf/bblayers.conf, and make sure that the variable BBLAYERS looks like this:

  ##OEROOT##/openembedded-core/meta \
  ##OEROOT##/meta-qualcomm \

Where ##OEROOT## should the the absolute path of your build envionment.

Building a console image

To build a console image, you can run:

bitbake core-image-minimal

At the end of the build, the root file system image will be available as tmp-eglibc/deploy/images/ifc6410/core-image-minimal-ifc6410.tar.gz

The file system can be extracted on SD card, or installed in eMMC, or any other media such as USB or SATA drive. You can refer to the Linaro member build release notes for more details on how to installed on external media, see "How to install the root filesystem on external storage" on http://releases.linaro.org/14.06/ubuntu/ifc6410.

Similarly, the kernel zImage will be available at tmp-eglibc/deploy/images/ifc6410/zImage.

Building a simple X11 image

To build an X11 image with GPU hardware accelerated support, you need to add the following to the local.conf configuration file:

# to enable opengl feature
DISTRO_FEATURES_append = " opengl"
# to include mesa utils in the root fs, such as glxgears, glxinfo, ..
# to prevent X server for starting automatically at boot, this is recommended for now
VIRTUAL-RUNTIME_graphical_init_manager = ""

Then to build the image, you can run:

bitbake core-image-x11

At the end of the build, the root file system image will be available as tmp-eglibc/deploy/images/ifc6410/core-image-x11-ifc6410.tar.gz. And the kernel image will still be at tmp-eglibc/deploy/images/ifc6410/zImage.

By default, the firmware are not installed in the image. The firmware need to be separately downloaded from Inforce website. We will follow the same instructions as for the Ubuntu based Linaro member builds, so check out "Managing the proprietary firmware" on http://releases.linaro.org/14.06/ubuntu/ifc6410/ to flash the firmware on the cache partition on eMMC. Alternatively, you can download the firmware and copy them into the root FS generated by OE..

Once the firmware are either flashed or installed in the root FS, the board can be booted with the zImage. If you flashed the firmware image in eMMC partition, you need to mount the partition once you reach the root prompt:

mkdir -p /lib/firmware
mount /dev/mmcblk0p15 /lib/firmware

Then you can finally start the X server, and run any graphical application:

export DISPLAY=:0

The default X11 image does not include a window manager, you can easily add metacity in the image. This package is provided by the meta-gnome OE layer, in the meta-openembedded repository. So let's first clone this new git tree:

cd oe # e.g. the initial folder we created initially
git clone git://github.com/openembedded/meta-openembedded

Then you need to tell bitbake to use it, so edit <build>/conf/bblayers.conf, and make sure that the variable BBLAYERS now looks like this:

  ##OEROOT##/openembedded-core/meta \
  ##OEROOT##/meta-qualcomm \
  ##OEROOT##/meta-openembedded/meta-oe \
  ##OEROOT##/meta-openembedded/meta-gnome \

To install metacity in the imae, add the following to conf/local.conf file:


and rebuild the core-image-x11 image, it will now include metacity, which can be started like this:

export DISPLAY=:0

Note that this minimal image with X11 and metacity should be around 80Mb.

Building a simple Qt5 image

Boards/IFC6410/OpenEmbedded (last modified 2014-07-23 15:30:13)