在 NXP iMX8 上进行 Qt5移植和开发

2024-04-19 11:08
文章标签 进行 开发 移植 qt5 nxp imx8

本文主要是介绍在 NXP iMX8 上进行 Qt5移植和开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

By Toradex 胡珊逢

简介

高清多媒体,甚至是 4K 视频不仅在消费领域有着旺盛的需求,在行业领域同样也获得广泛的关注。NXP 最新的IMX8 处理器不仅配有强劲的 CPU和GPU,还对多媒体应用提供了完善的解决方案,如硬件解码支持H.265 HEVC Main Profile 2160p60 Level 5.1。下面我们将介绍如何从Yocto开始构建包含Gstreamer 的BSP、使用Toradex Easy Installer 安装系统、配置LVDS显示和播放多媒体文件。

 

本文演示所使用的ARM平台来自Toradex基于NXP iMX8QM SoC平台的Apalis iMX8QM ARM核心板。

 

 

NXP 的iMX8 处理器有其出色的CPU和GPU性能吸引了从汽车、工业自动化到医疗、IoT、消费类电子等诸多领域的注意。该处理器为创建优秀的人机交互方案提供了一个新的平台。本文接下来将介绍如何在 Colibri iMX8 平台上进行广受欢迎的GUI方案Qt的移植和开发。

 

Qt编译

交叉编译Qt是一项较为繁重的任务,特别是从Qt源码直接编译,我们曾经撰写过一篇文章来阐述如何完成这一操作。但是本文会采用Yocto/OpenEmbedded框架来完成。Yocto/OpenEmbedded能够让用户免受交叉编译过程中各类软件包的依赖关系,并利用现有的OpenEmbedded layer和recipes,方便集成第三方软件,例如Qt等。

 

Toradex为其模块提供完善的Yocto/OpenEmbedded配置文件,用户下载后能够直接使用。自Toradex的 V3.0 BSP 开始,BSP基于Poky,这是一个相对精简版本,因此用户需要根据项目需求添加所需组件,如常见的Qt、Gstreamer等。

 

首先根据该文章的介绍,下载适用于Colibri iMX8 的Yocto环境,BSP 3.0,thud分支。

 

在Yocto中的layers/meta-toradex-demos/recipes-images/images目录添加新的bb文件如qt5-eglfs-wayland.bb ,包含Qt的BSP从该文件生成。这里console-tdx-image.bb作为基础,向里面添加Qt、Gstreamer组件,以及中文字体。当然还可以添加你所需要的软件,例如时区信息tzdata等。

 

在layers/meta-toradex-demos/recipes-qt/qt5/packagegroup-qt5.bb中移除qtwebkit。移除SDK中的qtwebkit qt3d,创建layers/meta-qt5/recipes-qt/packagegroups中添加packagegroup-qt5-toolchain-target.bbappend文件:

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

#remove qtwebkit qt3d

RDEPENDS_${PN}_remove = "qtwebkit qtwebkit-dev qtwebkit-mkspecs qtwebkit-qmlplugins qt3d qt3d-dev qt3d-mkspecs qt3d-qmlplugins"

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

 

由于目前thud版本Yocto在编译Qt5.11时会遇到上述组件编译错误,如果用户不使用这些组件,对其则不产生影响。后续我们将会完善编译过程。

 

接下来在build/conf/local.conf 的结尾添加以下内容:

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

IMAGE_INSTALL_append = " qtwayland rsync"

PACKAGECONFIG_append_pn-qtbase = " libinput gles2 freetype"

PACKAGECONFIG_append_pn-qtwayland = " wayland-egl"

DISTRO_FEATURES_remove = " x11"

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

 

最后执行编译,运行下面命令

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

MACHINE=colibri-imx8x bitbake qt5-eglfs-wayland

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

 

整个编译过程会持续数个小时,最后在build/deploy目录的images/colibri-imx8x和sdk文件夹中会生成BSP安装包和SDK工具。也可以从我们的FTP服务器上下载相应的文件。

 

BSP安装

Toradex的iMX8 模块均支持Toradex Easy Installer 安装BSP,用户可以参考该网页说明进行操作。

 

Qt SDK配置

Qt5.11 的SDK配置请参考我们开发者中心的说明。

 

Qt 应用开发

我们将使用Qt官方演示touch-interaction为例进行说明。按照上面说明正确完成SDK配置后,可以直接编译并通过部署该demo。QtCreator的应用部署需要使用rsync,因此我们在之前的local.conf配置将其添加进来。

 

Cobliri iMX8 V3.0 BSP采用了Wayland作为图形化后端,Qt的运行也将基于wayland。对于电阻触摸屏用户,在运行的时需要先校准触摸屏。运行 weston-touch-calibrator,获取触摸设备路径。

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

root@colibri-imx8x:~/touchinteraction# weston-touch-calibrator 

could not load cursor 'dnd-move'

could not load cursor 'dnd-copy'

could not load cursor 'dnd-none'

device "/sys/devices/platform/5a800000.i2c/i2c-16/16-002c/input/input1/event1" - head "DPI-1"

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

 

校准触摸屏

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

root@colibri-imx8x:~# weston-touch-calibrator /sys/devices/platform/5a800000.i2c/i2c-16/16-002c/input/input1/event1

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

依次点击屏幕上的校准坐标。

对于电容触摸屏用户,则无需校准,可以直接使用。当然前提是触摸屏的驱动能够正常工作。

 

运行Qt应用

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

root@colibri-imx8x:~/touchinteraction# export QT_QPA_PLATFORM=wayland

root@colibri-imx8x:~/touchinteraction# ./touchinteraction

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

 

image001.gif

 

总结

Qt和iMX8的组合为优秀的用户交互体验提供了一个良好的实现平台。Toradex致力于为用户提供易于使用的iMX8平台,无论是稳定、可靠的硬件模块,还是丰富的软件工具,帮助用于快速快发Qt应用。上面简要地介绍了在iMX8上Qt的移植和开发,该方法同样也适用于Toradex其他的iMX8产品,如最高端的i.MX8QuadMax。

 

这篇关于在 NXP iMX8 上进行 Qt5移植和开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917371

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi