Skip to content

TechNexion/tn-imx-yocto-manifest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 

Repository files navigation

TechNexion Yocto 4.2 Mickledore 6.1.y GA BSP

Note
This BSP is a TechNexion release providing support NXP i.mx series processors

Introduction

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.

 

System Requirements

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.

 

Set up build environment on host PC

Install required packages

  • 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 zstd liblz4-tool kpartx vim screen

Install the repo tool

  • 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

Download the BSP source

  • 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 mickledore_6.1.y-stable -m imx-6.1.55-2.2.0.xml
  • Start to fetch source code

    $: repo sync -j$(nproc)

Prepare WIFI/BT firmware

  • Add firmware package in Yocto/Ubuntu build, please add argument "WIFI_FIRMWARE=y" in build instruction.

  • Please refer to following explanation.

 

Configurations for setup script

MACHINE is the target of build. It usually corresponds to the name of SOM or SBC.

  • For more information, please check the file under “sources/meta-tn-imx-bsp/conf/machine”.

DISTRO is the new way to configure for any backends.

DISPLAY is the disply type. This option only works on i.mx6 (i.mx6 Solo/Dual Lite/Dual/Quad) SOMs and doesn’t work for i.mx6ul, i.mx6sx and i.mx7.

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.

Table 1. Build configurations for supported hardware
Parameter Available options Description

MACHINE

axon-imx93

Compatible with TechNexion
AXON-IMX93 (i.MX93)

edm-g-imx8mm

Compatible with TechNexion
EDM-G-IMX8MM (i.MX8M Mini)

edm-g-imx8mp

Compatible with TechNexion
EDM-G-IMX8MP (i.MX8M Plus)

pico-imx8mm

Compatible with TechNexion
PICO-IMX8MM (i.MX8M Mini)

axon-imx8mp

Compatible with TechNexion
AXON-IMX8MP (i.MX8M Plus)

tek-imx8mp

Compatible with TechNexion
TEK-IMX8MP (i.MX8M Plus)

tep-imx8mp

Compatible with TechNexion
TEP-IMX8MP (i.MX8M Plus)

imx8mp-lpddr4-evk

Compatible with TechNexion
IMX8MP-LPDDR4-EVK (i.MX8M Plus)

imx8mp-ddr4-evk

Compatible with TechNexion
IMX8MP-DDR4-EVK (i.MX8M Plus)

DISTRO
NOTE:
1. i.MX 8 should use xwayland only.
2. wayland is the default distro for all i.MX families.
3. NXP is no longer support x11 and framebuffer

fsl-imx-wayland

Wayland weston graphics

fsl-imx-xwayland

NOTE:
Wayland graphics and X11. X11 applications using EGL are not supported

imx-desktop-xwayland

NOTE: Only for Ubuntu desktop

BASEBOARD

(It specifies the 'baseboard' variable in uEnv.txt)

pi, nymph, dwarf, hobbit

Compatible with TechNexion
PICO-IMX6 (i.MX6 Solo/DL/Quad/UL/ULL)
PICO-IMX7 (i.MX7 Dual)

fairy, tc0700

Compatible with TechNexion
EDM-IMX6 (i.MX6 Solo/DL/Quad/Quad Plus)

pi-8m

Compatible with TechNexion
PICO-IMX8MQ (i.MX8M Quad)
PICO-IMX8MM (i.MX8M Mini)

wizard

Compatible with TechNexion
PICO-IMX8MQ (i.MX8M Quad)
PICO-IMX8MM (i.MX8M Mini)
EDM-G-IMX8MP (i.MX8M Plus)
EDM-G-IMX8MM (i.MX8M Mini)

wb

Compatible with TechNexion
EDM-G-IMX8MP (i.MX8M Plus)
EDM-G-IMX8MM (i.MX8M Mini)

WIFI_MODULE

(It specifies the 'wifi_module' variable in uEnv.txt)

'nxp'
'qca'
'brcm'
'ath-pci'

Choose what kind of WLAN is on board.

WIFI_FIRMWARE

'y'
'all'

'y' option depends on 'WIFI_MODULE'.
If you specify 'WIFI_MODULE' as 'qca'. Then, it only add 'qca' firmware package in yocto build.

