Millions of industrial machines, medical devices, and commercial vehicles are running embedded displays that are 10 to 20 years old — monochrome LCD panels, 4-bit colour screens, or outdated resistive touch interfaces that no longer meet user expectations. Sparklet enables a targeted modernization: replace the display stack, deliver a modern full-colour UI, and leave the proven backend machine firmware untouched.
Legacy embedded HMI modernization is the process of replacing an outdated display interface — typically a 10 to 20-year-old monochrome LCD, 4-bit colour screen, or first-generation resistive touch panel — with a modern full-colour, animated TFT or OLED interface, without necessarily rewriting the underlying machine control firmware.
The critical insight is that most legacy systems have display logic and machine control logic tightly coupled in the same firmware. A temperature controller, CNC machine panel, or commercial vehicle instrument cluster may have been developed by a single firmware engineer who wrote the motor control, CAN bus, sensor processing, and pixel-drawing code in one codebase. This coupling is the primary source of modernization risk: touching the display code means touching the machine code, which means re-testing and re-validating everything.
A properly architected modernization decouples the display layer from the machine firmware — creating a clean boundary between what the machine does and how it presents its state to the operator. Once decoupled, the display side can be upgraded, redesigned, and updated independently, without regression risk to the proven machine logic. See also: Embedded GUI Modernization Service.
Which migration scenario applies to your product — and how Sparklet handles each case.
The most dramatic visual upgrade. Products using seven-segment LED displays, vacuum fluorescent displays (VFD), or simple indicator LEDs are moved to a full-colour IPS capacitive touch panel. The machine control MCU is retained unchanged; a dedicated display MCU (STM32H7 or NXP i.MX RT1170) is added to the PCB or display module. Sparklet runs on the display MCU and communicates with the machine MCU over UART or CAN bus. The machine MCU broadcasts its state — temperatures, speeds, alarms, mode flags — at a regular interval. The display MCU receives this and renders a graphical representation in Sparklet. Consumers and operators immediately notice the quality upgrade; the machine team does not need to touch the validated control firmware at all.
Flint UI Designer accelerates the design phase significantly: the UX team creates the new graphical panel layout in Flint's WYSIWYG environment — meter widgets, progress bars, status icons — and Flint generates the C code automatically. The firmware engineer integrates the generated code on the display MCU alongside the UART/CAN receive handler.

Many legacy embedded products use a character LCD with a custom menu system — line-by-line text navigation, numeric parameter entry, alarm codes displayed as error numbers. The product uses a menu-driven interface that was practical in the 1990s but falls below current user expectations for any product in a competitive market.
This scenario typically retains the existing MCU and display hardware (a graphical TFT replaces the character LCD without changing the MCU board) but replaces the entire display software stack. The character LCD menu tree is reconstructed as a graphical navigation structure in Flint UI Designer — list views, dialogue boxes, and parameter sliders replace text menus and numeric entry screens. Sparklet's ListBox, TextEdit, Dialog, and Slider widgets map directly to the original interface concepts, but rendered at modern graphical quality.
The machine application code — the parameter read/write API, the alarm management logic, the communication protocol handler — is preserved and called by the new Sparklet UI event callbacks instead of by the old character LCD menu handler. The change is contained to the presentation layer.

Some legacy embedded products use a GUI framework that was originally designed for desktop or high-end Linux — Qt Embedded, wxWidgets, GTK, or similar — ported to run on an embedded Linux board. The framework was chosen for its features and design tool support, but it brings an oversized memory and CPU footprint, unpredictable render latency, and dependencies on a full Linux userspace stack that complicate security updates and boottime.
Moving to Sparklet — a purpose-built embedded GUI framework in pure C — eliminates the desktop-framework overhead. Sparklet's 16 KB minimum RAM footprint and deterministic render path fit bare-metal and RTOS targets that a desktop-ported framework cannot reach. For Linux MPU targets (Rockchip RK3506G2, NXP i.MX 8), Sparklet runs as a single-process display application with direct framebuffer access — no display server, no graphics stack dependencies.
The migration path involves reconstructing the existing screens in Flint UI Designer (preserving the visual design and UX) and re-implementing the data binding from the application backend to Sparklet widget properties. Flint's WYSIWYG environment allows the original visual design to be matched precisely before any C code is written.

