基于 NXP iMX8MP 平臺測試 CODESYS TargetVisu
簡介
在之前的文章中我們介紹了如何在 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 應用,而無需啟動瀏覽器。
提交
通過 Docker 部署測試 CODESYS PLC示例
Yocto layer 使用 TI AM62 安全啟動功能
定制 Linux Kernel Driver 編譯示例
在 NXP i.MX 95 上運行 Zephyr 實現非對稱多核處理
HDMI 顯示器熱插拔對應顯示應用啟停測試

投訴建議