本帖最后由 风精灵 于 2025-9-11 09:02 编辑
背景随着嵌入式设备对图形用户界面(GUI)的需求不断提升,选择一款高效、轻量且易于移植的GUI框架已成为项目开发中的关键环节。LVGL与Qt作为嵌入式领域广泛使用的两种GUI解决方案,在架构设计、资源占用及适用场景等方面存在明显区别: LVGL 是一款专为嵌入式及资源受限设备设计的轻量级开源图形库。其具备高度模块化特性,内存占用极低(最低仅需几十KB RAM和Flash空间),支持多种显示与输入设备驱动,并可在无操作系统环境下运行,尤其适合对性能、功耗和成本有严格要求的嵌入式应用场景。 Qt 是一套功能丰富的跨平台应用开发框架,除GUI组件外,还提供网络、数据库、多媒体等完整功能模块。尽管Qt for Embedded Linux功能全面,但其通常需要更多的系统资源(包括内存和存储空间),更适合硬件资源较为充裕的嵌入式平台,例如工业人机界面(HMI)、车载信息娱乐系统
本文档以LVGL(Light and Versatile Graphics Library)8.2版本的移植为例,旨在为开发者提供一套清晰实用的轻量化图形界面移植指南,帮助用户快速构建流畅、美观的嵌入式图形应用。 1. 源码获取来源git clone -b release/v8.2 https://github.com/lvgl/lv_port_linux_frame_buffer.git git clone -b release/v8.2 https://github.com/lvgl/lvgl.git git clone -b release/v8.2 https://github.com/lvgl/lv_drivers.git 将lvgl和lv_drivers文件夹拷贝到lv_port_linux_frame_buffer文件夹下。 2. 相关文件修改注意:分辨率设置以板卡默认适配的MIPI屏幕规格为准进行修改。 2.1 修改lv_port_linux_frame_buffer/lv_conf.h文件
elf@ubuntu:~/work/lvgl8.2$ vi lv_port_linux_frame_buffer/lv_conf.h


 2.2 修改lv_port_linux_frame_buffer/lv_drv_conf.h文件
elf@ubuntu:~/work/lvgl8.2$ vi lv_port_linux_frame_buffer/lv_drv_conf.h




 2.3 修改lv_port_linux_frame_buffer/main.c文件
elf@ubuntu:~/work/lvgl8.2$ vi lv_port_linux_frame_buffer/main.c
 2.4 修改lv_port_linux_frame_buffer/Makefile文件
elf@ubuntu:~/work/lvgl8.2$ vi lv_port_linux_frame_buffer/Makefile
 3.源码编译。在lv_port_linux_frame_buffer目录下执行make -j4编译源码 elf@ubuntu:~/work/lvgl8.2$ cd lv_port_linux_frame_buffer/
elf@ubuntu:~/work/lvgl8.2/lv_port_linux_frame_buffer$ make -j4最后会在lv_port_linux_frame_buffer目录下生成demo可执行文件
elf@ubuntu:~/work/lvgl8.2/lv_port_linux_frame_buffer$ ls demo
demo
4. 测试
- 使用u盘拷贝demo到开发板中。
- 关闭掉Weston桌面。
root@elf2-buildroot:~# /etc/init.d/S49weston stop
root@elf2-buildroot:~# ./demo
显示效果如下: 
|