1. LVGL 概述与环境搭建
大家好,我是你们这趟 LVGL 移植之旅的向导。做嵌入式 UI 有些年头了,踩过的坑、填过的土,今天都拿出来跟你们聊聊。
先说说 LVGL 是什么。全称是 Light and Versatile Graphics Library,轻量级、多功能的图形库。说白了,就是一套专门给嵌入式设备用的 GUI 框架。你想想看,MCU 资源就那么点,跑不了 Qt,也跑不了 Android,但你又想做个漂亮的界面——这时候 LVGL 就派上用场了。
我最早接触 LVGL 是在一个智能家居项目里。客户要求 3 天出原型,用传统点屏方式根本来不及。后来用了 LVGL,两天就把主界面搭完了。嗯,从那以后我就成了它的忠实用户。
1.1 为什么选择 LVGL
市面上的嵌入式 GUI 方案不少,比如 emWin、TouchGFX、LittlevGL(LVGL 的前身)。为什么我推荐 LVGL?
| 特性 | LVGL | emWin | TouchGFX |
|---|---|---|---|
| 开源协议 | MIT(免费商用) | 商业授权 | 部分免费 |
| 内存占用 | RAM > 8KB 即可 | RAM > 16KB | RAM > 32KB |
| 控件丰富度 | 30+ 内置控件 | 20+ | 25+ |
| 社区活跃度 | GitHub 12k+ Star | 闭源 | 中等 |
| 学习曲线 | 平缓 | 中等 | 较陡 |
你看这个表格就清楚了。LVGL 最大的优势是 MIT 协议,商用不花钱。我在一个量产项目里用过 emWin,光授权费就花了好几万。换成 LVGL,这笔钱直接省了。
另外它的内存要求极低。8KB RAM 就能跑起来,这在 STM32F103 这种老芯片上都能玩得转。我有个同事用 STM32F407 + 3.5 寸屏做温控器,LVGL 跑得飞起。
1.2 源码获取
获取 LVGL 源码很简单,去 GitHub 就行。
git clone https://github.com/lvgl/lvgl.git
cd lvgl
git checkout v8.3.0 # 建议用稳定版
我个人习惯用 v8.3.x 系列,这个版本比较成熟,文档也全。v9.0 虽然新,但有些 API 变了,新手容易踩坑。
项目结构大概这样:
- src/ — 核心源码,包括控件、绘图、输入设备等
- examples/ — 官方示例,入门必看
- docs/ — 文档,但建议直接看官网
- lv_conf_template.h — 配置文件模板,移植时改这个
1.3 开发板选型建议
选开发板这事,我踩过不少坑。给你几个建议:
- 入门级: STM32F407VET6 + 3.5 寸 320x480 屏。便宜、资料多、社区支持好。
- 进阶级: ESP32-S3 + 4.3 寸 800x480 屏。带 Wi-Fi/蓝牙,适合物联网项目。
- 高性能: i.MX RT1052 + 5 寸 1024x600 屏。跑 LVGL 丝滑流畅。
我曾经用 STM32F103C8T6(蓝 pill)跑 LVGL,虽然能点亮,但帧率只有 15fps,滑动卡顿。后来换了 F407,直接到 40fps。所以 主频最好 100MHz 以上,RAM 至少 64KB。
| 芯片型号 | 主频 | RAM | 推荐用途 |
|---|---|---|---|
| STM32F103 | 72MHz | 20KB | 简单界面(不推荐) |
| STM32F407 | 168MHz | 192KB | 入门首选 |
| ESP32-S3 | 240MHz | 512KB | 物联网项目 |
| i.MX RT1052 | 600MHz | 512KB | 高性能应用 |
1.4 编译工具链安装
工具链这块,我分平台说。
Windows 用户
推荐用 STM32CubeIDE,它集成了 GCC 工具链和调试器,开箱即用。或者用 Keil MDK,但需要付费。
# 安装 ARM GCC 工具链(如果不用 IDE)
下载地址:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm
选择 .exe 安装包,一路下一步即可
Linux / macOS 用户
用包管理器安装:
# Ubuntu / Debian
sudo apt-get install gcc-arm-none-eabi
# macOS
brew install gcc-arm-embedded
安装完后验证一下:
arm-none-eabi-gcc --version
# 输出类似:arm-none-eabi-gcc (GNU Arm Embedded Toolchain) 10.3-2021.10
1.5 知识体系总览
下面这张图,是我自己梳理的 LVGL 移植知识体系。你跟着这个路线走,不会迷路。
这张图把整个课程的知识结构串起来了。你会发现,环境搭建是基础中的基础。后面所有内容都建立在这个地基上。
1.6 本章小结
这一章我们聊了:
- LVGL 是什么——轻量级嵌入式 GUI 库
- 为什么选它——开源免费、内存占用低、控件丰富
- 怎么获取源码——GitHub clone,用稳定版
- 开发板怎么选——F407 入门,ESP32 做物联网,RT1052 上性能
- 工具链怎么装——Windows 用 CubeIDE,Linux/macOS 用 ARM GCC
环境搭好了,下一章我们就开始真正动手移植。记住,工具链装好之后,先编译一下官方示例,确认环境没问题再往下走。我见过太多人跳过这一步,结果后面 debug 半天发现是工具链没装对。
核心要点: 环境搭建是移植工作的基石。花 30 分钟把工具链和源码准备好,后面能省 3 小时的 debug 时间。别问我怎么知道的——都是泪。