The Hardware Abstraction Layer (HAL) is the architectural mechanism that makes UI modernization safe. Sparklet's HAL is a defined C interface — a set of function pointers and data types — that separates all display-specific operations from the GUI framework code above it and the machine application code alongside it.
The Sparklet HAL interface includes: framebuffer access (a function to flush the rendered frame to the display controller), touch input (a function to read raw touch coordinates), timer callback (a function called at the GUI tick rate), and optional GPU acceleration hooks (functions to invoke DMA2D, D/AVE2D, or Mali 2D operations). This is a deliberately minimal interface — all rendering logic lives above the HAL in Sparklet's GDI and WID layers, not in the HAL itself.
In a modernization where the display hardware is being retained, the HAL implementation is a thin wrapper over the existing display driver code. If the legacy firmware already has a function that writes a pixel buffer to the LCD controller, that function becomes (or wraps) the HAL framebuffer flush. The existing touch driver becomes the HAL touch read function. In most cases, the HAL implementation for a legacy display is 50–200 lines of C — mostly adapters between the existing driver API and the Sparklet HAL function pointer signatures.
When the display hardware is being replaced, the HAL is implemented for the new display module. Embien's platform porting service includes display bring-up and HAL implementation as a deliverable. For supported MCUs (STM32, NXP i.MX RT, Renesas RA), reference HAL implementations are available as a starting point.
Once the HAL is in place, the machine application code does not call any display functions directly. All display interaction passes through the Sparklet widget API — the application code calls sparklet_widget_set_value() or similar, and Sparklet handles the rendering. This clean separation means the display layer can be rebuilt, animated, or replaced without any changes to the machine control logic. Future UI updates — new screens, new colour schemes, new data fields — require only Flint UI Designer changes and a Sparklet build update. The machine code is never touched again.
| Aspect | Legacy Approach | Modern Sparklet Approach |
|---|---|---|
| UI and machine logic | Coupled in a single firmware — touching UI code risks machine behaviour | Decoupled via HAL — UI changes are isolated to the display layer |
| UI update process | Full firmware rebuild and reflash — risk of regressions in machine logic | UI binary updated independently — machine firmware untouched |
| Design tooling | C code only — display changes require a firmware engineer | Flint WYSIWYG — design team can iterate screens without C coding |
| Multi-language support | Manual string table in C — Arabic shaping impossible on MCU | Full Unicode + design-time Arabic shaping via Flint — all markets from one project |
| Animation capability | None or limited — custom timed pixel manipulation | Keyframe animation, widget transitions, hardware-accelerated where available |
| Future HW migration | Full rewrite — no portability across display MCU vendors | HAL swap — same UI code runs on any supported MCU with a new HAL implementation |

Sparklet's HAL creates a defined boundary between GUI code and machine hardware. The display layer modernizes independently — machine control firmware is never touched.

Flint's WYSIWYG environment lets existing HMI screens be reconstructed visually — drag-and-drop — without rewriting C display code by hand. Dramatically reduces modernization project timeline.

Sparklet is pre-ported to STM32, NXP i.MX RT, and Renesas RA. Upgrading to a new display hardware target is a HAL integration task, not a full framework rewrite.

Sparklet's developer-seat model means no per-unit royalty cost across the modernized installed base — whether 500 or 500,000 units. Predictable economics from prototype to mass deployment.
Legacy embedded HMI modernization starts with decoupling the display layer from the machine firmware. This means creating a clean interface between GUI code and machine control logic, so the display can be replaced without re-validating the machine. Sparklet's HAL layer provides this decoupling: it isolates all display hardware interaction behind a defined C interface. The new display can then be built with Flint UI Designer and run on modern STM32, NXP i.MX RT, or Renesas RA hardware, while the machine firmware remains unchanged.
Talk to the Embien engineering team about your specific legacy HMI modernization project. We provide technical assessment, Sparklet integration support, and full-scope GUI modernization services.