Qt Quick Ultralite overview
Qt Quick Ultralite brings the key graphical user interface features of Qt to resource-constrained embedded systems powered by microcontrollers (MCU). It provides a rich QML API set for building fluid GUIs, and an efficient graphics engine to render Qt Quick-based graphical user interfaces (GUI).
Qt Quick Ultralite is aware of the resource constraints on the MCU platforms, such as memory footprint and CPU cycles. It enables your application to perform optimally with the available resources on these MCU platforms.
Qt Quick Ultralite includes a set of platform implementations for evaluation kits of popular MCU platforms. See Supported Target Boards and Development Hosts for a list of those platforms.
You can adapt Qt Quick Ultralite to any modern MCU platform that is capable of driving a display, and meets the following requirements:
- Microcontroller/processor: Cortex M4, M33, or higher. A Floating Point Unit (FPU) is optional, but improves performance considerably.
- RAM (internal/external):
- Static RAM: 20 Kb for minimal applications and 200 Kb or more for typical applications.
- Stack: 2-12 Kb.
- Heap: 20 Kb.
You also need enough RAM for framebuffer, depending on the display size, color depth, and the framebuffer strategy (single or double buffering).
- Flash/ROM: 500 KB or more.
- GPU/hardware acceleration is optional, but it a must have to achieve more than 20 FPS frame rate for animations.
- Display interface: RGB, MIPI-DSI, or LVDS for high resolution and frame rate SPI, or Parallel for low resolution and/or low frame rate.
- Graphics driver that supports one of the pixel formats that Qt Quick Ultralite supports.
Note: The maximum resolution and frame rate you get varies depending on the display interface.
Qt Quick Ultralite uses hardware acceleration on platforms that support it, otherwise it uses the CPU fallback to render graphics. Even though hardware acceleration is ideal to run animations at a frame rate above 20 fps, it is not a strict requirement.
The following graphical operations are hardware-accelerated depending on the MCU platform:
- Image drawing
- Text drawing
- Rectangle drawing
- 2D path drawing
- 2D and 2.5D transformations on images, texts, rectangles and paths
- Blending (images, texts, rectangle, paths, layers)
- Run-length encoded (RLE) image decoding
Qt Quick Ultralite comes with hardware-accelerated graphics implementations for the following drivers:
- CyGfx (Infineon TRAVEO™ T2G)
- Dave2D (Renesas RA6)
- DaveHD (Renesas RH850)
- PxP (NXP i.MX RT)
- VGLite (NXP i.MX RT1170)
- Chrom-ART (STM32)
RAM usage depends on the size and color depth of the display, the Qt Quick Ultralite features used, and the number of GUI elements in the application.
A typical application may have the following memory footprint, depending on the resolution and color depth combination that it use:
- Low resolution and color depth: at least 150-250 Kb
- Medium resolution and color depth: at least 400-700 Kb
- High resolution and color depth: 2 Mb or more
A Qt Quick Ultralite application's Flash or ROM usage depends on the number of images and fonts it uses. Usually, 500 Kb to 10 Mb of Flash or ROM is enough.
Note: Qt Quick Ultralite offers different frame buffering techniques that help reduce memory footprint. For example, partial frame buffering reduces RAM consumption by at least 10%.
Since version 1.3, the QML subset offered by Qt Quick Ultralite is source-compatible with Qt Quick. This enables you to run the Qt for MCUs application using Qt Quick. It also means that you can reuse existing code that's based on Qt Quick, Qt Quick Controls, or Qt Quick Timeline, in a Qt for MCUs application.
Although most of the Qt Quick Ultralite code works with Qt Quick, there are a few limitations that you should be aware of. The following topics cover the differences between the two QML typesets and helps you use them efficiently:
Available under certain Qt licenses.
Find out more.