在 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

相关文章

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

Eclipse+ADT与Android Studio开发的区别

下文的EA指Eclipse+ADT,AS就是指Android Studio。 就编写界面布局来说AS可以边开发边预览(所见即所得,以及多个屏幕预览),这个优势比较大。AS运行时占的内存比EA的要小。AS创建项目时要创建gradle项目框架,so,创建项目时AS比较慢。android studio基于gradle构建项目,你无法同时集中管理和维护多个项目的源码,而eclipse ADT可以同时打开

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和

企业如何进行员工的网络安全意识培训?

企业网络安全意识培训的重要性         企业网络安全意识培训是提升员工网络安全素质的关键环节。随着网络技术的快速发展,企业面临的网络安全威胁日益增多,员工的网络安全意识和技能水平直接关系到企业的信息安全和业务连续性。因此,企业需要通过系统的网络安全意识培训,提高员工对网络安全的认识和防范能力,从而降低企业在面对潜在安全风险时的损失和影响。 企业网络安全意识培训的方法         企

WDF驱动开发-WDF总线枚举(一)

支持在总线驱动程序中进行 PnP 和电源管理 某些设备永久插入系统,而其他设备可以在系统运行时插入和拔出电源。 总线驱动 必须识别并报告连接到其总线的设备,并且他们必须发现并报告系统中设备的到达和离开情况。 总线驱动程序标识和报告的设备称为总线的 子设备。 标识和报告子设备的过程称为 总线枚举。 在总线枚举期间,总线驱动程序会为其子 设备创建设备对象 。  总线驱动程序本质上是同时处理总线枚

使用JWT进行安全通信

在现代Web应用中,安全通信是至关重要的。JSON Web Token(JWT)是一种流行的安全通信方式,它允许用户和服务器之间安全地传输信息。JWT是一种紧凑的、URL安全的表示方法,用于在两方之间传输信息。本文将详细介绍JWT的工作原理,并提供代码示例帮助新人理解和实现JWT。 什么是JWT? JWT是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSO

JavaWeb系列六: 动态WEB开发核心(Servlet) 上

韩老师学生 官网文档为什么会出现Servlet什么是ServletServlet在JavaWeb项目位置Servlet基本使用Servlet开发方式说明快速入门- 手动开发 servlet浏览器请求Servlet UML分析Servlet生命周期GET和POST请求分发处理通过继承HttpServlet开发ServletIDEA配置ServletServlet注意事项和细节 Servlet注

ccp之间是不可以直接进行+,-的,要用ccpSub和ccpAdd。

1.  http://www.cnblogs.com/buaashine/archive/2012/11/12/2765691.html  上面有好多的关于数学的方面的知识,cocos2dx可能会用到的 2.学到了   根据tilemap坐标得到层上物体的id int oneTiled=flagLayer->tileGIDt(tilePos);

手把手教你入门vue+springboot开发(五)--docker部署

文章目录 前言一、前端打包二、后端打包三、docker运行总结 前言 前面我们重点介绍了vue+springboot前后端分离开发的过程,本篇我们结合docker容器来研究一下打包部署过程。 一、前端打包 在VSCode的命令行中输入npm run build可以打包前端代码,出现下图提示表示打包完成。 打包成功后会在前端工程目录生成dist目录,如下图所示: 把