专注于产品开发平台解决方案

Qt for MCUs 2.7正式发布
分享:

本文翻译自:Qt for MCUs 2.7 released

原文作者:Qt Group高级产品经理Yoann Lopes

翻译:Macsen Wang


Qt for MCUs的新版本已发布,为Qt Quick Ultralite引擎带来了新功能,增加了更多MCU平台的支持,并且我们对GUI框架进行了多项改进,以适应资源受限的嵌入式系统。

您可以在变更日志中找到此版本的完整变更列表。接下来,我们将介绍此版本的亮点。

更便捷的2D形状处理

我们添加了新的QML API到Qt Quick Ultralite,这些API从传统Qt中进行了适配,并可直接兼容,以简化在应用程序中实现两种常见UI元素(弧形和渐变)的过程。

ArcItem

为了在Qt for MCUs应用程序中绘制弧形,Qt Quick Ultralite已经拥有了来自Shapes模块的PathArc QML类型,它提供了一种灵活且通用的方式来实现任何类型的椭圆弧,但是在只需要绘制两个角度(起始和结束)之间的圆弧时,缺乏便利性。新的ArcItem类型从Qt Design Studio适用于传统Qt的组件进行了调整,满足了这一需求,并提供了一种快速实现诸如仪表或圆形进度指示器等UI组件的方法。

您可以自行查看并尝试新的studio_components示例以了解如何使用它。

渐变

在此版本之前,Qt for MCUs中添加渐变的主要选项要么是将渐变预先渲染为图像,要么是使用PaintedItem进行基于自定义C++绘制的实现。为了提供更多便利性和灵活性,我们将传统Qt Quick中的Gradient类型适配到Qt Quick Ultralite中可用。它可以用于填充Rectangle、Shape和ArcItem,使用任意数量的颜色停止点进行线性渐变。

现有的shapes示例和watch demo已经更新,演示了如何使用这种新类型。

集成任意格式的资源

我们增加了对自定义图像格式支持,以提高使用的灵活性。到目前为止,Qt Quick Ultralite资源编译器在进行编译时预处理图像时,解码并在需要的时候重新进行压缩。这导致用户无法启用自定义格式的图像的即时解码(例如,在运行时从远程服务器下载的图像)或某些格式可能在特定MCU上具有硬件加速(例如JPEG解码)。为了克服这个限制,我们添加了一个新的ImageDecoder API,用于注册自定义图像格式和匹配解码器。这使得可以在应用程序中包含自定义解码器接口(硬件或软件),并利用硬件提供的特有的解码能力,或使用特定用途的图像格式。

您可以在相关指南中阅读有关集成新图像格式所需步骤的更多信息。

即时JPEG解码

作为新的ImageDecoder API的示例实现,我们添加了对某些STM32硬件平台上可用的硬件加速JPEG解码器的支持。该实现演示了如何将JPEG解码器注册为自定义格式,并为其提供了硬件解码接口。在支持的STM32平台上使用这种方法可以节省大量的用于存储的非易失性存储器资源,并避免在运行时解压缩它们时所造成的性能开销。这对于由许多必须存储在flash中并按需解码的帧组成的复杂动画特别有帮助(例如启动动画、视频或类似GIF的动画)。

我们已更新我们的Sprite_Animation示例,以利用支持的STM32 F7和H7平台上的HW JPEG解码器。

轻松针对不同的显示方向旋转GUI(技术预览版)

我们添加了一个新的项目属性,可以在几乎没有运行时性能损耗的情况下轻松对GUI内容应用静态旋转。

当设备的显示不处于其自然方向时,这个功能可以提供极大的便利,例如在纵向显示面板(例如480x800)上显示横向UI(例如800x480)。这中情况可能是基于多个显示屏之间的成本考虑、组装限制或其他各种原因导致的。在这种情况下,除非显示屏控制器能够直接处理所需的旋转,否则您需要根据设置将GUI内容旋转90度、180度或270度。

现有的一些解决方案包括对GUI应用运行时旋转,这可能会显著降低大多数MCU的应用帧率,或者设计具有内置旋转的布局和资源,以避免运行时性能损失,但这意味着工作流程非常繁琐。我们设计的解决方案既简单——只需设置一个项目属性,无需更改QML代码或GUI资源——又高效,同时可以避免运行时的性能损失。

这个功能在Qt for MCUs 2.7中作为技术预览版发布,并计划在Qt for MCUs 2.8 LTS中升级为稳定版。虽然在下一个版本中不希望更改API,但当前版本存在一些限制,尚未实现所有优化,这意味着在该版本中应用旋转可能会对帧率和CPU使用率产生影响。

您可以在配置显示旋转文档页面上获取更多关于此功能的信息。

新设备的支持

作为这个版本的一部分,我们已经添加了一些新的MCU供您尝试!

  • Renesas RA系列的新旗舰MCU——基于Cortex M85的RA8D1——现在作为Tier-2技术预览平台启用。稳定版本会在即将发布的版本中推出。

  • 适用于可穿戴设备的超低功耗MCU Ambiq Apollo4 Plus(带显示屏扩展板)现在作为Tier-3平台推出。

  • Infineon TRAVEO™ T2G CYT4EN是一款提供MPU级性能和图形能力的MCU,支持高分辨率显示,最高可达2880 x 1080,现在作为Tier-2技术预览平台可用。

动图封面

更多内容

我们不断努力使Qt Quick Ultralite尽可能轻量。在之前的版本中,我们已经发布了相关的优化措施,进一步优化了从QML生成的C++代码,使大多数应用的.text节的大小减少了3%~7%。

改进了FreeRTOS多任务示例,以演示多个线程之间的双向通信,更加贴近实际使用场景。这使得在Qt Quick Ultralite和后端线程之间的数据同步更加容易。

在Qt Design Studio 4.4中进行了许多提升,重点是提供一个仅限于Qt for MCUs可用功能的GUI设计环境,以防止误生成仅对传统Qt有效的QML代码。

当为qmlproject属性分配的值无效时,改进了qmlprojectexporter工具的错误报告。

后续计划

Qt for MCU 2.8 长周期支持版(LTS) 将于 2024 年 5 月底发布。您可以一如既往地期待一系列新功能和改进,从而更快地创建用于 MCU 的高级图形用户界面。在下一版本中,我们计划包含的一些亮点如下:

  • 为了极大地简化创建可调整大小的用户界面的流程,我们为Qt Quick Ultralite提供了Qt Quick Layouts的子集。

  • 新增了TextInput QML类型

  • 这是一个功能齐全的虚拟键盘,具有与智能手机上一致的用户体验。

  • 支持CMSIS-packs,方便将Qt for MCUs与第三方嵌入式IDE项目进行集成。

  • 支持Zephyr RTOS和构建系统。

这还不是全部,我们计划在今年和以后进行更多开发,旨在提高您的生产力,并将嵌入式处理器的上所能实现的效果推向极限。请持续关注更多更新。

行业痛点
解决方案
应用案例