Note
|
This BSP is a TechNexion release providing support NXP i.mx series processors |
This article provides step-by-step instructions for building a Ubntu Gnome image with TechNexion’s Yocto BSP, which supports the i.MX series of processors.
Building an image from source with Yocto requires a host with the following:
-
OS: Ubuntu 20.04
-
CPU: 4 Core
-
RAM: 8/16GB RAM (more is better)
-
Storage: 200 GB
-
SWAP space: 16GB
-
If less memory is used, then some additional swap space may be needed. Inadequate memory may result slow builds and random build errors.
-
-
Network
-
The host must be connected to a network and have access to the Internet so that all source code and tools may be downloaded.
-
-
Update the host package list
sudo apt-get update
-
Install required packages
$: sudo apt-get install gawk wget git git-core diffstat unzip texinfo gcc-multilib build-essential \ chrpath socat cpio python python3 python3-pip python3-pexpect \ python3-git python3-jinja2 libegl1-mesa pylint3 rsync bc bison \ xz-utils debianutils iputils-ping libsdl1.2-dev xterm \ language-pack-en coreutils texi2html file docbook-utils \ python-pysqlite2 help2man desktop-file-utils \ libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake \ groff curl lzop asciidoc u-boot-tools libreoffice-writer \ sshpass ssh-askpass zip xz-utils kpartx vim screen
-
There are many respositories required. Google’s
repo
tool is used to manage this.$: mkdir ~/bin $: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $: chmod a+x ~/bin/repo $: PATH=${PATH}:~/bin
-
Create the work directory
$: mkdir edm_yocto $: cd edm_yocto
-
Initialize the repositories based on the release you wish to build:
$: repo init -u https://github.com/TechNexion/tn-imx-yocto-manifest.git -b kirkstone_5.15.y-next -m imx-5.15.52-2.1.0.xml
-
Start to fetch source code
$: repo sync -j8
-
Add firmware package in Yocto/Ubuntu build, please add argument "WIFI_FIRMWARE=y" in build instruction.
-
Please refer to following explanation.
MACHINE
|
is the target of build.
|
DISTRO
|
is the new way to configure for any backends. |
DISPLAY
|
is the disply type.
|
BASEBOARD
|
is the baseboard type. |
WIFI_MODULE
|
is to choose what kind of WLAN is on board. |
WIFI_FIRMWARE
|
is to choose to add WLAN firmware files in target rootfs or not. |
-b
|
specify the build directory. |
Parameter | Available options | Description |
---|---|---|
MACHINE |
edm-g-imx8mm |
Compatible with TechNexion |
edm-g-imx8mp |
Compatible with TechNexion |
|
pico-imx8mm |
Compatible with TechNexion |
|
pico-imx8mq |
Compatible with TechNexion |
|
axon-imx8mp |
Compatible with TechNexion |
|
tek3-imx8mp |
Compatible with TechNexion |
|
pico-imx7 |
Compatible with TechNexion |
|
tep1-imx7 |
Compatible with TechNexion |
|
pico-imx6 |
Compatible with TechNexion |
|
pico-imx6ul |
Compatible with TechNexion |
|
DISTRO |
fsl-imx-wayland |
Wayland weston graphics |
fsl-imx-xwayland |
NOTE: |
|
imx-desktop-xwayland |
NOTE: Only for Ubuntu desktop |
|
BASEBOARD (It specifies the 'baseboard' variable in uEnv.txt) |
pi, nymph, dwarf, hobbit |
Compatible with TechNexion |
fairy |
Compatible with TechNexion |
|
pi |
Compatible with TechNexion |
|
wizard |
Compatible with TechNexion |
|
wb |
Compatible with TechNexion |
|
WIFI_MODULE (It specifies the 'wifi_module' variable in uEnv.txt) |
'qca' |
Choose what kind of WLAN is on board. |
WIFI_FIRMWARE |
'y' |
'y' option depends on 'WIFI_MODULE'. 'all' option will add both 'qca', 'brcm' and 'ath-pci' firmware package in yocto build. Please refer to section "Prepare WIFI/BT firmware" to ensure you already put firmware files in the right place. |
DISPLAY NOTE: |
lvds7 |
(i.mx6) |
lvds10 |
(i.mx6) |
|
lvds15 |
(i.mx6) |
|
hdmi720p |
(i.mx6) |
|
hdmi1080p |
(i.mx6) |
|
lcd |
(i.mx6) |
|
lvds7_hdmi720p |
(i.mx6) |
|
custom |
(i.mx6) |
|
mipi5 |
(i.mx8m) |
|
hdmi |
(i.mx8m) |
|
-b |
<build dir> |
Assign the name of build directory |
Important
|
Please don’t add argument 'WIFI_FIRMWARE=y' if you don’t put firmware files in "sources/meta-tn-imx-bsp/recipes-kernel/linux-firmware/files". It would result in build failure. |
-
Please refer to section "Prepare WIFI/BT firmware".
Available options | Description |
---|---|
imx-image-full |
Yocto full image |
imx-image-desktop |
Ubuntu Gnome desktop full image |
-
Yocto Xwayland image
$: WIFI_FIRMWARE=y DISTRO=fsl-imx-xwayland MACHINE=edm-g-imx8mp source tn-setup-release.sh -b build-xwayland-edm-g-imx8mp $: bitbake imx-image-full
-
Ubuntu Gnome desktop
$: WIFI_FIRMWARE=all DISTRO=imx-desktop-xwayland MACHINE=edm-g-imx8mp source tn-setup-release.sh -b build-desktop-edm-g-imx8mp $: bitbake imx-image-desktop
-
Yocto Xwayland image
$: WIFI_FIRMWARE=y DISTRO=fsl-imx-xwayland MACHINE=edm-g-imx8mm source tn-setup-release.sh -b build-xwayland-edm-g-imx8mm $: bitbake imx-image-full
-
Ubuntu Gnome desktop
$: WIFI_FIRMWARE=all DISTRO=imx-desktop-xwayland MACHINE=edm-g-imx8mm source tn-setup-release.sh -b build-desktop-edm-g-imx8mm $: bitbake imx-image-desktop
-
Yocto wayland image
$: WIFI_FIRMWARE=y DISTRO=fsl-imx-xwayland MACHINE=pico-imx8mm source tn-setup-release.sh -b build-xwayland-pico-imx8mm $: bitbake imx-image-full
-
Ubuntu Gnome desktop
$: WIFI_FIRMWARE=y DISTRO=imx-desktop-xwayland MACHINE=pico-imx8mm source tn-setup-release.sh -b build-xwayland-pico-imx8mm $: bitbake imx-image-desktop
-
Yocto Xwayland image
$: WIFI_FIRMWARE=y DISTRO=fsl-imx-xwayland MACHINE=pico-imx8mq source tn-setup-release.sh -b build-xwayland-pico-imx8mq $: bitbake imx-image-full
-
Ubuntu Gnome desktop
$: WIFI_FIRMWARE=y DISTRO=imx-desktop-xwayland MACHINE=pico-imx8mq source tn-setup-release.sh -b build-xwayland-pico-imx8mq $: bitbake imx-image-desktop
-
Yocto Xwayland image
$: WIFI_FIRMWARE=y DISTRO=fsl-imx-xwayland MACHINE=axon-imx8mp source tn-setup-release.sh -b build-xwayland-axon-imx8mp $: bitbake imx-image-full
-
Ubuntu Gnome desktop
$: WIFI_FIRMWARE=y DISTRO=imx-desktop-xwayland MACHINE=axon-imx8mp source tn-setup-release.sh -b build-xwayland-axon-imx8mp $: bitbake imx-image-desktop
-
Yocto Xwayland image
$: DISTRO=fsl-imx-xwayland MACHINE=imx8mp-lpddr4-evk source tn-setup-release.sh -b build-imx8mp-lpddr4-evk-xwayland $: bitbake imx-image-full
-
Ubuntu Gnome desktop
$: DISTRO=imx-desktop-xwayland MACHINE=imx8mp-lpddr4-evk source tn-setup-release.sh -b build-imx8mp-lpddr4-evk-xwayland $: bitbake imx-image-desktop
-
Yocto Xwayland image
$: DISTRO=fsl-imx-xwayland MACHINE=imx8mp-ddr4-evk source tn-setup-release.sh -b build-imx8mp-ddr4-evk-xwayland $: bitbake imx-image-full
-
Ubuntu Gnome desktop
$: DISTRO=imx-desktop-xwayland MACHINE=imx8mp-ddr4-evk source tn-setup-release.sh -b build-imx8mp-ddr4-evk-xwayland $: bitbake imx-image-desktop
-
PI baseboard, Yocto wayland image for 7 inch/5 inch TTL-LCD panel
For PICO-IMX7 with QCA WLAN$: WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-wayland MACHINE=pico-imx7 BASEBOARD=pi source tn-setup-release.sh -b build-wayland-pico-imx7 $: bitbake imx-image-full
-
PI baseboard, Yocto wayland image for 7 inch/5 inch TTL-LCD panel:
For TEP1-IMX7 with ATHEROS-PCI WLAN$: WIFI_FIRMWARE=y WIFI_MODULE=ath-pci DISTRO=fsl-imx-wayland MACHINE=tep1-imx7 source tn-setup-release.sh -b build-wayland-pico-imx7 $: bitbake imx-image-full
-
FAIRY baseboard, Yocto wayland image for 7 inch LVDS panel:
For EDM-IMX6 with QCA WLAN$: DISPLAY=lvds7 WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-wayland MACHINE=edm-imx6 BASEBOARD=fairy source tn-setup-release.sh -b build-wayland-edm-imx6 $: bitbake imx-image-full
-
TC-0700/TC0710 baseboard, Yocto wayland image for 7 inch LVDS panel:
For EDM-IMX6 with QCA WLAN$: DISPLAY=lvds7 WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-wayland MACHINE=edm-imx6 BASEBOARD=tc0700 source tn-setup-release.sh -b build-wayland-edm-imx6 $: bitbake imx-image-full
-
WANDBOARD baseboard, Yocto wayland image for HDMI output:
For WANDBOARD-IMX6 with QCA WLAN$: DISPLAY=hdmi WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-wayland MACHINE=wandboard-imx6 source tn-setup-release.sh -b build-wayland-wandboard-imx6 $: bitbake imx-image-full
-
NYMPH baseboard, Yocto wayland image for HDMI output:
For PICO-IMX6 with QCA WLAN$: WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-wayland MACHINE=pico-imx6 BASEBOARD=nymph source tn-setup-release.sh -b build-wayland-pico-imx6 $: bitbake imx-image-full
-
PI baseboard, Yocto wayland image for 5" and 7" TFT-LCD output:
For PICO-IMX6UL/ULL with QCA WLAN$: WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-wayland MACHINE=pico-imx6ul BASEBOARD=pi source tn-setup-release.sh -b build-wayland-pico-imx6ul $: bitbake imx-image-full
-
TEP-1010-IMX6/TWP-1010-IMX6 HMI, Yocto wayland image:
For TEP-1010-IMX6/TWP-1010-IMX6 with PCIE WLAN$: DISPLAY=lvds10 WIFI_FIRMWARE=y WIFI_MODULE=ath-pci DISTRO=fsl-imx-wayland MACHINE=tek-imx6 source tn-setup-release.sh -b build-wayland-tek-imx6 $: bitbake imx-image-full
-
TEP-1560-IMX6/TWP-1560-IMX6 HMI, Yocto wayland image:
For TEP-1560-IMX6/TWP-1560-IMX6 with PCIE WLAN$: DISPLAY=lvds15 WIFI_FIRMWARE=y WIFI_MODULE=ath-pci DISTRO=fsl-imx-wayland MACHINE=tek-imx6 source tn-setup-release.sh -b build-wayland-tek-imx6 $: bitbake imx-image-full
-
Add Chromium package in
conf/local.conf
:
For XWayland or Wayland, add Chromium into your imageCORE_IMAGE_EXTRA_INSTALL += "chromium-ozone-wayland rng-tools"
Warning
|
QtWebengine will only work on SoC with GPU graphics hardware on i.MX 6, i.MX 7 and i.MX 8. |
-
There are four Qt 6 browsers available. QtWebEngine browsers can be found in:
/usr/share/qt6/examples/webenginewidgets/StyleSheetbrowser /usr/share/qt6/examples/webenginewidgets/Simplebrowser /usr/share/qt6/examples/webenginewidgets/Cookiebrowser /usr/share/qt6/examples/webengine/quicknanobrowser
-
To include Qtwebengine in the image put the following in local.conf or in the image recipe.
IMAGE_INSTALL_append = "packagegroup-qt6-webengine"
-
All three browsers can be run by going to the directory above and running the executable found there.
-
Touchscreen can be enabled by adding the parameters
-plugin evdevtouch:/dev/input/event0
to the executable.
Warning
|
Qt is not supported on i.MX 6UltraLite and i.MX 7Dual. It works on X11 backend only but is not a supported feature. |
-
Note that Qt has both a commercial and open source license options.
-
Make the decision about which license to use before starting work on custom Qt applications.
-
Once custom Qt applications are started with an open source Qt license the work can not be used with a commercial Qt license.
-
Work with a legal representative to understand the differences between each license.
-
The meta-ml layer is the integration of NXP eIQ machine learning, which was formerly released as a separate meta-imx-machinelearning layer and is now integrated into the standard BSP image (imx-image-full).
Note that many of the features require Qt 5. -
In case of using other configuration than imx-image-full, put the following in local.conf:
IMAGE_INSTALL_append = "packagegroup-imx-ml"
-
When build completes, the generated release image is under directory <build_dir>/tmp/deploy/images/[MACHINE]
Ex. PICO-IMX8MQbuild-desktop-pico-imx8mq/tmp/deploy/images/pico-imx8mq
-
To decompress the .bz2:
$: bzip2 -fdk imx-image-full-XXX.rootfs.wic.bz2 imx-image-full-XXX.rootfs.wic
-
To deploy the image to your board, please follow the instructions for loading software into the flash or microSD card of your development kit.
-
Use
bmaptool
to flash imx-image-full-XXX.rootfs.wic.bz2 directly.
Ex. flash image of PICO-IMX8MQ to /dev/sdj$: bmaptool copy --bmap imx-image-full-pico-imx8mq.rootfs.wic.map imx-image-full-pico-imx8mq.rootfs.wic.bz2
-
Use
bmaptool
with--nobmap
to flash imx-image-full-XXX.rootfs.wic.bz2 directly.
NOTE: This will take a long time to flash image.bmaptool copy --nobmap imx-image-full-pico-imx8mq.rootfs.wic.bz2
-
-
For i.mx6/i.mx6ul/i.mx7
Please refer to the link below to flash the image into eMMC on the target board:
https://ftp.technexion.com/development_resources/development_tools/installer/pico-imx6-imx6ul-imx7_otg-installer_xxx.zip <platform>_generic-installer_xxx.zip
-
For i.MX6UL/i.MX6ULL/i.MX6DL/i.MX6Q/i.MX7D/i.MX8MM/i.MX8MQ/i.MX8MP image deploy by "UUU"
Please refer to the link as below to get more detail informations
https://developer.technexion.com/docs/using-uuu-to-flash-emmc