工控網首頁
>

應用設計

>

基于 NXP iMX8MP 平臺簡單測試 PySide6 應用

基于 NXP iMX8MP 平臺簡單測試 PySide6 應用

1). 簡介

Python binding 的 Qt GUI 庫一直以來有兩種,最初是由 Riverbank Computing 公司在 2000 年初發(fā)布,基于 Qt4 版本推出的 PyQt4,后來隨著 Qt 庫版本的演進也陸續(xù)跟進到 PyQt5 和最新的 PyQt6,由于發(fā)布的比較早其代碼成熟以及文檔完善的也比較早,之前我們也寫過 PyQt5 測試的相關文章,但是 PyQt 的 License 相對比較嚴格,是 GPLv3 和 Commercial 兩種,所以如果是商業(yè)產品開發(fā)使用,不購買 Commercial License 就要開源整個應用。

 

基于這種情況,Qt官方早至 Nokia 時期的 2009 年就發(fā)布了對應 Pyqt 的 Python binding 項目 PySide,采用 LGPL License ;然后到了 Qt Digia 時期的 2015年,才發(fā)布了 PySide 1.2.x 版本,對應 Qt4.8.x 版本;但是由于推出的時間比較晚等原因,Pyside 1.x 的流行度并不太好。接下來 Qt 基于新發(fā)布的 Qt5 版本,啟動 Qt for Python 項目,最終基于 Qt 5.12.x 發(fā)布了 PySide2,由于支持 LGPL License以及 Qt 官方的支持,PySide2 逐漸成熟文檔也日趨完善,接受度也越來越高。然后針對最新的 Qt6 版本,Qt for Python 項目也繼續(xù)從 Qt 6.6 版本開始發(fā)布了最新的 PySide6 版本,本文就基于 NXP i.MX8M plus處理器平臺簡單測試 PySide6 的部署運行。

 

本文所演示的平臺來自于 Toradex Verdin i.MX8MP 嵌入式平臺

 

 

2. 準備

a). Verdin i.MX8MP ARM核心版配合Dahlia 載板,并連接調試串口和 HDMI 顯示器用于測試。

 

 

3). Verdin i.MX8MP Yocto Linux 編譯部署

a). 首先參考這里說明創(chuàng)建 Yocto/Openembedded 編譯框架,當前最新版本是對應于 Toradex Yocto Linux BSP 6.x 版本的 kirkstone-6.x.y branch

 

b). 由于默認配置只包含了 meta-qt5 layer,因此需要參考如下操作將 meta-qt5 替換為 包含 PySide6 支持在內的 meta-qt6 layer,本文測試基于 Qt 6.6.x 版本,可以跟進實際需求改為不低于 Qt 6.6 的版本。

-------------------------------

### 移除 meta-qt5 layer ###

$ cd/layers

$ rm -rf meta-qt5

### add meta-qt6 layer ###

$ git clone -b 6.6.3 git://code.qt.io/yocto/meta-qt6.git

 

### add meta-clang layer for PySide6 ###

$ git clone -b kirkstone https://github.com/kraj/meta-clang.git

-------------------------------

 

c). 參考這里文章說明增加 packagegroup-tdx-qt6.bb 和 tdx-reference-multimedia-qt6-image.bb 文件

 

d). 修改 bblayers.conf 和 local.conf 文件

-------------------------------

### modify bblayer.conf ###

--- a/build/conf/bblayers.conf  2023-03-30 11:13:22.946533642 +0800

+++ b/build/conf/bblayers.conf  2023-03-28 16:01:12.614534560 +0800

@@ -34,7 +34,7 @@

   ${TOPDIR}/../layers/meta-openembedded/meta-python \

   ${TOPDIR}/../layers/meta-freescale-distro \

   ${TOPDIR}/../layers/meta-toradex-demos \

-  ${TOPDIR}/../layers/meta-qt5 \

+  ${TOPDIR}/../layers/meta-qt6 \

