Difference between revisions of "iMX6 TinyRex Yocto"

From Voipac Wiki
Jump to navigation Jump to search
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:iMX6 TinyRex Development kit]]
+
[[Category:iMX6 TinyRex Development Kit]]
[[Category:iMX6 TinyRex Ultra]]
 
 
[[Category:Yocto]]
 
[[Category:Yocto]]
 
<!-- -->
 
<!-- -->
 
<div style="float:right">__TOC__</div>
 
<div style="float:right">__TOC__</div>
 +
This Wiki section guides through preparation and compiling images using Yocto Project.
 +
== Download and install repo utility ==
 +
'''''Note: ''''' As Freescale disabled its primary git servers, the official repositories were moved. The files for building can be accessed by following [https://community.nxp.com/t5/i-MX-Processors/git-freescale-com-not-working-Any-new-link/m-p/998841 this workaround].<br /><br />
  
== Download and install repo utility ==
+
To download the board support package, repositories need to be installed. To prepare them follow these steps:
To get the BSP you need to have repo installed. To install it follow these steps:
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
mkdir -pv ~/workdir/bin
 
mkdir -pv ~/workdir/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo  > ~/workdir/bin/repo
+
# curl http://commondatastorage.googleapis.com/git-repo-downloads/repo  > ~/workdir/bin/repo
 
chmod a+x ~/workdir/bin/repo
 
chmod a+x ~/workdir/bin/repo
 
PATH=${PATH}:~/workdir/bin
 
PATH=${PATH}:~/workdir/bin
Line 15: Line 16:
  
 
== Yocto Project 2.1 ==
 
== Yocto Project 2.1 ==
Every OS require different set of the installed packages. More information about Yocto requirements are in [http://downloads.voipac.com/index.php?p=iMX6_TinyRex_Development_kit/module/software/yocto/documents&dl=i.MX_Yocto_Project-Users_Guide_21.pdf Freescale Yocto Project User's Guide].
+
Every OS requires different set of installed packages. More information about Yocto requirements could be acquired in [http://downloads.voipac.com/files/iMX6_TinyRex_Development_Kit/module/software/yocto/documents/i.MX_Yocto_Project-Users_Guide_21.pdf Freescale Yocto Project User's Guide].
  
=== Initialise Yocto project ===
+
=== Initialize Yocto Project ===
 
Download the BSP Yocto Project Environment:
 
Download the BSP Yocto Project Environment:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 28: Line 29:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== Init iMX6 Tinyrex layer ===
+
=== Init iMX6 TinyRex layer ===
 
Add iMX6 TinyRex support:
 
Add iMX6 TinyRex support:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 46: Line 47:
  
 
=== Sync ===
 
=== Sync ===
Sync repositories
+
Synchronize repositories:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
cd ~/workdir/voipac/imx6/yocto/
 
cd ~/workdir/voipac/imx6/yocto/
Line 56: Line 57:
  
 
=== Configure ===
 
=== Configure ===
Add Voipac meta layer into BSP
+
Add Voipac meta layer into BSP:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
source voipac-setup.sh
 
source voipac-setup.sh
Line 89: Line 90:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== Build customisation ===
+
=== Build customization ===
Configuration files are created during setup (setup-environment, fsl-setup-release.sh).<br />
+
Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found:
By modifying '''local.conf''' files we can easily add custom features. The file can he found
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
/workdir/voipac/imx6/yocto/fsl-release-bsp/build-x11/conf/local.conf
 
/workdir/voipac/imx6/yocto/fsl-release-bsp/build-x11/conf/local.conf
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
By modifying '''local.conf''' file, custom features can be easily added:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
#CORE_IMAGE_EXTRA_INSTALL += " chromium libexif"
 
#CORE_IMAGE_EXTRA_INSTALL += " chromium libexif"
Line 109: Line 110:
 
IMAGE_ROOTFS_EXTRA_SPACE_append += "+ 500000"  
 
IMAGE_ROOTFS_EXTRA_SPACE_append += "+ 500000"  
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
<br />
 +
Working environment setup has been finished and is ready for [[#Building images|building images]].
 +
 +
== Yocto Project 2.0 ==
 +
 +
=== Getting the BSP ===
 +
Every OS requires different set of installed packages. More information about Yocto requirements could be acquired in [http://downloads.voipac.com/files/iMX6_TinyRex_Development_Kit/module/software/yocto/documents/Freescale_Yocto_Project-Users_Guide_20.pdf Freescale Yocto Project User's Guide].
 +
 +
=== Initialize Yocto Project ===
 +
Download the BSP Yocto Project Environment:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
 +
=== Init iMX6 TinyRex layer ===
 +
Add iMX6 TinyRex support:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
 +
=== Sync ===
 +
Synchronize repositories:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
 +
=== Configure ===
 +
Add Voipac meta layer into BSP:
 +
<syntaxhighlight lang="bash">
 +
source voipac-setup.sh
 +
</syntaxhighlight>
 +
 +
=== Build workarounds ===
 +
Building process could get halted. This session contains few workarounds for commonly observed failures. These commands fix compiling on Ubuntu 16.04 operating system.<br /><br />
 +
 +
'''''Issue:''''' Qemu-native linking failure<br />
 +
'''''Fix:''''' Add BUILD_LDFLAGS_prepend_pn-qemu-native directive into build-dir/conf/local.conf
 +
<syntaxhighlight lang="bash">
 +
BUILD_LDFLAGS_prepend_pn-qemu-native = "-Wl,-rpath-link,/lib/x86_64-linux-gnu "
 +
</syntaxhighlight>
 +
<br />
 +
'''''Issue:''''' Preferred bootloader and kernel are overwritten during compilation fsl-image recipe<br />
 +
'''''Cause and fix:''''' fsl-image overwrite bootloader/kernel provided by meta-fsp-voipac. To remove this limitation replace '=' with '?='<br />
 +
 +
Original version:
 +
<syntaxhighlight lang="bash">
 +
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"
 +
</syntaxhighlight>
 +
 +
Modified version:
 +
<syntaxhighlight lang="bash">
 +
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"
 +
</syntaxhighlight>
 +
 +
=== Build customization ===
 +
Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found:
 +
<syntaxhighlight lang="bash">
 +
/workdir/voipac/imx6/yocto/fsl-release-bsp/build-x11/conf/local.conf
 +
</syntaxhighlight>
 +
 +
By modifying '''local.conf''' file, custom features can be easily added:
 +
<syntaxhighlight lang="bash">
 +
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 \
 +
"
 +
</syntaxhighlight>
 +
<br />
 +
Working environment setup has been finished and is ready for [[#Building images|building images]].
 +
 +
== Yocto Project 1.7 ==
 +
Every OS requires different set of installed packages. More information about Yocto requirements could be acquired in [http://downloads.voipac.com/files/iMX6_TinyRex_Development_Kit/module/software/yocto/documents/Freescale_Yocto_Project-Users_Guide_17.pdf Freescale Yocto Project User's Guide].
 +
 +
=== Initialize Yocto Project ===
 +
Download the BSP Yocto Project Environment:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
 +
=== Init iMX6 TinyRex layer ===
 +
Add iMX6 TinyRex support:
 +
<syntaxhighlight lang="bash">
 +
mkdir -pv .repo/local_manifests/
 +
cat > .repo/local_manifests/imx6rex.xml << EOF
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<manifest>
  
[[#Building images|bb]]
+
  <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
 +
</syntaxhighlight>
  
 +
=== Sync ===
 +
Synchronize repositories:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
 +
=== Configure ===
 +
Add Voipac meta layer into BSP:
 +
<syntaxhighlight lang="bash">
 +
source voipac-setup.sh
 +
</syntaxhighlight>
 +
 +
=== Build workarounds ===
 +
Building process could get halted. This session contains few workarounds for commonly observed failures. These commands fix compiling on Ubuntu 16.04 operating system.<br /><br />
 +
 +
'''''Issue:''''' GCC compilator downgrade<br />
 +
'''''Cause and fix:''''' Ubuntu uses GCC-5 by default but some Yocto (branch imx-3.14.28-1.0.1_patch) packages are not compatible with this compiler. To keep the functionality,  switching to older version is required:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
<br />
 +
'''''Issue:''''' Qemu-native compilation failure<br />
 +
'''''Cause and fix:''''' 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:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
 +
=== Build customization ===
 +
Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found:
 +
<syntaxhighlight lang="bash">
 +
/workdir/voipac/imx6/yocto/fsl-release-bsp/build-x11/conf/local.conf
 +
</syntaxhighlight>
 +
 +
By modifying '''local.conf''' file, custom features can be easily added:
 +
<syntaxhighlight lang="bash">
 +
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 \
 +
"
 +
</syntaxhighlight>
 +
<br />
 +
Working environment setup has been finished and is ready for [[#Building images|building images]].
  
 
== Building images ==
 
== Building images ==
 +
Locate the Yocto working directory:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
cd ~/workdir/imx6/yocto/fsl-release-bsp
 
cd ~/workdir/imx6/yocto/fsl-release-bsp
Line 135: Line 318:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Supported machines (Prototypes)
+
Supported machines (Prototypes):
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
imx6dl-rex
 
imx6dl-rex
Line 142: Line 325:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Supported distros (Freescale)
+
Supported distros (Freescale):
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
fsl-imx-x11 - Only X11 graphics
 
fsl-imx-x11 - Only X11 graphics
Line 151: Line 334:
  
 
=== Console image ===
 
=== Console image ===
Setup and Build for Console image
+
Setup and build for Console image:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
MACHINE=<machine name> source setup-environment build-dir
 
MACHINE=<machine name> source setup-environment build-dir
Line 158: Line 341:
  
 
=== Toolchain ===
 
=== Toolchain ===
Setup and Build for Toolchain
+
Setup and build for Toolchain:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
MACHINE=<machine name> bitbake core-image-base -c populate_sdk
 
MACHINE=<machine name> bitbake core-image-base -c populate_sdk
Line 164: Line 347:
  
 
=== FSL GUI image ===
 
=== FSL GUI image ===
Setup and Build for FSL GUI image
+
Setup and build for FSL GUI image:
 
==== Yocto 2.1 ====
 
==== Yocto 2.1 ====
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 178: Line 361:
  
 
=== Voipac image ===
 
=== Voipac image ===
Setup and Build for Voipac image
+
Setup and build for Voipac image:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
MACHINE=<machine name> source setup-environment build-vpac
 
MACHINE=<machine name> source setup-environment build-vpac
Line 186: Line 369:
  
 
=== Output files ===
 
=== Output files ===
Output images and archives are stored here
+
Output images and archives are stored in these locations:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
~/workdir/voipac/imx6/yocto/fsl-release-bsp/build-dir/tmp/deploy/images
 
~/workdir/voipac/imx6/yocto/fsl-release-bsp/build-dir/tmp/deploy/images
Line 201: Line 384:
 
cd ~/workdir/voipac/imx6/yocto/fsl-release-bsp/build-dir/tmp/deploy/images/<machine name>
 
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
 
gunzip -c core-image-base-<machine name>.sdcard.gz | sudo dd of=/dev/sd<partition> bs=1M && sync
</syntaxhighlight>
 
 
 
<syntaxhighlight lang="bash">
 
</syntaxhighlight>
 
<syntaxhighlight lang="bash">
 
</syntaxhighlight>
 
<syntaxhighlight lang="bash">
 
 
</syntaxhighlight>
 
</syntaxhighlight>

Latest revision as of 09:00, 24 April 2022

This Wiki section guides through preparation and compiling images using Yocto Project.

Download and install repo utility

Note: As Freescale disabled its primary git servers, the official repositories were moved. The files for building can be accessed by following this workaround.

To download the board support package, repositories need to be installed. To prepare them follow these steps:

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 2.1

Every OS requires different set of installed packages. More information about Yocto requirements could be acquired in Freescale Yocto Project User's Guide.

Initialize 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 iMX6 TinyRex layer

Add iMX6 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

Synchronize 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

Configure

Add Voipac meta layer into BSP:

source voipac-setup.sh

Build workarounds

Building process could get halted. This session contains few workarounds for commonly observed failures. These commands fix compiling on Ubuntu 16.04 operating system.

Issue: Preferred bootloader and kernel are overwritten during compilation fsl-image recipe
Cause and fix: 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"


Issue: Web browser recipes are disabled
Fix: 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"

Build customization

Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found:

/workdir/voipac/imx6/yocto/fsl-release-bsp/build-x11/conf/local.conf

By modifying local.conf file, custom features can be easily added:

#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"


Working environment setup has been finished and is ready for building images.

Yocto Project 2.0

Getting the BSP

Every OS requires different set of installed packages. More information about Yocto requirements could be acquired in Freescale Yocto Project User's Guide.

Initialize 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 iMX6 TinyRex layer

Add iMX6 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

Synchronize 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

Configure

Add Voipac meta layer into BSP:

source voipac-setup.sh

Build workarounds

Building process could get halted. This session contains few workarounds for commonly observed failures. These commands fix compiling on Ubuntu 16.04 operating system.

Issue: Qemu-native linking failure
Fix: 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 "


Issue: Preferred bootloader and kernel are overwritten during compilation fsl-image recipe
Cause and fix: 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"

Build customization

Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found:

/workdir/voipac/imx6/yocto/fsl-release-bsp/build-x11/conf/local.conf

By modifying local.conf file, custom features can be easily added:

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 \
"


Working environment setup has been finished and is ready for building images.

Yocto Project 1.7

Every OS requires different set of installed packages. More information about Yocto requirements could be acquired in Freescale Yocto Project User's Guide.

Initialize 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 iMX6 TinyRex layer

Add iMX6 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

Synchronize 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

Configure

Add Voipac meta layer into BSP:

source voipac-setup.sh

Build workarounds

Building process could get halted. This session contains few workarounds for commonly observed failures. These commands fix compiling on Ubuntu 16.04 operating system.

Issue: GCC compilator downgrade
Cause and fix: Ubuntu uses GCC-5 by default but some Yocto (branch imx-3.14.28-1.0.1_patch) packages are not compatible with this compiler. To keep the functionality, switching to older version is required:

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


Issue: Qemu-native compilation failure
Cause and fix: 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

Build customization

Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found:

/workdir/voipac/imx6/yocto/fsl-release-bsp/build-x11/conf/local.conf

By modifying local.conf file, custom features can be easily added:

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 \
"


Working environment setup has been finished and is ready for building images.

Building images

Locate the Yocto working directory:

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

Toolchain

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 in these locations:

~/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