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:
BBLAYERS ?= " \ ##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:
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, .. CORE_IMAGE_EXTRA_INSTALL += "mesa-demos" # 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:
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:
X& export DISPLAY=:0 glxgears
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:
BBLAYERS ?= " \ ##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:
CORE_IMAGE_EXTRA_INSTALL += "metacity"
and rebuild the core-image-x11 image, it will now include metacity, which can be started like this:
X& export DISPLAY=:0 metacity& glxgears
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)