Invisto
Invisto · your interface partner
Mailinfo@invisto.beTelefoon+32 477 42 11 14KantoorHangar K, Kortrijknlen
Alle inzichten
inzichten/HMI

LVGL voor embedded GUI's

LVGL voor embedded GUI's

Wie een toestel met een touchscherm bouwt, komt al snel bij de vraag of er Linux op moet. Voor de interface alleen is dat vaak niet nodig. LVGL is een grafische bibliotheek in C die gewoon op een microcontroller draait, en daarmee bouw je een verrassend rijke interface zonder naar een zwaardere processor te moeten overstappen.

Dat maakt LVGL nog niet voor elk project de juiste keuze. Hieronder lees je wanneer het goed past, wat de licentie voor je product betekent en hoe het zich verhoudt tot TouchGFX, Slint en Qt.

Waar LVGL vandaan komt

LVGL heette vroeger LittlevGL en was bedoeld voor systemen met weinig geheugen. Dat zie je nog altijd aan de manier waarop het in elkaar zit: de kern is hardware-onafhankelijk en draait bare metal, op een RTOS of op Linux.

Ondertussen is het flink gegroeid. Er zijn widgets, layouts, stijlen, animaties en invoerafhandeling, en het kan tekenen met of zonder hardwareversnelling. Je vindt het op kleine SPI-schermpjes, maar ook op een MPU. De interface blijft wel deel van je firmware en zit in hetzelfde programma als de rest van de besturing.

De bibliotheek zelf heet LVGL Open en is gratis onder de MIT-licentie. Daarnaast verkoopt LVGL ook LVGL Pro, een editor met een volledige workflow om schermen te ontwerpen. De code die je daarmee maakt, draait op dezelfde bibliotheek.

Wat het betekent voor je processor

Een scherm van 480×272 of 800×480 kan meestal perfect op een ruim bemeten STM32, of een vergelijkbare microcontroller van NXP of Renesas. LVGL stuurt dan rechtstreeks de displaycontroller of een grafische accelerator aan. Je hoeft geen kernel, compositor of distributie te onderhouden, het toestel is snel opgestart, en je houdt het stroomverbruik en de stuklijst van een microcontroller.

LVGL komt vooral in beeld als je scherm te veel vraagt voor een eenvoudig MCU-menu, terwijl de rest van je product Linux eigenlijk niet nodig heeft.

Waar je wel op moet letten, is het geheugen. Dat is meestal de eerste grens waar je tegenaan loopt, veel eerder dan het aantal widgets. Een scherm van 800×480 in 16-bit kleur neemt ongeveer 750 kB in voor één framebuffer, en met dubbele buffering het dubbele. Heeft je MCU genoeg SRAM of extern RAM, dan lukt dat. Maar een groter scherm, meer kleurdiepte of veel vloeiende animaties tegelijk duwen je al snel richting extern RAM of een MPU, welke bibliotheek je ook kiest.

MCU-stack naast een Linux-stack MCU Bare metal of RTOS LVGL in de firmware Displaycontroller of accelerator Kort opstarten, kleine stuklijst Past zolang het scherm in het RAM blijft MPU Linux LVGL, Slint of Qt DRM, Wayland of een backend Camera, netwerk, containers De GUI is dan niet meer de reden voor de processor
Figuur 1. Kijk eerst waarom de processor er is.Blijft het product een controller met een scherm, dan hoort de interface in de firmware. Komt er om een andere reden Linux op het toestel, dan vergelijk je LVGL opnieuw met een volwaardig applicatieframework.

Je kunt LVGL ook op Linux gebruiken. Voor een eenvoudig scherm dat fullscreen één taak doet, werkt dat prima: één proces en weinig lagen ertussen. Komen er camera’s, een browser, containers, veel opslag of meerdere programma’s op hetzelfde scherm bij, dan heb je meer aan een volwaardig applicatieframework. Op dat moment zijn Qt en Slint weer het vergelijken waard.

De licentie: gratis bibliotheek, betaalde tools

LVGL Open valt onder de MIT-licentie. In de praktijk betekent dat dat je het in gesloten commerciële firmware mag gebruiken, aanpassen en verkopen, zonder royalty per toestel en zonder je eigen code te moeten vrijgeven. Je moet alleen de copyrightvermelding en de licentietekst bij de software houden.

Bij Qt en Slint werkt dat anders. Daar kan de open-source variant gevolgen hebben voor je eigen applicatie, of heb je een commerciële licentie nodig zodra je product gesloten is.

LVGL Pro is vooral gereedschap. Je krijgt een editor, een XML-workflow, een koppeling met Figma en testautomatisering. Een klein firmwareteam heeft dat meestal niet nodig. Werk je met designers en heb je tientallen schermen, vertalingen en herbruikbare componenten, dan wordt het met de hand in C al snel onoverzichtelijk, en daar helpt Pro wel.

