Difference between revisions of "iMX6 TinyRex Yocto"
(11 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | [[Category:iMX6 TinyRex Development | + | [[Category:iMX6 TinyRex Development Kit]] |
[[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 == | == 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- | + | '''''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 /> |
To download the board support package, repositories need to be installed. To prepare them follow these steps: | To download the board support package, repositories need to be installed. To prepare them 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 16: | Line 16: | ||
== Yocto Project 2.1 == | == Yocto Project 2.1 == | ||
− | Every OS requires different set of installed packages. More information about Yocto requirements could be acquired in [http://downloads.voipac.com/files/ | + | 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]. |
− | === | + | === Initialize Yocto Project === |
Download the BSP Yocto Project Environment: | Download the BSP Yocto Project Environment: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 47: | Line 47: | ||
=== Sync === | === Sync === | ||
− | + | Synchronize repositories: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cd ~/workdir/voipac/imx6/yocto/ | cd ~/workdir/voipac/imx6/yocto/ | ||
Line 90: | Line 90: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | === Build | + | === Build customization === |
Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found: | Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 116: | Line 116: | ||
=== Getting the BSP === | === 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/ | + | 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: | Download the BSP Yocto Project Environment: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 147: | Line 147: | ||
=== Sync === | === Sync === | ||
− | + | Synchronize repositories: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cd ~/workdir/voipac/imx6/yocto/ | cd ~/workdir/voipac/imx6/yocto/ | ||
Line 188: | Line 188: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | === Build | + | === Build customization === |
Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found: | Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 209: | Line 209: | ||
== Yocto Project 1.7 == | == 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/ | + | 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: | Download the BSP Yocto Project Environment: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 240: | Line 240: | ||
=== Sync === | === Sync === | ||
− | + | Synchronize repositories: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cd ~/workdir/voipac/imx6/yocto/ | cd ~/workdir/voipac/imx6/yocto/ | ||
Line 275: | Line 275: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | === Build | + | === Build customization === |
Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found: | Configuration files are created during setup (setup-environment, fsl-setup-release.sh). The file to update can be found: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 296: | Line 296: | ||
== 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 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Supported machines (Production) | + | Supported machines (Production): |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
imx6-openrexbasic | imx6-openrexbasic | ||
Line 317: | Line 318: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Supported machines (Prototypes) | + | Supported machines (Prototypes): |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
imx6dl-rex | imx6dl-rex | ||
Line 324: | 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 333: | Line 334: | ||
=== Console image === | === Console image === | ||
− | Setup and | + | 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 340: | Line 341: | ||
=== Toolchain === | === Toolchain === | ||
− | Setup and | + | 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 346: | Line 347: | ||
=== FSL GUI image === | === FSL GUI image === | ||
− | Setup and | + | Setup and build for FSL GUI image: |
==== Yocto 2.1 ==== | ==== Yocto 2.1 ==== | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 360: | Line 361: | ||
=== Voipac image === | === Voipac image === | ||
− | Setup and | + | 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 368: | Line 369: | ||
=== Output files === | === Output files === | ||
− | Output images and archives are stored | + | 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 |
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