Difference between revisions of "IMX8/iMX8MEVK/Yocto/Building Yocto"

From RidgeRun Developer Connection
< IMX8‎ | iMX8MEVK‎ | Yocto
Jump to: navigation, search
m
 
(21 intermediate revisions by 5 users not shown)
Line 1: Line 1:
<noinclude>{{IMX8/Head}}</noinclude>
+
<noinclude>{{IMX8/Head|previous=iMX8EVK/Yocto|next=iMX8MEVK/Yocto/Installing_an_Image|metakeywords=evk,imx8evk,evaluation kit,i.MX8M Quad Evaluation Kit,iMX8MEVK,yocto,building yocto}}</noinclude>
  
In order to create your own image, a supported Software Development Kit will be required for your desired OS.
+
__TOC__
  
=Yocto=
+
Yocto has several versions but only Morty and Rocko support iMX8 boards.
  
==Morty==
+
==Dependencies==
 +
Before running Yocto, install its dependencies with the following command.
  
To create a customized image with Yocto, first install its required packages with the following commands:
+
<syntaxhighlight lang=bash>
* repo tool
 
<pre>
 
mkdir ~/bin
 
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
 
chmod a+x ~/bin/repo
 
export PATH=~/bin:$PATH
 
</pre>
 
 
 
* Yocto dependencies
 
<pre>
 
 
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential \
 
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential \
 
chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping \
 
chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping \
Line 23: Line 14:
 
texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev \
 
texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev \
 
libglu1-mesa-dev mercurial automake groff curl lzop asciidoc u-boot-tools dos2unix mtd-utils pv \
 
libglu1-mesa-dev mercurial automake groff curl lzop asciidoc u-boot-tools dos2unix mtd-utils pv \
libncurses5 libncurses5-dev libncursesw5-dev libelf-dev zlib1g-dev
+
libncurses5 libncurses5-dev libncursesw5-dev libelf-dev zlib1g-dev gawk wget git-core diffstat unzip \
</pre>
+
texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
 +
xz-utils debianutils iputils-ping
 +
</syntaxhighlight>
  
