Embedded GUI Across Every RTOS — and Bare Metal

Sparklet runs in a single RTOS task alongside your sensor, communication, and control tasks — with zero interference. FreeRTOS, Azure RTOS, Zephyr, QNX, Embedded Linux, and bare metal super-loop. The same UI codebase, every environment.

What Does Embedded GUI RTOS Support Mean?

Embedded GUI RTOS support means the GUI framework can operate within a real-time operating system's task model — running in a dedicated RTOS task alongside other application tasks such as sensor sampling, CAN or Ethernet communication, and control loops — without blocking those tasks, being blocked by them, or introducing unpredictable timing jitter. The GUI task runs at a defined priority, yields correctly between frames, and communicates with other tasks via message queues rather than shared memory with locking hazards.

Sparklet is designed for this model from the ground up. The Sparklet runtime executes entirely within a single dedicated task or thread. Input events from touch controllers, encoders, or buttons are queued from their interrupt service routines (ISRs) or driver tasks into the Sparklet event queue. Widget data updates from application tasks are submitted via Sparklet's thread-safe message queue API — the GUI task processes these updates on its next rendering pass. No mutex contention between the GUI and the application occurs in normal operation.

Sparklet supports: FreeRTOS, Azure RTOS (ThreadX), Zephyr, QNX, ITRON, Embedded Linux, Android AOSP, and bare metal. For platform-specific integration details, see the Supported Platforms page.

RTOS Integration — Environment by Environment

Detailed integration guidance for every supported RTOS and OS environment.

Running Sparklet on FreeRTOS

FreeRTOS is the most widely deployed RTOS in the embedded market and the most common environment for Sparklet. Create a dedicated FreeRTOS task with xTaskCreate(): 8–16 KB stack, medium priority (above communication drivers, below hard real-time ISR tasks). Call sgui_init() before starting the scheduler, then call sgui_execute() in the Sparklet task loop with a xQueueReceive() timeout of 16 ms for 60 fps frame pacing.

Touch controller input posts to a FreeRTOS queue from the ISR using xQueueSendFromISR(). Widget data updates from other tasks (CAN receive, sensor sampling) use Sparklet's sgui_post_update(widget_id, property, value) — non-blocking, lock-free, processed on the next render pass. On NXP i.MX RT1170 (dual Cortex-M7), use xTaskCreateAffinitySet() to pin the Sparklet task to a specific core for cache locality on framebuffer access. Validated on STM32, Renesas RA, and NXP i.MX RT platforms.

RTOS Integration Comparison — Sparklet at a Glance

RTOS / EnvironmentTask ModelInput Queue PrimitiveIntegration EffortNotes
FreeRTOSxTaskCreate()xQueueSendFromISR()Low — pre-ported HALMost common Sparklet deployment
Azure RTOS (ThreadX)tx_thread_create()TX_QUEUELow — pre-ported HALMISRA C; works alongside USBX/NETX
Zephyrk_thread_create()k_msgq_put()Low — display API abstractionValidated on RA, STM32, i.MX RT
QNX NeutrinoQNX process (fork)MsgSend() IPCMedium — IPC adapterAutomotive ASIL process isolation
ITRON / μITRONcre_tsk()snd_dtq() from ISRLow — pre-ported HALCommon in Japanese OEM designs
Embedded Linuxpthreadevdev / POSIX queueLow — framebuffer / DRM HALi.MX 8, RK3506G2, RZ/G
Bare Metalwhile() super-loopISR ring buffer (self-contained)Minimal — single HAL file16 KB RAM minimum, quickest eval path

Thread Safety — The Single GUI Task Rule

Sparklet's thread-safety model is based on a single rule: all Sparklet API calls must be made from the GUI task or thread. This rule eliminates the need for mutexes around the widget tree, framebuffer, and rendering state — the most common source of GUI deadlocks and priority inversion in multi-threaded embedded applications.

How other tasks communicate with the GUI task:

Contact Embien for integration guidance specific to your RTOS and application architecture. The embedded GUI features page provides an overview of the complete Sparklet capability set.

RTOS and OS Support at a Glance

Validated across the full range from bare metal Cortex-M0+ to Embedded Linux on MPU.
FreeRTOS

FreeRTOS Integration

Dedicated FreeRTOS task, xQueueSendFromISR for input, lock-free posted-update API for widget data. Validated on STM32, Renesas RA, NXP i.MX RT.

ThreadX

Azure RTOS ThreadX

Full MISRA C compliance maintained. Compatible with USBX, NETX, FileX in the same firmware. IEC 61508 safety-grade RTOS.

Zephyr

Zephyr Open-Source RTOS

Standard Zephyr thread, display API or direct DRM framebuffer. Input via Zephyr 3.3+ input subsystem. Open-source RTOS with growing MCU ecosystem.

Linux

Embedded Linux (MPU)

POSIX pthread on i.MX 8 and RK3506G2. Framebuffer or DRM/KMS display. GPU acceleration via EGL/OpenGL ES on Mali and other Linux GPU drivers.

Frequently Asked Questions

Sparklet supports FreeRTOS, Azure RTOS (ThreadX), Zephyr, QNX Neutrino, ITRON and μITRON, Embedded Linux, Android AOSP, and bare metal (no RTOS). The same Sparklet UI codebase runs in all these environments — only the HAL layer (event queue primitives, display flush call) changes per environment. Sparklet ships with pre-ported HAL implementations for all listed environments.

Evaluate Sparklet on Your RTOS

Download the Sparklet evaluation package — FreeRTOS, Azure RTOS, Zephyr, and bare metal project templates for the most common MCU evaluation boards, alongside Flint UI Designer.