1. LVGL — Light and Versatile Embedded Graphics Library

LVGL is a free and open-source library providing an efficient GUI for embedded systems.

1.1. Integration of LVGL in SO3

The initial port of LVGL to SO3 was done by Nikolaos Garanis in the context of his Bachelor project; some details are available on our discussion forum and in a short video.

SO3 integrates LVGL v8, and the lv_demo_widgets demo is fully supported. On the kernel side LVGL draws to the SO3 framebuffer device (devices/fb/, exposed through /dev — see Kernel Internals); the LVGL library itself is built into the user space (usr/lib/lvgl) and used by the lvgl_demo, lvgl_perf and lvgl_benchmark applications.

1.2. Running LVGL under QEMU

Note

Build the kernel with a framebuffer-enabled configuration, for example virt64_fb_defconfig, and the user space with the LVGL apps.

The framebuffer needs a real display window, so start the emulator with the graphical launch script instead of ./st:

./stg

QEMU opens a window that acts as the framebuffer; launch an LVGL application from the so3% prompt to draw into it.