LVGL(1)--介绍与资料汇总

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周的发布周期。在每月的第一个和第三个 星期二 :

  1. (基于新功能)从 master 分支创建 主要、次要或错误修复 的版本
  2. 将 master 分支合并到 release/vX 中
  3. 发布后立即将 dev 分支合并到 master 分支
  4. 在接下来的2周内,测试 master 分支的新功能
  5. 错误修复直接合并到 master 中
  6. 2周后,再从第一步重新开始迭代

LVGL版本标签


每个版本都会创建 vX.Y.Z 之类的标签,如: v7.9.0 。

LVGL变更日志


版本更改记录在 ./lvgl/CHANGELOG.md 中。

LVGL版本兼容


在核心存储库中,每个主要版本都有一个分支(例如 release/v6 )。该主要版本的所有次要版本和修补程序版本都在此处合并

这样就可以添加稳定的较旧版本,而无需打扰较新的版本

所有主要版本的官方支持周期为1年。

参考资料

  1. LVGL官网
  2. 在线文档
  3. 在线文档2
  4. 论坛
  5. 获取LVGL库
  6. 获取模拟器(VS工程)
  7. 获取LVGL 驱动(lv_drivers)
  8. 获取LVGL演示demo(lv_examples)
  9. 在线,图片转换成C数组或BIN格式
  10. 在线,字体转换链接


  11. NXP UI编辑软件 GUI Guider
  12. LVGL UI编辑器 SquareLine Studio 
  13. LVGL UI编辑软件 Edgeline
  14.  LVGL's 博客
  15. Lvgl Builder
  16. WatchX LVGL手表
  17. lv_port_stm32f769_disco
  18.  Launcher_lvgl 使用LVGL制作启动器
  19. 微雪学堂–littlevGL系列教程
  20. 手把手教你学LittleVGL
  21.  littlevGL:移植到STM32
  22.  [LVGL学习之旅 01]移植LVGL到STM32
  23.  Qt 编译 littlevGL
  24.  emwin/touchgfx/lvgl嵌入式GUI测试
  25.  上传两个两大体系GUI程序,emWin与littleVGL的巅峰对决
  26.  管中窥豹,从小米手环4、华为GT智能手表看如何选择合适的主控MCU
  27. LVGL汽车仪表绘制过程
  28. LVGL MCU_Font 自动字模提取工具
  29. lvgl 库 V7版本相关应用
  30. LVGL版本从6.0升级到7.8
  31. LVGL Edgeline 教程
  32. LittleVGL v7.5.0在STM32F103x上的移植
  33. LVGL仿安卓启动器设计
  34. LVGL学习记录
  35. LVGL分析-画面刷新
  36. 基于LVGL7.5实现 tp手势识别
  37. LVGL7.5版本 触摸与键盘输入(API)对接(一)
  38. LittleVGL (LVGL)干货入门教程
  39. LVGL(7.5) 控件响应实体按键
  40. littleVGL学习笔记
  41. LGVL7.0教程
  42. LVGL学习笔记
  43. LITTELVGL 基础控件学习篇
  44. 银杏知识库 LVGL
  45. 极客笔记-LVGL教程
  46. 朝气蓬勃:LVGL GUI学习
  47. 一些lvgl学习博客,有空看看
  48. 百问网LVGL中文教程手册文档 V7
  49. 百问网LVGL中文教程手册文档 V8
  50. Littlevgl教程
  51. 手环demo
  52. 作者: 匠心源
  53. 仙剑情缘 little VGL
  54. littleVGL LVGL学习使用lv_font_conv离线工具 Font字体 FontAwesome图标字体的使用
  55. LVGL FONT 字体
  56. LVGL之label控件遇到问题记录(二)
  57. LittlevGL中使用FreeType问题
  58. LVGL7.11中使用freetype库动态加载显示字体
  59. LVGL学习之路——基于lv_lib_freetype库的TTF字体文件动态加载中文字体(阿里普惠字体)
  60. LVGL学习之路——模拟器实现简易计算器
  61. LVGL Font 自动字体提取
  62. 基于littlevgl的多窗口程序实现
  63. LittlevGL 切换界面的演示
  64. littlevgl 编程技巧----如何在ui界面结束时销毁数据
  65. 字体和汉字 移植
  66. LVGL 优化帧率技巧
  67. f429 discovery开发版 LVGL移植(带操作系统)
  68. 基于LittlevGL开源GUI库的多级菜单界面设计
  69. LVGL 双缓冲
  70. LVGL移植到AT403
  71. GD350移植LVGL
  72. 以CMSIS-RTOS2接口为操作系统界面,改进的LVGL为图形界面
  73. 8910DM_LVGL
  74. 支持离线地图和轨迹记录的GPS自行车车速表
  75. littlevgl 的 GUI 生成器。
  76. 基于安卓的对讲机写频软件
  77. 收环
  78. LVGL自定义指针表盘

  79. 学了3天的littleVGL做了一个手表

  80. IT民工biubiu 

  81. 基于LVGL的手表UI架构设计演示视频

  82. LVGL7.0高级界面开发-自定义键盘

  83. LVGL7.0高级界面开发-动态背景

  84. LVGL使用华为鸿蒙字体

  85. littlevgl_7.11源码分析

  86. stm32 LTDC画面撕裂解决方法

  87. stm32 DMA2D使用中断LVGL,提高LVGL帧率

  88. Art_Pi学习笔记5.1:优化LVGL软件包提高刷屏的速度

  89. 多次进入触摸屏次级页面后,会出现卡死的问题

  90. 小明分享|LVGL调试日志

  91. GUI GUIDER 应用笔记

  92. 以CMSIS-RTOS2接口为操作系统内核,改进的LVGL为图形界面

  93. 中文键盘拼音输入法

  94. 使用lvgl gui 的 树莓派 SDR 接收器

  95. LVGL 的 开源中文字体

  96. LVGL SPI FLASH 外部字库实现方法

  97. littlevgl 6.0 外部spiflash 显示中文

  98. lvgl - 移植文件系统

  99. ec100y lvgl

  100. ec600n

  101. OpenGD77

  102. 开源GD77

  103. GP77 CPS

  104. littlevgl_7.11源码分析(1)--Apple的学习笔记

  105. 玩玩littlevgl移植到stm32--Apple的学习笔记

  106. littlevgl_7.11源码分析(2)--Apple的学习笔记

  107. littlevgl读取sd卡FatFS图像文件--Apple的学习笔记

  108. littlevgl_7.11源码分析(3)--Apple的学习笔记

  109. littlevgl_7.11源码分析(4)--Apple的学习笔记

  110. lvgl源码分析5(圆角矩形绘制算法)--Apple的学习笔记

  111. lvgl显示速度优化及界面工具试用--Apple的学习笔记

  112. lvgl touch在stm32移植及动画应用--Apple的学习笔记 触摸

  113. 大总结:littlevgl GUI引擎源码学习--Apple的学习笔记

  114. ESP32开发学习 LVGL Littlevgl 使用文件系统

  115. 使用lv_font_conv离线工具 Font字体 FontAwesome图标字体的使用
  116. LVGL Littlevgl 使用文件系统加载PNG图片解码显示
  117. LVGL Littlevgl 解码显示JPG图片三种方式JPG_SJPG_C Array
  118. LVGL Littlevgl 加载外部SD卡字库显示
  119. LVGL Littlevgl 创建显示二维码
  120. LVGL Littlevgl 使用文件系统加载BMP图片解码显示
  121. LittlevGL图形框架扩展 - JPEG图片的支持

  122. LittlevGL图形框架扩展 - 条形码的支持

  123. lvgl使用外部SRAM,图像边缘显示模糊重影

  124. ××× 基于LVGL的手表UI架构设计

  125. ×××基于littlevgl设计的手表模拟时钟表盘

  126. 启明云端基于乐鑫ESP32-S2的智能86盒新品发布--WT-86-32-3ZW1

  127. 基于LVGL7.5实现 tp手势识别

  128. LVGL笔记(6)-电子相册使用手势切换图片(windows仿真)

  129. 解决lvgl滑动时容易误触点击事件

  130. LVGL 界面跳转逻辑的设计与实现

  131. LVGL 7.11 tileview界面循环切换

  132. LVGL学习(3):页面切换原理和页面管理实现

  133. LVGL滑动放大

  134. 【LVGL】学习笔记--(3)界面切换以及显示优化

  135. 开源UI框架LVGL——实现页面切换例程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值