De Product-licentie van Pro kost momenteel 20.000 dollar per product. Je betaalt geen royalty per toestel en krijgt een handvol seats en minstens vijf jaar updates. De editor evalueren of niet-commercieel gebruiken is gratis.

De alternatieven

Er is geen alternatief dat precies hetzelfde doet. Ze verschillen in de hardware die ze ondersteunen, in hoe je het scherm opbouwt en vooral in de licentie.

TouchGFX is de C++-engine van ST, met een visuele designer, en is volledig afgestemd op STM32. Kies je sowieso voor een STM32, dan helpt de integratie met Cube en met de grafische hardware je echt vooruit, en binnen dat ecosysteem is de tooling gratis. Het nadeel is dat je aan die chipfamilie vastzit. Met LVGL kun je later makkelijker van chip wisselen.

Slint laat je het scherm declaratief beschrijven, een beetje zoals QML, met de logica in Rust of C++. Het draait op microcontrollers tot op de desktop. Het grote verschil met LVGL is de licentie. Gesloten software op desktop, mobiel en web mag royalty-vrij, zolang je Slint vermeldt, maar embedded systemen vallen daar niet onder. Voor een gesloten embedded product betaal je een royalty per toestel of een eenmalige buy-out. Je kunt Slint ook gratis gebruiken onder GPLv3, maar dan valt je product ook onder de GPL.

Qt for MCUs brengt een manier van werken zoals in QML naar krachtige microcontrollers en hoort bij Qt for Device Creation. Werkt je team al met Qt en is zwaardere tooling geen probleem, dan is het een logische keuze. Je hebt er geen Linux voor nodig, wel een commerciële Qt-licentie.

Qt op Linux zit in een andere gewichtsklasse, met networking, multimedia, IPC en een uitgebreid applicatieframework. Heeft je product die processor en Linux toch al nodig, dan is Qt vaak de beste keuze. Voor een controller die een paar schermen toont en met wat randapparatuur communiceert, is het te veel van het goede.

Licentie per framework voor een gesloten embedded product LVGL Open MIT Gesloten firmware Geen royalty per toestel TouchGFX Gratis in het STM32-ecosysteem Gebonden aan één chipfamilie Slint GPL, of commercieel Royalty per embedded device Qt LGPL op Linux, MCU’s commercieel Licentie volgt het platform
Figuur 2. Open source betekent niet overal hetzelfde.LVGL Open mag zonder royalty in gesloten firmware. Voor gesloten embedded software heb je bij Slint en bij Qt for MCUs een commerciële licentie nodig. TouchGFX is gratis zolang je bij STM32 blijft.
Framework Geschikt voor Gesloten product
LVGL Open MCU en RTOS, ook een eenvoudig Linux-scherm MIT, geen royalty per toestel
LVGL Pro Dezelfde runtime, voor grotere UI-projecten Betaalde tooling, royalty-vrij
TouchGFX HMI op STM32 Gratis binnen het ST-ecosysteem
Slint Van MCU tot Linux, declaratief GPL, of commercieel met royalty
Qt for MCUs Krachtige MCU, werken zoals in QML Via Qt for Device Creation
Qt op Linux HMI als volwaardig applicatieplatform LGPL of commercieel, afhankelijk van de modules en het product

Welke kies je?

Kan je product op een microcontroller blijven, tellen de stuklijst en de opstarttijd zwaar, en wil je niet vastzitten aan één chipfamilie, dan is LVGL een sterke keuze, zeker als je team vertrouwd is met C. De MIT-licentie is dan een mooi extraatje, want die houdt je vrij zolang het toestel meegaat.

Wordt het toch een STM32 en wil je de grafische hardware, de evaluatieborden en de designer als één pakket gebruiken, dan is TouchGFX het bekijken waard.

Slint past als je een even lichte stack wilt, maar het scherm liever declaratief opbouwt, bijvoorbeeld naast Rust of C++, en de royalty per toestel in je kostprijs past.

Qt for MCUs is interessant als een high-end microcontroller volstaat en je team Qt al kent. Qt op Linux kies je als je de processor en Linux om andere redenen al nodig hebt, en het scherm moet samenwerken met netwerk, multimedia, camera’s of meerdere processen.

Het helpt om eerst naar het product te kijken en pas daarna naar het framework. Hoe groot wordt het scherm, en past de framebuffer in het geheugen van je MCU? Heb je Linux nodig voor iets anders dan de interface? Wil je bij een volgende hardwareversie van leverancier kunnen wisselen? Werken designers en developers samen aan de schermen? En welk licentiemodel past bij de levensduur van je toestel: MIT, een gratis tool van de chipfabrikant zolang je bij die familie blijft, of een royalty per toestel?

Bij Invisto bekijken we dat samen met de rest van het toestel: de elektronica, de processor, de firmware of de Linux-BSP en de updates.

Twijfel je welk GUI-framework bij je toestel past? Laten we eens sparren.

Plan een gesprek