1、LVGL初探:什么是LVGL、LVGL的历史与优势、LVGL在嵌入式领域的地位、如何获取LVGL源码
1.1 什么是LVGL?
LVGL,全称是Light and Versatile Graphics Library。翻译过来就是「轻量且通用的图形库」。说白了,它就是一套专门给嵌入式设备用的UI框架。
我刚开始接触嵌入式GUI时,最头疼的就是显示问题。用裸机画点、画线,做个按钮要写几百行代码。后来遇到LVGL,才发现原来嵌入式也能做出手机App那样的界面。
LVGL的核心特点:
- 轻量级——最低只需要64KB Flash和16KB RAM就能跑起来
- 组件丰富——按钮、滑块、图表、键盘等30+控件开箱即用
- 硬件无关——只要你有显示器和输入设备,就能用
- 开源免费——MIT协议,商用也没问题
一句话总结:LVGL就是嵌入式界的Qt,但比Qt轻得多。
1.2 LVGL的历史与优势
LVGL最初叫LittlevGL,是匈牙利工程师Gábor Kiss在2016年发起的项目。我记得当时它还是个很简陋的库,连中文显示都不支持。但到了2019年,LVGL 7.0版本发布,加入了样式系统,这才真正火起来。
为什么会发展这么快?
你想想看,嵌入式设备越来越智能,带屏幕的产品越来越多。智能手表、家电面板、工控设备……哪个不需要好看的界面?但传统的嵌入式GUI方案,要么太贵(商业授权),要么太难用(裸机开发)。LVGL正好填补了这个空白。
LVGL相比其他方案的优势:
| 对比项 | LVGL | emWin | TouchGFX | 裸机开发 |
|---|---|---|---|---|
| 授权费用 | 免费(MIT) | 商业收费 | 部分免费 | 无 |
| 内存需求 | 低(16KB RAM起) | 中 | 高 | 极低 |
| 控件数量 | 30+ | 20+ | 20+ | 需自己实现 |
| 学习曲线 | 平缓 | 中等 | 陡峭 | 陡峭 |
| 社区活跃度 | 高(GitHub 15k+ Star) | 低 | 中 | 无 |
我的经验:如果你做的是小批量产品,LVGL绝对是首选。我曾经给一个客户做智能家居面板,用LVGL从零到出样只用了两周。要是用商业方案,光谈授权就得一个月。
1.3 LVGL在嵌入式领域的地位
现在LVGL在嵌入式GUI领域是什么地位?
这么说吧,如果你去逛GitHub,搜索「embedded GUI」,LVGL的Star数排第一。在STM32、ESP32这些主流平台上,LVGL几乎成了标配。
我参加过几次嵌入式展会,发现一个现象:10个带屏幕的嵌入式方案里,至少有6个在用LVGL。为什么?
- 生态完善——有官方的SquareLine Studio拖拽工具,不会写代码也能做UI
- 跨平台——STM32、ESP32、Linux、Windows模拟器都能跑
- 持续更新——每年一个大版本,bug修复很及时
- 中文支持好——内置中文字库,不用自己折腾编码
注意:LVGL虽然强大,但不是万能的。如果你的MCU只有4KB RAM,那还是老老实实用裸机画点吧。LVGL最低要求16KB RAM,建议64KB以上才用得舒服。
1.4 如何获取LVGL源码
获取LVGL源码很简单,我一般用两种方式:
方式一:从GitHub直接下载
打开浏览器,访问:
https://github.com/lvgl/lvgl
点击绿色的「Code」按钮,选择「Download ZIP」。解压后就能看到源码了。
方式二:使用Git克隆
如果你像我一样习惯用命令行:
git clone https://github.com/lvgl/lvgl.git
cd lvgl
git checkout v8.3.0 # 切换到稳定版本
我的建议:不要直接用master分支,那个是开发版,可能有bug。我一般用release版本,比如v8.3.0或v9.0.0。你可以在GitHub的「Releases」页面找到所有正式版本。
源码目录结构
下载后你会看到这样的结构:
lvgl/
├── src/ # 核心源码
│ ├── core/ # 核心对象和事件
│ ├── draw/ # 绘图引擎
│ ├── widgets/ # 控件库
│ └── misc/ # 工具函数
├── examples/ # 示例代码
├── docs/ # 文档
└── lv_conf_template.h # 配置文件模板
嗯,这里要注意:lv_conf_template.h这个文件很重要。你需要把它复制到项目里,重命名为lv_conf.h,然后根据你的硬件配置修改参数。比如屏幕分辨率、颜色深度、内存大小等。
避坑指南:我曾经忘记配置LV_COLOR_DEPTH,结果屏幕颜色全乱套了。后来排查了半天才发现是颜色深度没设对。所以拿到源码后,第一件事就是检查配置文件。
1.5 本章小结
这一章我们聊了:
- LVGL是什么——轻量级嵌入式GUI框架
- 它的历史——从2016年的小项目到现在的行业标杆
- 它的优势——免费、轻量、控件丰富
- 它在嵌入式领域的地位——主流选择,生态完善
- 如何获取源码——GitHub下载或Git克隆
下一章,我们会真正动手搭建开发环境,让LVGL在你的板子上跑起来。到时候你会发现,原来嵌入式UI开发可以这么简单。