By Toradex 胡珊逢

简介

之前的文章中我们介绍了如何在 Verdin AM62 上运行 CODESYS,demo 的界面通过浏览器呈现。CODESYS 还提供 TargetVisu 组件,借助 Qt 可以在本地设备上直接显示应用,而无需启动浏览器。本文将以 Verdin iMX8MP 为例,说明如何在 Yocto 镜像中添加相关组件,并安装 TargetVisu。


 

硬件介绍

Verdin iMX8MP采用 NXP iMX8M Plus SoC,具有 4x Cortex-A53 和 Cortex-M7 核心,神经网络处理单元(NPU)可以加速 AI 应用。模块提供多种 DDR RAM,eMMC 容量等配置,满足用户多样的需求。

Yocto 镜像配置

首先参考 Build a Reference Image with Yocto Project/OpenEmbedded搭建 Yocto 编译环境。在 BSP7 对应的 scathgap 分支版本中,默认使用 Qt5,CODESYS TargetVisu 则需要使用 Qt6,所以我们需要添加 meta-qt6 layer。这里我们使用 v6.8.3 版本的 Qt6 作为演示。

$ cd layers
$ git clone https://code.qt.io/yocto/meta-qt6.git
$ cd meta-qt6
$ git checkout v6.8.3

在 build/conf/bblayers.conf 中把原来的使用的 ${TOPDIR}/../layers/meta-qt5 改为 ${TOPDIR}/../layers/meta-qt6。然后把 packagegroup-tdx-qt6.bb 和 tdx-reference-multimedia-qt6-image.bb 放到 layers/meta-toradex-demos/recipes-images/images 目录下。同时把该目录下原有的 tdx-reference-multimedia-image.bb 移到到其他位置,例如用户根目录,如果后续要重新编译基于 Qt5 的镜像,可以将其移回来,并恢复之前的 bblayers.conf 文件。

  • packagegroup-tdx-qt6.bb

DESCRIPTION = "Package group for i.MX"
LICENSE = "MIT"

PACKAGE_ARCH = "${MACHINE_ARCH}"

inherit packagegroup

RDEPENDS:${PN} = " \
  ${QT6_IMAGE_INSTALL_APPS} \
  ${QT6_IMAGE_INSTALL_FONTS} \
  ${QT6_IMAGE_INSTALL_QUICK3D} \
  ${@bb.utils.contains('DISTRO_FEATURES', 'wayland',     'qtwayland qtwayland-plugins', '', d)}"

QT6_IMAGE_INSTALL_APPS = ""
#QT6_IMAGE_INSTALL_APPS:imxgpu3d = "${@bb.utils.contains("MACHINE_GSTREAMER_1_0_PLUGIN", "imx-gst1.0-plugin", "imx-qtapplications", "", d)}"

#QT6_IMAGE_INSTALL_CINEMATICEXPERIENCE        = ""
#QT6_IMAGE_INSTALL_CINEMATICEXPERIENCE:imxgpu = "cinematicexperience-rhi"

QT6_IMAGE_INSTALL_FONTS = "ttf-dejavu-common ttf-dejavu-sans ttf-dejavu-sans-mono ttf-dejavu-serif "

QT6_IMAGE_INSTALL_QUICK3D = "qtquick3d qtquick3d-dev"

  • tdx-reference-multimedia-qt6-image.bb

require tdx-reference-minimal-image.bb

SUMMARY = "Toradex Embedded Linux Reference Multimedia Image"
DESCRIPTION = "Image for BSP verification with QT and multimedia features"

inherit populate_sdk_qt6

#Prefix to the resulting deployable tarball name
export IMAGE_BASENAME = "Reference-Multimedia-Image"

IMAGE_FEATURES += " \
  ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'weston', \
     bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11-base', '', d), d)} \
"

IMAGE_INSTALL += " \
  packagegroup-tdx-cli \
  packagegroup-tdx-graphical \
  packagegroup-fsl-isp \
  packagegroup-tdx-qt6 \
  bash \
  coreutils \
  less \
  makedevs \
  mime-support \
  net-tools \
  util-linux \
  v4l-utils \
  \
  gpicview \
  media-files \
"

在 build/conf/local.conf 添加 TargetVisu 运行所需的其他组件。

IMAGE_INSTALL:append = " rt-tests qtsvg qtwebengine ncurses procps nano"
PACKAGECONFIG:append:pn-qtbase = " widgets"

因为 CODESYS 的运行依赖于 RT-Linux,在编译的时候指定 DISTRO=tdx-xwayland-rt 就可以给内核打上实时补丁。

$ MACHINE=verdin-imx8mp DISTRO=tdx-xwayland-rt \
IMAGE=tdx-reference-multimedia-qt6-image

编译完成后使用 Toradex Easy Installer 安装到 Verdin iMX8MP 模块上即可。

CODESYS IDE 配置

参考这篇文章在电脑上完成 CODESYS IDE 安装。并且同样需要把 CODESYS Control 安装到 Verdin iMX8MP。设备的名字和登录密码设置也先完成,后面 codesysvisualization 需要使用该信息。

opkg install codesyscontrol_linuxarm64.ipk

在 CODESYS IDE 中继续安装 CODESYS TargetVisu for Linux SL。在 C:\Program Files\CODESYS 3.5.21.10\CODESYS\CODESYS TargetVisu for Linux SL\Delivery\visualizationarm64路径中可以看到 deb 格式的 codesysvisualization_visualizationarm64 安装文件。由于默认编译的镜像不支持 deb 安装包,需要在 Debian 系统如 Ubuntu 中提取相关文件,直接复制到 Verdin iMX8MP 上。

CODESYS TargetVisu 安装

在电脑上运行下面命令提取安装文件到 codesysvisualization_file 文件夹。

$ dpkg-deb -x codesysvisualization_visualizationarm64_4.16.0.0_arm64.deb \
codesysvisualization_file

提取后可以看到以下文件。除了 usr 目录外,其他的都可以复制到对应的位置。

├── etc
│   └── codesysvisualization
│       ├── CODESYSVisualization.cfg
│       ├── CODESYSVisualizationTV.cfg
│       └── CODESYSVisualization_User.cfg
├── opt
│   └── codesysvisualization
│       ├── bin
│       └── codesysvisualization.service
├── usr
│   └── share
│       └── doc
└── var
  └── opt
      └── codesysvisualization

例如在 Verdin iMX8MP 上执行下面命令复制文件。

# cp -r etc/* /etc/
# cp -r opt/* /opt/
# cp -r var/* /var/

运行 TargetVisu Demo

在 Verdin iMX8MP 上运行下面命令启动 codesyscontrol 和 codesysvisualization。

# /etc/init.d/codesyscontrol start
# /opt/codesysvisualization/bin/codesysvisualization.bin \
/etc/codesysvisualization/CODESYSVisualization.cfg

Verdin iMX8MP 屏幕上会显示寻找设备,点击 Scan network,选择当前的 verdin-imx8mp。

接下来的界面中输入之前在 IDE 上配置的用户名和密码。

在 IDE 里面创建并运行一个工程后,在设备端的屏幕同样可以显示该应用。

总结

文章介绍了如何在 Verdin iMX8MP 上使用 CODESYS TargetVisu 组件直接在本地显示 CODESYS 应用,而无需启动浏览器。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