Download and install repo utility
To get the BSP you need to have repo installed and use it as:
Install the repo utility:
mkdir -pv ~/workdir/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/workdir/bin/repo
chmod a+x ~/workdir/bin/repo
PATH=${PATH}:~/workdir/bin
Yocto Project
Yocto Project 2.1
Getting the BSP
Every OS require different set of the installed packages. More information about Yocto requirements are in the document below (Host setup).
Freescale Yocto Project User's Guide
Download
Init yocto project
Download the BSP Yocto Project Environment
mkdir -pv ~/workdir/voipac/imx6/yocto/fsl-release-bsp-2.1
cd ~/workdir/voipac/imx6/yocto/fsl-release-bsp-2.1
git config --global user.name "Your Name"
git config --global user.email "Your Email"
git config --list
repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth
Init i.MX6 rex/tinyrex layer
Add rex/tinyrex support
mkdir -pv .repo/local_manifests/
cat > .repo/local_manifests/imx6rex.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="git://github.com/Voipac" name="voipac"/>
<project remote="voipac" revision="master" name="meta-fsl-arm-voipac" path="sources/meta-fsl-arm-voipac">
<copyfile src="voipac-setup.sh" dest="voipac-setup.sh"/>
</project>
</manifest>
EOF
Sync
Sync repositories
cd ~/workdir/voipac/imx6/yocto/
ln -s fsl-release-bsp-2.1 fsl-release-bsp
cd ~/workdir/voipac/imx6/yocto/fsl-release-bsp
PATH=${PATH}:~/workdir/bin
repo sync
Add Voipac meta layer into BSP
Yocto Project 2.0
Getting the BSP
Every OS require different set of the installed packages. More information about Yocto requirements are in the document below (Host setup).
Freescale Yocto Project User's Guide
Download
Init yocto project
Download the BSP Yocto Project Environment
mkdir -pv ~/workdir/voipac/imx6/yocto/fsl-release-bsp-2.0
cd ~/workdir/voipac/imx6/yocto/fsl-release-bsp-2.0
git config --global user.name "Your Name"
git config --global user.email "Your Email"
git config --list
repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1.15-1.0.0_ga
Init i.MX6 rex/tinyrex/openrex layer
Add rex/tinyrex support
mkdir -pv .repo/local_manifests/
cat > .repo/local_manifests/imx6rex.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="git://github.com/Voipac" name="voipac"/>
<project remote="voipac" revision="refs/tags/v2.1" name="meta-fsl-arm-voipac" path="sources/meta-fsl-arm-voipac">
<copyfile src="voipac-setup.sh" dest="voipac-setup.sh"/>
</project>
</manifest>
EOF
Sync
Sync repositories
cd ~/workdir/voipac/imx6/yocto/
ln -s fsl-release-bsp-2.0 fsl-release-bsp
cd ~/workdir/voipac/imx6/yocto/fsl-release-bsp
PATH=${PATH}:~/workdir/bin
repo sync
Add Voipac meta layer into BSP
Yocto Project 1.7
Getting the BSP
Every OS require different set of the installed packages. More information about Yocto requirements are in the document below (Host setup).
Freescale Yocto Project User's Guide
Download
Init yocto project
Download the BSP Yocto Project Environment
mkdir -pv ~/workdir/voipac/imx6/yocto/fsl-release-bsp-1.7
cd ~/workdir/voipac/imx6/yocto/fsl-release-bsp-1.7
git config --global user.name "Your Name"
git config --global user.email "Your Email"
git config --list
repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.14.28-1.0.1_patch
Init i.MX6 rex/tinyrex layer
Add rex/tinyrex support
mkdir -pv .repo/local_manifests/
cat > .repo/local_manifests/imx6rex.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="git://github.com/Voipac" name="voipac"/>
<project remote="voipac" revision="v1_3_patch" name="meta-fsl-arm-voipac" path="sources/meta-fsl-arm-voipac">
<copyfile src="voipac-setup.sh" dest="voipac-setup.sh"/>
</project>
</manifest>
EOF
Sync
Sync repositories
cd ~/workdir/voipac/imx6/yocto/
ln -s fsl-release-bsp-1.7 fsl-release-bsp
cd ~/workdir/voipac/imx6/yocto/fsl-release-bsp
PATH=${PATH}:~/workdir/bin
repo sync
Add Voipac meta layer into BSP
Building images
Build process may fail.
Workaround session contains few workaround for commonly observed failures.
cd ~/workdir/imx6/yocto/fsl-release-bsp
Supported machines (Production)
imx6-openrexbasic
imx6-openrexmax
imx6-openrexmax4g
imx6-openrexultra
imx6-rexbasic
imx6-rexpro
imx6-rexultra
imx6-tinyrexlite
imx6-tinyrexbasic
imx6-tinyrexpro
imx6-tinyrexmax
imx6-tinyrexmax4g
imx6-tinyrexultra
Supported machines (Prototypes)
imx6dl-rex
imx6s-tinyrex
imx6q-tinyrex
Supported distros (Freescale)
fsl-imx-x11 - Only X11 graphics
fsl-imx-wayland - Wayland weston graphics
fsl-imx-xwayland - Wayland graphics and X11. X11 applications using EGL are not supported
fsl-imx-fb - Frame Buffer graphics - no X11 or Wayland
Console image
Setup and Build for Console image
MACHINE=<machine name> source setup-environment build-dir
MACHINE=<machine name> bitbake core-image-base
Setup and Build for Toolchain
MACHINE=<machine name> bitbake core-image-base -c populate_sdk
FSL GUI image
Setup and Build for FSL GUI image
Yocto 2.1
DISTRO=<distro name> MACHINE=<machine name> source fsl-setup-release.sh -b bld-u1604-x11
DISTRO=<distro name> MACHINE=<machine name> bitbake fsl-image-gui
Yocto 2.0/1.7
MACHINE=<machine name> source fsl-setup-release.sh -b build-x11 -e x11
MACHINE=<machine name> bitbake fsl-image-gui
Voipac image
Setup and Build for Voipac image
MACHINE=<machine name> source setup-environment build-vpac
MACHINE=<machine name> bitbake vpac-image-full-cmdline
MACHINE=<machine name> bitbake vpac-image-full-cmdline -c populate_sdk
Output files
Output images and archives are stored here
~/workdir/voipac/imx6/yocto/fsl-release-bsp/build-dir/tmp/deploy/images
~/workdir/voipac/imx6/yocto/fsl-release-bsp/build-dir/tmp/deploy/sdk
Storing images to SD card
cd ~/workdir/voipac/imx6/yocto/fsl-release-bsp/build-dir/tmp/deploy/images/<machine name>
sudo dd if=<image name>.sdcard of=/dev/sd<partition> bs=1M && sync
Or
cd ~/workdir/voipac/imx6/yocto/fsl-release-bsp/build-dir/tmp/deploy/images/<machine name>
gunzip -c core-image-base-<machine name>.sdcard.gz | sudo dd of=/dev/sd<partition> bs=1M && sync
Build customization
Configuration files are created during setup (setup-environment, fsl-setup-release.sh).
By modifying local.conf files we can easily add custom features.
Edit /workdir/voipac/imx6/yocto/fsl-release-bsp/build-x11/conf/local.conf
Yocto 2.1
#CORE_IMAGE_EXTRA_INSTALL += " chromium libexif"
CORE_IMAGE_EXTRA_INSTALL += " firefox stress"
LICENSE_FLAGS_WHITELIST = "commercial"
IMAGE_INSTALL_append = " \
video-input-demo \
multimedia-demo \
lpc-demo \
"
IMAGE_ROOTFS_EXTRA_SPACE_append += "+ 500000"
Yocto 2.0/1.7
CORE_IMAGE_EXTRA_INSTALL += " chromium"
CORE_IMAGE_EXTRA_INSTALL += " packagegroup-fslc-gstreamer1.0-full"
LICENSE_FLAGS_WHITELIST = "commercial"
IMAGE_INSTALL_append = " \
video-input-demo \
multimedia-demo \
"
Workarounds
Yocto Project 2.1
Ubuntu 16.04
- Preferred bootloader and kernel are overwritten during compilation fsl-image recipe
fsl-image overwrite bootloader/kernel provided by meta-fsp-voipac.To remove this limitation replace '=' with '?='
Original version
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_u-boot_mx6 = "u-boot-imx"
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_virtual/bootloader_mx6 = "u-boot-imx"
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_virtual/kernel_mx6 = "linux-imx"
Modified version
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_u-boot_mx6 ?= "u-boot-imx"
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_virtual/bootloader_mx6 ?= "u-boot-imx"
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_virtual/kernel_mx6 ?= "linux-imx"
- Web browser recipes are disabled (Comment out to enable)
meta-browser/recipes-browser/chromium/chromium_48.0.2548.0.bb:#PNBLACKLIST[chromium] ?= "BROKEN: fails to build with gcc-6"
meta-browser/recipes-browser/chromium/cef3_280796.bb:#PNBLACKLIST[cef3] ?= "BROKEN: fails to build with gcc-6"
meta-browser/recipes-mozilla/firefox/firefox_38.8.0esr.bb:#PNBLACKLIST[firefox] ?= "BROKEN: fails to build with gcc-6"
Yocto Project 2.0
Ubuntu 16.04
- Qemu-native linking failure
Add BUILD_LDFLAGS_prepend_pn-qemu-native directive into build-dir/conf/local.conf
BUILD_LDFLAGS_prepend_pn-qemu-native = "-Wl,-rpath-link,/lib/x86_64-linux-gnu "
- Preferred bootloader and kernel are overwritten during compilation fsl-image recipe
fsl-image overwrite bootloader/kernel provided by meta-fsp-voipac.To remove this limitation replace '=' with '?='
Original version
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_u-boot_mx6 = "u-boot-imx"
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_virtual/bootloader_mx6 = "u-boot-imx"
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_virtual/kernel_mx6 = "linux-imx"
Modified version
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_u-boot_mx6 ?= "u-boot-imx"
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_virtual/bootloader_mx6 ?= "u-boot-imx"
meta-fsl-bsp-release/imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc:PREFERRED_PROVIDER_virtual/kernel_mx6 ?= "linux-imx"
Yocto Project 1.7
Ubuntu 16.04
- GCC compilator downgrade
Ubuntu uses gcc-5 by default but some yocto (branch imx-3.14.28-1.0.1_patch) packages aren't compatible with this compiler so we need to switch to older one.
sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5
sudo update-alternatives --config gcc
- Qemu-native compilation failure
Ubuntu uses newer version of the SDL libraries which are not compatible with yocto (branch imx-3.14.28-1.0.1_patch).
This commands needs to be run after every "source *" command to commend out SDL support.
sed -i 's/^PACKAGECONFIG_append_pn-qemu-native/#PACKAGECONFIG_append_pn-qemu-native/' conf/local.conf
sed -i 's/^PACKAGECONFIG_append_pn-nativesdk-qemu/#PACKAGECONFIG_append_pn-nativesdk-qemu/' conf/local.conf