+  ${TOPDIR}/../layers/meta-clang \

   \

   \

   ${TOPDIR}/../layers/meta-toradex-distro \

 

### add below to local.conf ###

# remove x11 related

DISTRO_FEATURES:remove = " directfb x11"

 

add python3/python3-pyside6 and Chinese fonts support

IMAGE_INSTALL:append = " python3 python3-pip python3-pyside6 python3-numpy ttf-droid-sans ttf-droid-sans-fallback ttf-droid-sans-mono ttf-droid-serif freetype"

 

enable gstreamer for qtmultimedia if needed

PACKAGECONFIG:append:pn-qtmultimedia = " gstreamer"

 

# add Freescale EULA

ACCEPT_FSL_EULA = "1"

-------------------------------

 

e). 編譯 Yocto Linux image

-------------------------------

### compile Reference-Multimedia image ###

$ MACHINE="verdin-imx8mp" bitbake tdx-reference-multimedia-qt6-image

 

### compile SDK ###

MACHINE="verdin-imx8mp" bitbake tdx-reference-multimedia-qt6-image -c populate_sdk

-------------------------------

 

f). Yocto Linux image部署

參考這里通過Toradex Easy installer將上面編譯好的image更新部署到模塊

 

 

4). PySide6 Example應用獲取和測試

a). Qt 官方網站這里提供了豐富的 PySide6 Examples 示例應用,更多開發(fā)指導文檔可以參考如下:

https://doc.qt.io/qtforpython-6.6/index.html

 

b). 分別使用一個 Qt Multimedia 應用和一個 Qt Charts 應用進行測試

.Qt Multimedia 應用 – 詳細說明請參考這里,可以從頁面直接下載應用 mediaplayer 文件夾并上傳到 Verdin i.MX8MP Yocto Linux /home/root 目錄

./ Qt Charts 應用 – 詳細說明請參考這里,可以從頁面直接下載應用 chartthemes 文件夾并上傳到 Verdin i.MX8MP Yocto Linux /home/root 目錄

 

c). 創(chuàng)建開機自啟動systemd service文件

-------------------------------

[Unit]

Description=Start a wayland application

After=weston.service

Requires=weston.service

 

[Service]

Type=simple

User=root

PAMName=login

Environment=WAYLAND_DISPLAY=/run/wayland-0

Environment=QT_QPA_PLATFORM=wayland-egl

### if is mediaplayer app

ExecStart=python3 /home/root/mediaplayer/mediaplayer.py

### if is chartthemes app

ExecStart=python3 /home/root/chartthemes/main.py

Restart=on-failure

RestartSec=1

 

[Install]

WantedBy=graphical.target

-------------------------------

 

d). enable service 并測試

-------------------------------

$ systemctl enable wayland-app-launch

$ reboot

-------------------------------

 

e). 重啟后分別啟動 mediaplayer 和 chartthemes 應用效果如下

基于 NXP iMX8MP 平臺簡單測試 PySide6 應用4910.png基于 NXP iMX8MP 平臺簡單測試 PySide6 應用4912.png 

// 注意下如果要使用 mediaplayer 播放視頻文件,由于 QtMultimedia 6.6 版本播放媒體需要調用 Gstreamer videoconvertscale 元件,而這個元件是要 Gstreamer 1.22 版本以上才支持,如果當前 Yocto 版本中支持的版本過低需要通過單獨升級 Gstreamer 或者整體升級 Yocto 版本來滿足。

 

5). 總結

本文基于 NXP i.MX8MP 處理器簡單演示了 PySide6 應用的部署運行。

審核編輯(
王靜
)
投訴建議

提交

查看更多評論
其他資訊

查看更多

Verdin AM62使用CODESYS

Verdin AM62 引腳復用配置

TI AM62X Secure Boot 流程簡述

基于 TI AM62 測試 QtWayland 部署

Verdin AM62 LVGL 移植