'all' option will add 'nxp', '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:
1. Parameter "DISPLAY" only works on i.mx6/i.mx8m
2. It specifies the 'displayinfo' variable in uEnv.txt

lvds7

(i.mx6)
7 inch 1024x600 LVDS panel

lvds10

(i.mx6)
10 inch 1280x800 LVDS panel

lvds15

(i.mx6)
15 inch 1366x768 LVDS panel

hdmi720p

(i.mx6)
1280x720 HDMI

hdmi1080p

(i.mx6)
1920x1080 HDMI

lcd

(i.mx6)
5 inch/7 inch 800x480 TTL parallel LCD panel

lvds7_hdmi720p

(i.mx6)
Dual display output to both 7 inch LVDS and HDMI

custom

(i.mx6)
Reserved for custom panel

mipi5

(i.mx8m)
MIPI-DSI 5 inch panel(with ILI9881 controller)

hdmi

(i.mx8m)
HDMI monitor (the resolution is decided by EDID)

-b

<build dir>

Assign the name of build directory

 

Build OS image for TechNexion target platform

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".
Table 2. Common target image
Available options Description

imx-image-core

Yocto core image

imx-image-full

Yocto full image

imx-image-desktop

Ubuntu Gnome desktop full image
NOTE: Only support 64bit platform

For AXON-IMX93

  • Yocto Xwayland image

    $: WIFI_FIRMWARE=y DISTRO=fsl-imx-xwayland MACHINE=axon-imx93 source tn-setup-release.sh -b build-xwayland-axon-imx93
    $: bitbake imx-image-full
  • Ubuntu Gnome desktop

    $: WIFI_FIRMWARE=y DISTRO=imx-desktop-xwayland MACHINE=axon-imx93 source tn-setup-release.sh -b build-xwayland-axon-imx93
    $: bitbake imx-image-desktop

For EDM-G-IMX8MP

  • 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

For EDM-G-IMX8MM

  • 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

For PICO-IMX8MM

  • Yocto Xwayland 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

For AXON-IMX8MP

  • 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

For TEK-IMX8MP

  • Yocto Xwayland image

    $: WIFI_FIRMWARE=y DISTRO=fsl-imx-xwayland MACHINE=tek-imx8mp source tn-setup-release.sh -b build-xwayland-tek-imx8mp
    $: bitbake imx-image-full
  • Ubuntu Gnome desktop

    $: WIFI_FIRMWARE=all DISTRO=imx-desktop-xwayland MACHINE=tek-imx8mp source tn-setup-release.sh -b build-desktop-tek-imx8mp
    $: bitbake imx-image-desktop

For TEP-IMX8MP

  • Yocto Xwayland image

    $: WIFI_FIRMWARE=y DISTRO=fsl-imx-xwayland MACHINE=tep-imx8mp source tn-setup-release.sh -b build-xwayland-tep-imx8mp
    $: bitbake imx-image-full
  • Ubuntu Gnome desktop

    $: WIFI_FIRMWARE=all DISTRO=imx-desktop-xwayland MACHINE=tep-imx8mp source tn-setup-release.sh -b build-desktop-tep-imx8mp
    $: bitbake imx-image-desktop

IMX8MP LPDDR4 EVK

  • 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

IMX8MP DDR4 EVK

  • 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

 

Additional Features

Chromium Browser

  • Add Chromium package in conf/local.conf:
    For XWayland or Wayland, add Chromium into your image

    CORE_IMAGE_EXTRA_INSTALL += "chromium-ozone-wayland rng-tools"

QTWebkit

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.

Qt 6

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.

NXP eIQ machine learning

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

Systemd

  • Systemd support is enabled as default.
    But it can be disabled by commenting out the systemd settings in imx/meta-sdk/conf/distro/include/fsl-imx-preferred-env.inc.

 

Image Deployment

  • When build completes, the generated release image is under directory <build_dir>/tmp/deploy/images/[MACHINE]
    Ex. PICO-IMX8MQ

    build-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

 

Login target

Yocto

  • Default user

    • account: root

    • password:

Ubuntu

  • Default user

    • account: ubuntu

    • password: ubuntu

  • If you want to change the account or password, modify APTGET_ADD_USERS in <build_dir>/conf/local.conf.
    NOTE: The password must be generated by openssl v1.x