1. 简介
之前叫littlevGL,后来更名为LVGL。
LittlevGL 项目作者是来自匈牙利首都布达佩斯的 Gábor Kiss-Vámosi 。Kiss 在2009年开始写 LittlevGL,2016年将其重写并发布在 GitHub 上。
2. 支持平台
- STM32F1, STM32F3, STM32F4, STM32F7
- Microchip DSPIC33, PIC24, PIC32MX, PIC32MZ
- NXP Kinetis, LPC, iMX
- Linux frame buffer (/dev/fb)
- Raspberry Pi
- Espressif ESP32
- Nordic nrf52
- Quectell M66
基本上,每个现代控制器(肯定必须要能够驱动显示器)都适合运行LVGL。LVGL的最低运行要求很低:
- 16、32或64位微控制器或处理器
- 最低 16 MHz 时钟频率
- Flash/ROM::对于非常重要的组件要求 >64 kB(建议 > 180 kB)
- RAM
- 静态 RAM 使用量:~2 kB,取决于所使用的功能和对象类型
- 堆栈: > 2kB(建议 > 8 kB)
- 动态数据(堆):> 2 KB(如果使用多个对象,则建议 > 16 kB)。由 lv_conf.h 中的 LV_MEM_SIZE 宏进行设置。
- 显示缓冲区:> “水平分辨率”像素(建议 > 10× “水平分辨率” )
- MCU 或外部显示控制器中的一帧缓冲区
- C99或更高版本的编译器
- 具备基本的C(或C ++)知识:指针,结构,回调…
可以看到,我们常见的单片机几乎都支持(16bit及以上),之所以能够同时支持这么多平台是因为littlevGL对硬件的要求没有太高,一般来说只要能驱动显示屏且Flash大于64KB,RAM大于20KB的单片机都可以使用。
3. 优势特点
- 强大的构建块按钮,图表,列表,滑块,图像等。
- 带有动画,抗锯齿,不透明度,平滑滚动的高级图形
- 支持各种输入设备,包括触摸屏,鼠标,键盘,编码器,按钮等。
- 支持单色和彩色等多种同时显示方式
- 支持UTF-8编码的多语言
- 完全可定制的图形元素
- 不限定MCU平台
- 可扩展以在很少的内存下运行(64 kB闪存,10 kB RAM)
- 支持操作系统,支持外部存储器和GPU
- 单帧缓冲区操作,先进的图形效果
- 用C语言编写以实现最大的兼容性
- 无需嵌入式硬件即可在PC上开发的模拟器
- 有着丰富的教程,示例,主题
- 文档和API参考
4. 比较
LittlevGL
开源,NXP在推。
MiniGUI
国产,商用不免费。
AWTK
全称 Toolkit AnyWhere,是 周立功公司开发的开源 GUI 引擎。
TouchGFX和STemWin(emWin 意法半导体定制版)
对于意法半导体旗下的MCU、SOC支持的好。
TouchGFX以界面华丽,流畅以及强劲的 TouchGFX Designer著称。 现在已经被ST收购,在ST MCU、MPU可免费使用。官方地址:http://touchgfx.com/en/。TouchGFX在MCU系统上运行的界面非常炫,堪比手机的APP界面.使用TouchGFX开发STM32界面,有2种方法:一是利用TouchGFX Designer软件,支持图片和控件拖拽、可快速生成在KEIL或IAR等IDE中可打开的项目工程;另一种方法是,STM32CUBEMX 5.0版本增加了对TouchGFX的支持,可以使用CubeMX开发TouchGFX应用。
TouchGFX是一个用C++语言编写的软件框架,可解锁嵌入式硬件上的图形用户交互界面,华为手表漂亮的表盘就是这玩意做的[13]。
ucGui
emWin的uCOS-II 、uCOS-III定制版。
EmbeddedWizard
德国TARA System公司开发的,收费很贵。
Qt for MCU
刚出,支持的硬件还不多。
5. lvgl 模拟器介绍
lvgl的模拟器配合不同的 IDE软件可以运行在不同的操作系统上,比如 Windows, Linux or OSX,下面是 littleVGL 所支持的 IDE 软件种类

