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 nameexport 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 应用,而无需启动浏览器。