A new feature update of Qt for MCUs is now available. Download version 1.8 to get access to additional MCU platforms, more options to limit the memory footprint, new APIs to create advanced and scalable user interfaces, and a solution to simplify the integration of Qt into existing projects.
Newcomers can get a free evaluation here, while others can run the Qt Installer to update to the latest version.
The full list of changes included in version 1.8 can be found in the changelog in the online documentation. Continue reading for more information on the content of this release.
New supported platforms
NXP i.MX RT1170
The i.MX RT1170 is NXP’s most powerful crossover MCU. It sets speed records with an Arm® Cortex®-M7 core running at 1 GHz, provides advanced graphics capabilities and real-time functionality. Qt for MCUs utilizes the integrated GPU through the VGLite API and lets you harness all the power of the platform to create modern and fluid UIs in the most efficient way.
Technology Preview packages for this platform have been available since Qt for MCUs 1.4 and the port is now promoted to stable support. A ready-to-use adaptation is provided for the EVK board along with the source code of the following demo:
More information on this port can be found in this previous blog post and on-demand webinar.
Renesas RA6M3
The Renesas RA6M3 group of microcontrollers is designed for industrial and IoT applications and is powered by a high-performance Arm® Cortex®-M4 core. Qt for MCUs leverages its LCD controller with 2D accelerator to enable best-in-class HMIs.
As for every other supported platforms, a reference adaptation is included for Renesas’ evaluation kit, which lets you prototype and test Qt Quick Ultralite applications on real hardware quickly and effortlessly.
Advanced 2D drawing
The Qt Quick Ultralite framework offers basic GUI building blocks such as Image, Text, and Rectangle, as well as common controls such as Button or Slider. To expand the possibilities, we added the Qt Quick Ultralite Shapes module, a subset of the Qt Quick Shapes APIs available in Qt. You can declaratively define vector shapes such as lines, curves, arcs, and SVG paths and dynamically morph them using QML bindings and animations. Example use cases for these APIs include complex dynamic 2D graphics, scalable graphical assets, or reduced RAM/ROM requirements for some large images.
You can explore some of the API capabilities in the included example:
And here is the well-known Ghostscript tiger converted to Qt Quick Ultralite Shapes:
Availability of this module is currently limited to the i.MX RT1170 platform, which has a hardware-accelerated implementation on top of the VGLite API. Qt Quick Shapes are also implemented on desktop for easy preview and prototyping. Future versions of Qt for MCUs will include additional hardware-accelerated implementations for platforms with adequate capabilities and software fallbacks for other platforms.
Smaller footprint
New options have been added to help reduce memory requirements:
- The Qt Quick Ultralite engine now supports 8-bit color images. Images included in the application can be configured to be converted to 8-bit, 16-bit or 32-bit. The lower the bit depth, the lower the footprint, but with a reduced amount of colors which can be represented. Qt for MCUs internally uses the RGB332 pixel format for 8-bit assets.
Note that the QUL engine can be configured to use a 8-bit framebuffer to further reduce RAM requirements when the device is equipped with a display controller capable of handling RGB332 data. - Font data can now be configured to always be read from flash memory using QUL_GLYPHS_COPY_TO_RAM or QUL_FONT_FILES_COPY_TO_RAM depending on the font engine used in the application. Copying font data to RAM on startup can help achieve higher framerates but can also significantly increase RAM usage depending on how many languages and fonts need to be displayed in the application.
Easier integration with any build system
Qt for MCUs supports setting up projects and building applications using CMake. To simplify the integration of QUL GUIs to non-CMake projects, we added a new helper CMake function to build a static library instead of an executable out of the Qt project. The produced static library does not include any hardware-specific code and can be included in projects based on other build systems or IDEs.
You can find an example of this feature in the SDK.
What’s next
Qt for MCUs 1.9 is planned for June and will bring often-requested features such as development tools for Linux, complex scripts and bidirectional text support, and support for the Infineon (Cypress) Traveo II platform (CYT3DL and CYT4DN series).
Since December 2019, we have been releasing on a frequent basis, 10 releases in a span of 19 months, to ensure that users can take advantage of new features earlier in their development cycle. With v1.9 we will have delivered the last set of high priority features requested by users and will have achieved a significant milestone in the product’s development strategy. The v1.9 will be the last in the 1.x series. From the second half of this year, our product development strategy will be to focus on stability, tooling improvements apart from feature development. Our aim is to offer a Long Term Support release with the 2.x series. Stay tuned for more details on these upcoming releases.