= TechNexion Yocto 2.4 rocko 4.9.y GA BSP
This BSP is a TechNexion release providing support NXP i.mx series processors
[source,console] $: mkdir ~/bin $: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $: chmod a+x ~/bin/repo
Download the BSP source:
For NXP i.mx8mq SOC, e.g.,PICO-IMX8M: [source,console] $: PATH=${PATH}:~/bin $: mkdir edm_yocto $: cd edm_yocto $: repo init -u https://github.com/TechNexion/edm-yocto-bsp.git -b rocko_4.9.y_GA -m imx-4.9.88-2.0.0_ga.xml $: repo sync -j8
== Create build environment === Method 1: Set up build environment on host PC:
Our build environment is under ubuntu 16.04.
Install required packages:
[source,console]
$: 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 \
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
=== Method 2: Download virtual machine with pre-installed Ubuntu 16.04 and packages.
ftp://ftp.technexion.net/development_resources/development_tools/vm
This virtual machine is validated to build Yocto 2.4.
=== Method 3: Use the dockerfile to setup the build environment:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04[Install docker on ubuntu 16.04]
After fetch yocto source code, create a docker image from a dockerfile. [source,console] $: cd sources/meta-edm-bsp-release/tools/container $: docker build -t tn_ubuntu1604 . $: docker run -it -u jenkins -v ${directory_in_host_machine}:${directory_in_docker} tn_ubuntu1604 /bin/bash (-v: use to bind volume to the directory in host machine) (password: jenkins)
== Prepare WIFI/BT firmware There are two kinds of WLAN module on TechNexion boards. One is Broadcom(BRCM) WLAN(includes BCM4330/BCM4339(AP6335)/BCM43438(AP6212)), the other is Qualcomm(QCA) WLAN(includes QCA9377-5/QCA6174). Because of the license restriction, please contact TechNexion FAE or Sales to get licensed firmware files.
For QCA WLAN and BT: qca9377-3_qca6174-3_firmware_20191128.zip
After getting the firmware binary:
.. Decompress the tarball and put all the firmware files into sources/meta-edm-bsp-release/recipes-kernel/linux-firmware/files
.
The directory sources/meta-edm-bsp-release/recipes-kernel/linux-firmware/files
is the place to put WIFI/BT firmware files.
.. Add firmware package in Yocto build: 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-edm-bsp-release/conf/machine”
.
“-b”
specify the build directory.
“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. (qca/brcm/ath-pci)
“WIFI_FIRMWARE”
is to choose to add WLAN firmware files in target rootfs or not. (y/all)
.Build configurations for supported hardware |=== |Parameter |Available options|Description
|MACHINE |pico-imx8m |Compatible with TechNexion PICO-IMX8M (i.MX8M Quad)
| |pico-imx6 |Compatible with TechNexion PICO-IMX6 (i.MX6 Solo/DL/Dual/Quad)
| |pico-imx7 |Compatible with TechNexion PICO-IMX7
| |pico-imx6ul |Compatible with TechNexion PICO-IMX6UL/ULL
| |edm-imx6 |Compatible with TechNexion EDM-IMX6 (i.MX6 Solo/DL/Dual/Quad/Quad Plus)
| |edm-imx7 |Compatible with TechNexion EDM-IMX7
| |tep1-imx7 |Compatible with TechNexion TEP-0500-IMX7/TEP-0700-IMX7
| |tep1-imx6ul |Compatible with TechNexion TEP-0500-IMX6UL/TEP-0700-IMX6UL
| |tek-imx6 |Compatible with TechNexion TEK3-IMX6/TEP-1010-IMX6/TEP-1560-IMX6/TWP-1010-IMX6/TWP-1560-IMX6 (i.MX6 Solo/DL/Dual/Quad/Quad Plus)
| |tek3-imx6ul |Compatible with TechNexion TEK3-IMX6UL
|DISTRO |fsl-imx-x11 |Only X11 graphics. X11 graphics are not supported on i.MX8.
| |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. Frame Buffer is not supported on i.MX8.
|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).
| |gnome, fairy, tc0700, tc1000 |Compatible with TechNexion EDM-IMX6 (i.MX6 Solo/DL/Dual/Quad/Quad Plus). (EDM-IMX7D only support gnome)
|WIFI_MODULE
(It specifies the 'wifi_module' variable in uEnv.txt) |'qca', 'brcm', 'ath-pci' |Choose what kind of WLAN is on board.
|WIFI_FIRMWARE |'y' or '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 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
(Parameter "DISPLAY" only works on i.mx6/i.mx8m) (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
|
.Choosing Yocto target image |=== |Image name |Target
|core-image-minimal |A small image that only allows a device to boot
|core-image-base |A console-only image that fully supports the target device hardware
|core-image-sato |An image with Sato, a mobile environment and visual style for mobile devices. The image supports X11 with a Sato theme, Pimlico applications. It contains a terminal, an editor and a file manager
|fsl-image-machine-test |An FSL Community i.MX core image with console environment - no GUI interface
|fsl-image-validation-imx |Builds an i.MX image with a GUI without any Qt content.
|fsl-image-qt5-validation-imx |Builds an opensource Qt 5 image. These images are only supported for i.MX SoC with hardware graphics. They are not supported on the i.MX 6UltraLite, i.MX 6UltraLiteLite, and i.MX 7Dual. |===
== Build Yocto for TechNexion target platform Please don't add argument 'WIFI_FIRMWARE=y' if you don't put firmware files in "sources/meta-edm-bsp-release/recipes-kernel/linux-firmware/files" . It would result in build failure. Please refer to section "Prepare WIFI/BT firmware".
=== For PICO-IMX8M Wayland image for HDMI monitor: [source,console] $: DISPLAY=hdmi WIFI_FIRMWARE=y DISTRO=fsl-imx-wayland MACHINE=pico-imx8m source edm-setup-release.sh -b build-wayland $: bitbake fsl-image-qt5-validation-imx
Wayland image for MIPI-DSI 5-inch panel: [source,console] $: DISPLAY=mipi5 WIFI_FIRMWARE=y DISTRO=fsl-imx-wayland MACHINE=pico-imx8m source edm-setup-release.sh -b build-wayland $: bitbake fsl-image-qt5-validation-imx
DISTRO: DISTRO can be replaced to "fsl-imx-xwayland"
=== For PICO-IMX6 PI baseboard, QT5 with X11 image for HDMI output: [source,console] For PICO-IMX6 with QCA WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=pico-imx6 BASEBOARD=pi source edm-setup-release.sh -b build-x11-pico-imx6 For PICO-IMX6 with BRCM WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-x11 MACHINE=pico-imx6 BASEBOARD=pi source edm-setup-release.sh -b build-x11-pico-imx6 $: bitbake fsl-image-qt5-validation-imx
NYMPH baseboard, QT5 with X11 image for 7 inch LVDS panel: [source,console] For PICO-IMX6 with QCA WLAN: $: DISPLAY=lvds7 WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=pico-imx6 BASEBOARD=nymph source edm-setup-release.sh -b build-x11-pico-imx6 For PICO-IMX6 with BRCM WLAN: $: DISPLAY=lvds7 WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-x11 MACHINE=pico-imx6 BASEBOARD=nymph source edm-setup-release.sh -b build-x11-pico-imx6 $: bitbake fsl-image-qt5-validation-imx
=== For PICO-IMX7 PI baseboard, QT5 with X11 image for 7 inch/5 inch TTL-LCD panel: [source,console] For PICO-IMX7 with QCA WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=pico-imx7 BASEBOARD=pi source edm-setup-release.sh -b build-x11-pico-imx7 For PICO-IMX7 with BRCM WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-x11 MACHINE=pico-imx7 BASEBOARD=pi source edm-setup-release.sh -b build-x11-pico-imx7 $: bitbake fsl-image-qt5-validation-imx
=== For PICO-IMX6UL/ULL PI baseboard, QT5 with X11 image for HDMI output: [source,console] For PICO-IMX6UL/ULL with QCA WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=pico-imx6ul BASEBOARD=pi source edm-setup-release.sh -b build-x11-pico-imx6ul For PICO-IMX6UL/ULL with BRCM WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-x11 MACHINE=pico-imx6ul BASEBOARD=pi source edm-setup-release.sh -b build-x11-pico-imx6ul $: bitbake fsl-image-qt5-validation-imx
NYMPH baseboard, QT5 with X11 image for 7 inch LVDS panel: [source,console] For PICO-IMX6UL/ULL with QCA WLAN: $: DISPLAY=lvds7 WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=pico-imx6ul BASEBOARD=nymph source edm-setup-release.sh -b build-x11-pico-imx6ul For PICO-IMX6UL/ULL with BRCM WLAN: $: DISPLAY=lvds7 WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-x11 MACHINE=pico-imx6ul BASEBOARD=nymph source edm-setup-release.sh -b build-x11-pico-imx6ul $: bitbake fsl-image-qt5-validation-imx
=== For EDM-IMX6 GNOME baseboard, QT5 with X11 image for 7 inch/5 inch TTL-LCD panel: [source,console] For EDM-IMX6 with QCA WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=edm-imx6 BASEBOARD=gnome source edm-setup-release.sh -b build-x11-edm-imx6 For EDM-IMX6 with BRCM WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-x11 MACHINE=edm-imx6 BASEBOARD=gnome source edm-setup-release.sh -b build-x11-edm-imx6 $: bitbake fsl-image-qt5-validation-imx
FAIRY baseboard, QT5 with X11 image for 7 inch LVDS panel: [source,console] For EDM-IMX6 with QCA WLAN: $: DISPLAY=lvds7 WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=edm-imx6 BASEBOARD=fairy source edm-setup-release.sh -b build-x11-edm-imx6 For EDM-IMX6 with BRCM WLAN: $: DISPLAY=lvds7 WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-x11 MACHINE=edm-imx6 BASEBOARD=fairy source edm-setup-release.sh -b build-x11-edm-imx6 $: bitbake fsl-image-qt5-validation-imx
TC0700 baseboard, QT5 with X11 image for 7 inch LVDS panel: [source,console] For EDM-IMX6 with QCA WLAN: $: DISPLAY=lvds7 WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=edm-imx6 BASEBOARD=tc0700 source edm-setup-release.sh -b build-x11-edm-imx6 For EDM-IMX6 with BRCM WLAN: $: DISPLAY=lvds7 WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-x11 MACHINE=edm-imx6 BASEBOARD=tc0700 source edm-setup-release.sh -b build-x11-edm-imx6 $: bitbake fsl-image-qt5-validation-imx
TC1000 baseboard, QT5 with X11 image for 10 inch LVDS panel: [source,console] For EDM-IMX6 with QCA WLAN: $: DISPLAY=lvds10 WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=edm-imx6 BASEBOARD=tc1000 source edm-setup-release.sh -b build-x11-edm-imx6 For EDM-IMX6 with BRCM WLAN: $: DISPLAY=lvds10 WIFI_FIRMWARE=y WIFI_MODULE=brcm DISTRO=fsl-imx-x11 MACHINE=edm-imx6 BASEBOARD=tc1000 source edm-setup-release.sh -b build-x11-edm-imx6 $: bitbake fsl-image-qt5-validation-imx
=== For EDM-IMX7 GNOME baseboard, QT5 with X11 image for 7 inch/5 inch TTL-LCD panel: [source,console] For EDM-IMX7 with QCA WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=edm-imx7 BASEBOARD=gnome source edm-setup-release.sh -b build-x11-edm-imx7 $: bitbake fsl-image-qt5-validation-imx
=== For TEP-0500-IMX7/TEP-0700-IMX7 TEP-0500-IMX7/TEP-0700-IMX7, QT5 with X11 image: [source,console] For TEP1-IMX7 with PCIE WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=ath-pci DISTRO=fsl-imx-x11 MACHINE=tep1-imx7 source edm-setup-release.sh -b build-x11-tep1-imx7 $: bitbake fsl-image-qt5-validation-imx
=== For TEP-0500-IMX6UL/TEP-0700-IMX6UL TEP-0500-IMX6UL/TEP-0700-IMX6UL, QT5 with X11 image: [source,console] $: DISTRO=fsl-imx-x11 MACHINE=tep1-imx6ul source edm-setup-release.sh -b build-x11-tep1-imx6ul $: bitbake fsl-image-qt5-validation-imx
=== For TEK3-IMX6 TEK3-IMX6 BOX PC, QT5 with X11 image for HDMI output: [source,console] For TEK3-IMX6 with PCIE WLAN: $: WIFI_FIRMWARE=y WIFI_MODULE=ath-pci DISTRO=fsl-imx-x11 MACHINE=tek-imx6 source edm-setup-release.sh -b build-x11-tek-imx6 $: bitbake fsl-image-qt5-validation-imx
=== For TEP-1010-IMX6/TEP-1560-IMX6/TWP-1010-IMX6/TWP-1560-IMX6 TEP-1010-IMX6/TWP-1010-IMX6, QT5 with X11 image: [source,console] For TEP-1010-IMX6/TWP-1010-IMX6 with PCIE WLAN: $: DISPLAY=lvds10 WIFI_FIRMWARE=y WIFI_MODULE=ath-pci DISTRO=fsl-imx-x11 MACHINE=tek-imx6 source edm-setup-release.sh -b build-x11-tek-imx6 $: bitbake fsl-image-qt5-validation-imx
TEP-1560-IMX6/TWP-1560-IMX6, QT5 with X11 image: [source,console] For TEP-1560-IMX6/TWP-1560-IMX6 with PCIE WLAN: $: DISPLAY=lvds15 WIFI_FIRMWARE=y WIFI_MODULE=ath-pci DISTRO=fsl-imx-x11 MACHINE=tek-imx6 source edm-setup-release.sh -b build-x11-tek-imx6 $: bitbake fsl-image-qt5-validation-imx
=== For TEK3-IMX6UL TEK3-IMX6UL, QT5 with X11 image: [source,console] $: DISTRO=fsl-imx-x11 MACHINE=tek3-imx6ul source edm-setup-release.sh -b build-x11-tek3-imx6ul $: bitbake fsl-image-qt5-validation-imx
== QTWebkit To start to go to /usr/share/qt5/examples/webkitwidgets/browser and run browser
== Qt 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. Default builds use an open source Qt license.
Note Qt is not supported on i.MX 6UltraLite and i.MX 7Dual. It works on X11 backend only but is not a supported feature.
== Image Deployment When build completes, the generated release image is under “${BUILD-TYPE}/tmp/deploy/images/${MACHINE}”: $: bzip2 -fd fsl-image-XXX.rootfs.sdcard.bz2 "fsl-image-XXX.rootfs.sdcard"
If the i.mx8m module is only with eMMC, please use following tool to flash image into eMMC. Please set boot jumper to boot from serial download mode, then this tool will mount eMMC as USB mass storage:
Please follow the userguide below to flash the image into your target board to deploy yocto.
https://github.com/TechNexion/u-boot-edm/wiki
MFG tool: (can be excuted under both MS Windows and Linux)
PICO-IMX8M(1GB/2GB/3GB/4GB DRAM):
ftp://ftp.technexion.net/development_resources/development_tools/installer/