* Download the iMx8MQ Evaluation Kit source code
+
==Setting up Repo tool==
<pre>
+
Yocto's meta-layers are configured through '''repo''' tool, install it as follows.
mkdir imx-yocto-bsp
 
cd imx-yocto-bsp
 
repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-morty -m imx-4.9.51-8mq_ga.xml
 
repo sync
 
</pre>
 
  
* Set up the build configuration
+
<syntaxhighlight lang=bash>
'''For now, only Wayland distro is supported for iMX8'''
+
mkdir ~/bin
<pre>
+
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
DISTRO=fsl-imx-wayland MACHINE=imx8mqevk source fsl-setup-release.sh -b build
+
chmod a+x ~/bin/repo
</pre>
+
export PATH=~/bin:$PATH
 
+
</syntaxhighlight>
* Start the build process
 
<pre>
 
bitbake fsl-image-multimedia-full
 
</pre>
 
 
 
Other images are supported, i.e '''core-image-minimal'''
 
 
 
For flashing the image, refer to iMX8 Installing an Image section.
 
 
 
==Rocko==
 
 
 
==Yocto project setup and build==
 
 
 
===Download and sync repos===
 
 
 
<pre style="white-space: pre-wrap;">
 
#Installed the essential required packages in the host machine
 
#See the link for more info: https://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#ref-manual-system-requirements
 
 
 
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping
 
 
 
#Set up repo tool
 
 
 
mkdir /home/jafet/work/devdirs/yocto/bin (this step may not be needed if the bin folder already exists)
 
curl https://storage.googleapis.com/git-repo-downloads/repo > /home/jafet/work/devdirs/yocto/bin/repo
 
chmod a+x /home/jafet/work/devdirs/yocto/bin/repo
 
export PATH=/home/jafet/work/devdirs/yocto/bin:$PATH
 
  
#Set up i.MX Yocto Project BSP release
+
==Getting Source Code==
 +
The Yocto's source code is downloaded according to a manifest file that controls Yocto's meta-layers.
 +
The repo tool requires a manifest file as an argument to download files, set Yocto as follows.
  
 +
<syntaxhighlight lang=bash>
 
mkdir imx-yocto-bsp
 
mkdir imx-yocto-bsp
 
cd imx-yocto-bsp
 
cd imx-yocto-bsp
repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-rocko -m imx-4.9.88-2.1.0-8mm_alpha.xml
+
BRANCH=imx-linux-morty
 +
MANIFEST=imx-4.9.51-8mq_ga.xml
 +
repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b $BRANCH -m $MANIFEST
 
repo sync
 
repo sync
 +
</syntaxhighlight>
 +
 +
 +
Set your desired yocto version using the following variables.
  
</pre>
+
{| class="wikitable"
 +
! Yocto version
 +
! Variable
 +
! Value
 +
|-
 +
| rowspan="2" | Morty
 +
| BRANCH
 +
| imx-linux-morty
 +
|-
 +
| MANIFEST
 +
| imx-4.9.51-8mq_ga.xml
 +
|-
 +
| rowspan="2" | Rocko
 +
| BRANCH
 +
| imx-linux-rocko
 +
|-
 +
| MANIFEST
 +
| imx-4.9.88-2.1.0-8mm_alpha.xml
 +
|}
  
===Configure and build ===
+
==Configuration==
 +
Set host's environment variables and create default configuration files by running fsl-setup-release script.
 +
Currently (November 2018) '''only Wayland''' distro is supported.
  
<pre style="white-space: pre-wrap;">
+
<syntaxhighlight lang=bash>
#Set up build directory (Only Wayland distros are supported for i.MX 8 or i.MX 8M for now)
+
BUILD_DIR=build
 +
DISTRO=fsl-imx-wayland MACHINE=imx8mqevk source fsl-setup-release.sh -b $BUILD_DIR
 +
</syntaxhighlight>
  
 +
In the first run, DISTRO and MACHINE variables are stored in your default configuration files.
 +
In the second (or more) run with the same BUILD_DIR, the environment variables will be loaded from your previous configuration files.
 +
In other words, running the previous instructions again with other DISTRO and MACHINE will not change your DISTRO and MACHINE from your default configuration files.
 +
If you need to change environment variables from a previous run, you '''must modify''' your default files at '''BUILD_DIR/conf'''.
  
#Option 1
+
==Building==
#Build Wayland image on i.MX8 MQuad EVK
+
Keep in mind that the building can be configured with arguments, check the following tabla for more details.
  
DISTRO=fsl-imx-wayland MACHINE=imx8mqevk source fsl-setup-release.sh -b build-wayland
+
{| class="wikitable"
bitbake fsl-image-qt5-validation-imx
+
! Option
#To build without Qt 5, use bitbake fsl-image-validation-imx
+
! Description
 +
|-
 +
| -c <task>
 +
| Execute specific tasks for the image or recipe. Some examples: fetch, compile, clean, cleansstate, package.
 +
|-
 +
| -f
 +
| Force execution.
 +
|-
 +
| -v
 +
| Verbose mode.
 +
|-
 +
| -DDD
 +
| Enable debug information.
 +
|-
 +
| -s
 +
| Show recipe version.
 +
|-
 +
| -g <recipe>
 +
| Show dependency tree for the recipe.
 +
|-
 +
| -c listtasks <image_or_recipe>
 +
| Show the tasks associated with a recipe or image.
 +
|-
 +
| -k
 +
| keep running if an error appears.
 +
|-
 +
| --help
 +
| Detailed help information.
 +
|}
  
#Option2
+
In order to build your image, run the next command:
  
DISTRO=fsl-imx-wayland MACHINE=imx8mqevk source fsl-setup-release.sh -b build-wayland
+
<syntaxhighlight lang=bash>
bitbake fsl-image-multimedia-full
+
IMAGE=core-image-minimal
</pre>
+
OPTION=-k
 +
bitbake $IMAGE $OPTION
 +
</syntaxhighlight>
  
===Flash image to SD card===
+
Other available images:
  
<pre style="white-space: pre-wrap;">
+
#fsl-image-multimedia
sudo dd if=fsl-image-qt5-validation-imx-imx8mqevk.sdcard of=/dev/sd<partition-node> bs=1M conv=fsync
+
#fsl-image-validation-imx
 +
#fsl-image-qt5-validation-imx
 +
#fsl-image-multimedia-full
  
#Example
+
The images will be stored under the directory: '''<BUILD_DIR>/tmp/deploy/images/imx8mevk'''
  
sudo dd if=fsl-image-qt5-validation-imx-imx8mqevk.sdcard of=/dev/sdd bs=1M conv=fsync
+
Please refer to [[IMX8/iMX8MEVK/Yocto/Installing_an_Image | Installing an Image]] section for more information about how to use your image.
</pre>
 
  
<noinclude>{{IMX8/Foot|<Replace with "previous" page>|<Replace with "next" page>}}</noinclude>
+
<noinclude>{{IMX8/Foot|iMX8EVK/Yocto|iMX8MEVK/Yocto/Installing_an_Image}}</noinclude>

Latest revision as of 12:06, 9 March 2023


NXP Partner Program Registered Vertical.jpg NXP Partner Program Horizontal.jpg
Previous: iMX8EVK/Yocto Index Next: iMX8MEVK/Yocto/Installing_an_Image





Yocto has several versions but only Morty and Rocko support iMX8 boards.

Dependencies

Before running Yocto, install its dependencies with the following command.

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential \
chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping \
libsdl1.2-dev xterm autoconf libtool libglib2.0-dev python-git sed cvs subversion coreutils \
texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev \
libglu1-mesa-dev mercurial automake groff curl lzop asciidoc u-boot-tools dos2unix mtd-utils pv \
libncurses5 libncurses5-dev libncursesw5-dev libelf-dev zlib1g-dev gawk wget git-core diffstat unzip \
texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping

Setting up Repo tool

Yocto's meta-layers are configured through repo tool, install it as follows.

mkdir ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH

Getting Source Code

The Yocto's source code is downloaded according to a manifest file that controls Yocto's meta-layers. The repo tool requires a manifest file as an argument to download files, set Yocto as follows.

mkdir imx-yocto-bsp
cd imx-yocto-bsp
BRANCH=imx-linux-morty
MANIFEST=imx-4.9.51-8mq_ga.xml
repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b $BRANCH -m $MANIFEST
repo sync


Set your desired yocto version using the following variables.

Yocto version Variable Value
Morty BRANCH imx-linux-morty
MANIFEST imx-4.9.51-8mq_ga.xml
Rocko BRANCH imx-linux-rocko
MANIFEST imx-4.9.88-2.1.0-8mm_alpha.xml

Configuration

Set host's environment variables and create default configuration files by running fsl-setup-release script. Currently (November 2018) only Wayland distro is supported.

BUILD_DIR=build
DISTRO=fsl-imx-wayland MACHINE=imx8mqevk source fsl-setup-release.sh -b $BUILD_DIR

In the first run, DISTRO and MACHINE variables are stored in your default configuration files. In the second (or more) run with the same BUILD_DIR, the environment variables will be loaded from your previous configuration files. In other words, running the previous instructions again with other DISTRO and MACHINE will not change your DISTRO and MACHINE from your default configuration files. If you need to change environment variables from a previous run, you must modify your default files at BUILD_DIR/conf.

Building

Keep in mind that the building can be configured with arguments, check the following tabla for more details.

Option Description
-c <task> Execute specific tasks for the image or recipe. Some examples: fetch, compile, clean, cleansstate, package.
-f Force execution.
-v Verbose mode.
-DDD Enable debug information.
-s Show recipe version.
-g <recipe> Show dependency tree for the recipe.
-c listtasks <image_or_recipe> Show the tasks associated with a recipe or image.
-k keep running if an error appears.
--help Detailed help information.

In order to build your image, run the next command:

IMAGE=core-image-minimal
OPTION=-k
bitbake $IMAGE $OPTION

Other available images:

  1. fsl-image-multimedia
  2. fsl-image-validation-imx
  3. fsl-image-qt5-validation-imx
  4. fsl-image-multimedia-full

The images will be stored under the directory: <BUILD_DIR>/tmp/deploy/images/imx8mevk

Please refer to Installing an Image section for more information about how to use your image.


Previous: iMX8EVK/Yocto Index Next: iMX8MEVK/Yocto/Installing_an_Image