"); //-->
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 应用,而无需启动浏览器。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。