5.1 下载visual_studio版本的lvgl模拟器
方法一:通过git命令下载
git clone --recurse-submodules https://github.com/lvgl/lv_sim_visual_studio.git

这可以克隆lv_sim_visual_studio及其所需的几个子模块submodules,
什么是git submodules?有这么个例子:
每个公司的系统都会有一套统一的系统风格,或者针对某一个大客户的多个系统风格保持统一,而且如果风格改动后要同步到多个系统中;这样的需求几乎每个开发人员都遇到,下面看看各个层次的程序员怎么处理:
假如对于系统的风格需要几个目录:css、images、js。
普通程序员,把最新版本的代码逐个复制到每个项目中,如果有N个项目,那就是要复制N x 3次;如果漏掉了某个文件夹没有复制…@(&#@#。
文艺程序员,使用Git Submodule功能,执行:git submodule update,然后冲一杯咖啡悠哉的享受着。
lv_sim_visual_studio仓库需要依赖于:lvgl、lv_drivers、lv_examples。

lvgl、lv_drivers、lv_examples是lvgl官方维护的三个GitHub仓库。因为lv_sim_visual_studio仓库要用到lvgl、lv_drivers、lv_examples三个仓库的内容,照理说lvgl官方应该把这三个仓库里面的内容也一起上传到lv_sim_visual_studio仓库中。
但是这样做的话,之后lvgl、lv_drivers、lv_examples仓库内容有更新的话,就需要手动同步lv_sim_visual_studio里的相关内容,显然很不方便。所以这里使用了Git Submodule功能,这在克隆lv_sim_visual_studio_sdl 仓库时自动下载其相关的3个子模块(lvgl、lv_drivers、lv_examples)。
方法二:下载源码压缩包
如果方法一下载不成功,则可以使用方法二。
下载lv_sim_visual_studio压缩包:

此时lv_sim_visual_studio_sdl \visual_studio_2017_sdl目录下的lvgl、lv_drivers、lv_examples三个文件夹的内容都是空的,所以需要分别从lvgl的GitHub仓库上下载lvgl、lv_drivers、lv_examples,并分别拷贝到lv_sim_visual_studio_sdl 目录的对应文件夹下。

5.2 编译LVGL模拟器工程
打开刚才git上下载的模拟器,结构如下,双击打开lv_sim_visual_studio_sdl.sln,前提是已经安装好vs2019,没有安装VS2019的,看上一步

打开后界面如下 ,注意这里平台要选择X64,默认为ARM,会编译出错Output\Debug\ARM\Build\LVGL.Simulator\lv_disp.obj : fatal error LNK1112: 模块计算机类型“x86”与目标计算机类型“ARM”冲突

单击本地Windows调试器进行编译 ,编译成功后运行界面,弹出两个窗口,一个调试输出窗口,一个模拟器窗口.

LVGL更新发行规则
lvgl核心存储库遵循语义版本控制规则:
- 不兼容的API的主要版本更改。例如。 v5.0.0,v6.0.0
- 次要版本,用于新的但向后兼容的功能。例如。 v6.1.0,v6.2.0
- 修补程序版本,用于向后兼容的错误修复。例如。 v6.1.1,v6.1.2
LVGL仓库分支说明
核心存储库至少具有以下分支:
master分支,最新版本,补丁直接在这里合并。dev分支,开发人员在此处合并新功能,直到将它们合并到master分支为止。release/vX分支,主要版本的稳定版本
LVGL发布周期
LVGL有2周的发布周期。在每月的第一个和第三个 星期二 :
- (基于新功能)从
master分支创建 主要、次要或错误修复 的版本 - 将
master分支合并到release/vX中 - 发布后立即将
dev分支合并到master分支 - 在接下来的2周内,测试
master分支的新功能 - 错误修复直接合并到
master中 - 2周后,再从第一步重新开始迭代
LVGL版本标签
每个版本都会创建 vX.Y.Z 之类的标签,如: v7.9.0 。
LVGL变更日志
版本更改记录在 ./lvgl/CHANGELOG.md 中。
LVGL版本兼容
在核心存储库中,每个主要版本都有一个分支(例如 release/v6 )。该主要版本的所有次要版本和修补程序版本都在此处合并
这样就可以添加稳定的较旧版本,而无需打扰较新的版本
所有主要版本的官方支持周期为1年。
参考资料
- LVGL官网
- 在线文档
- 在线文档2
- 论坛
- 获取LVGL库
- 获取模拟器(VS工程)
- 获取LVGL 驱动(lv_drivers)
- 获取LVGL演示demo(lv_examples)
- 在线,图片转换成C数组或BIN格式
- 在线,字体转换链接
NXP UI编辑软件 GUI Guider- LVGL UI编辑器 SquareLine Studio
- LVGL UI编辑软件 Edgeline
- LVGL's 博客
- Lvgl Builder
- WatchX LVGL手表
- lv_port_stm32f769_disco
- Launcher_lvgl 使用LVGL制作启动器
- 微雪学堂–littlevGL系列教程
- 手把手教你学LittleVGL
- littlevGL:移植到STM32
- [LVGL学习之旅 01]移植LVGL到STM32
- Qt 编译 littlevGL
- emwin/touchgfx/lvgl嵌入式GUI测试
- 上传两个两大体系GUI程序,emWin与littleVGL的巅峰对决
- 管中窥豹,从小米手环4、华为GT智能手表看如何选择合适的主控MCU
- LVGL汽车仪表绘制过程
- LVGL MCU_Font 自动字模提取工具
- lvgl 库 V7版本相关应用
- LVGL版本从6.0升级到7.8
- LVGL Edgeline 教程
- LittleVGL v7.5.0在STM32F103x上的移植
- LVGL仿安卓启动器设计
- LVGL学习记录
- LVGL分析-画面刷新
- 基于LVGL7.5实现 tp手势识别
- LVGL7.5版本 触摸与键盘输入(API)对接(一)
- LittleVGL (LVGL)干货入门教程
- LVGL(7.5) 控件响应实体按键
- littleVGL学习笔记
- LGVL7.0教程
- LVGL学习笔记
- LITTELVGL 基础控件学习篇
- 银杏知识库 LVGL
- 极客笔记-LVGL教程
- 朝气蓬勃:LVGL GUI学习
- 一些lvgl学习博客,有空看看
- 百问网LVGL中文教程手册文档 V7
- 百问网LVGL中文教程手册文档 V8
- Littlevgl教程
- 手环demo
- 作者: 匠心源
- 仙剑情缘 little VGL
- littleVGL LVGL学习使用lv_font_conv离线工具 Font字体 FontAwesome图标字体的使用
- LVGL FONT 字体
- LVGL之label控件遇到问题记录(二)
- LittlevGL中使用FreeType问题
- LVGL7.11中使用freetype库动态加载显示字体
- LVGL学习之路——基于lv_lib_freetype库的TTF字体文件动态加载中文字体(阿里普惠字体)
- LVGL学习之路——模拟器实现简易计算器
- LVGL Font 自动字体提取
- 基于littlevgl的多窗口程序实现
- LittlevGL 切换界面的演示
- littlevgl 编程技巧----如何在ui界面结束时销毁数据
- 字体和汉字 移植
- LVGL 优化帧率技巧
- f429 discovery开发版 LVGL移植(带操作系统)
- 基于LittlevGL开源GUI库的多级菜单界面设计
- LVGL 双缓冲
- LVGL移植到AT403
- GD350移植LVGL
- 以CMSIS-RTOS2接口为操作系统界面,改进的LVGL为图形界面
- 8910DM_LVGL
- 支持离线地图和轨迹记录的GPS自行车车速表
- littlevgl 的 GUI 生成器。
- 基于安卓的对讲机写频软件
- 收环
- 使用lv_font_conv离线工具 Font字体 FontAwesome图标字体的使用
- LVGL Littlevgl 使用文件系统加载PNG图片解码显示
- LVGL Littlevgl 解码显示JPG图片三种方式JPG_SJPG_C Array
- LVGL Littlevgl 加载外部SD卡字库显示
- LVGL Littlevgl 创建显示二维码
- LVGL Littlevgl 使用文件系统加载BMP图片解码显示



6万+

被折叠的 条评论
为什么被折叠?



