#01 LVGL是什么

LVGL的作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C语言编写,以实现最大的兼容性(与C ++兼容),模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计,同时LVGL作为一个图形库,它自带着接近三十多种小工具可以供开发者使用。这些强大的构建块按钮搭配上带有非常丝滑的动画以及可以做到平滑滚动的高级图形,同时兼具着不高的配置要求以及开源属性,显著的优势使得LVGL蔚然成风,成为广大开发者在选择GUI时的第一选择。

主要特性

  • 强大的构建块,如按钮,图表,列表,滑块,图像等。
  • 高级图形动画,抗锯齿,不透明度,平滑滚动
  • 各种输入设备,如触摸板、鼠标、键盘、编码器等
  • 多语言支持与UTF-8编码
  • 多显示器支持,即使用更多的TFT,单色显示器同时
  • 完全可定制的图形元素与css类样式
  • 硬件独立与任何微控制器或显示器使用
  • 可扩展,使用少量内存(64kb Flash, 16kb RAM)
  • 支持操作系统、外部内存和GPU,但不是必需的
  • 单帧缓冲操作,甚至与高级图形效果
  • 用C编写的最大兼容性(c++兼容)
  • 模拟器在没有嵌入式硬件的PC上开始嵌入式GUI设计
  • 绑定到MicroPython
  • 教程,例子,快速GUI设计的主题
  • 文档可以在线和PDF格式获取
  • 麻省理工学院许可下的免费和开源

配置要求

基本上,每个能够驱动显示器的现代控制器都适合运行 LVGL。最低要求是:

  • 16、32 或 64 位微控制器或处理器
  • 建议使用 16 MHz 时钟速度
  • 闪存/ROM:> 64 kB 用于非常重要的组件 (> 建议使用 180 kB)
  • RAM:
    静态 RAM 使用量:0~2 kB,取决于使用的功能和对象类型
    堆: > 2kB (> 建议使用 8 kB)
    动态数据(堆): > 2 KB (> 如果使用多个对象,建议使用 16 kB). 在 lv_conf.h 文件中配置 LV_MEM_SIZE 生效。
    显示缓冲区:> “水平分辨率”像素(推荐> 10 × 10ד水平分辨率”)
    MCU 或外部显示控制器中的一个帧缓冲器
  • C99 或更新的编译器
  • 具备基本的 C(或 C++)知识

一块能驱动显示屏且Flash大于64KB,RAM大于20KB的单片机都可以支持运行LVGL。这样也就说明只需要是我们经常用于开发的单片机几乎都可以支持(16bit及以上)LVGL,LVGL能够同时被这么多平台支持的主要原因是LVGL对硬件的要求并不算太高。

系统框架

LVGL本身是一个图形库。

我们的应用程序通过调用LVGL库来创建GUI。它包含一个HAL(硬件抽象层)接口,用于注册显示和输入设备驱动程序。驱动程序除特定的驱动程序外,它还有其他的功能,可驱动显示器GPU、读取触摸板或按钮的输入。

MCU有两种典型的硬件设置。一个带有内置LCD/TFT驱动器的外围设备,而另一种是没有内置LCD/TFT驱动器的外围设备。相同的是,这两种情况都需要一个帧缓冲区来存储屏幕的当前图像。

集成了TFT/LCD驱动器的MCU如果MCU集成了TFT/LCD驱动器外围设备,则可以直接通过RGB接口连接显示器。在这种情况下,帧缓冲区可以位于内部RAM(如果MCU有足够的RAM)中,也可以位于外部RAM(如果MCU具有存储器接口)中。

如果MCU没有集成TFT/LCD驱动程序接口,则必须使用外部显示控制器(例如SSD1963、SSD1306、ILI9341 )。在这种情况下,MCU可以通过并行端口,SPI或通过I2C与显示控制器进行通信。帧缓冲区通常位于显示控制器中,从而为MCU节省了大量RAM。

#02 常见GUI对比

早些年间大部分MCU的资源和处理能力有限,受制于资源以及处理能力的不足,很少有基于MCU通用的GUI。

现如今,随着MCU技术的发展,MCU性能以及属性有了很大改变,相较从前,现在MCU资源增加,处理能力增强,市场需求增长,GUI的功能自然也越来越丰富了。

LVGL

LVGL集成了占用小、多平台使用、移植简单、操作简单、开源免费等一系列特点。对于使用者来说,LVGL拥有30多个可以随时使用的小部件的同时,甚至还可以自定义控件。

LVGL经常被使用在MCU级别的设备上,因其可以在多平台上移植使用以及在不同显示器上,以C编写,对于资源紧张的MCU来说十分适合。

MiniGUI

MiniGUI 是一款面向嵌入式系统的高级窗口系统和图形用户界面支持系统,遵循GPL协议。作为操作系统和应用程序之间的一个中间件,MiniGUI 将底层操作系统和硬件平台的细节隐藏起来,并为上层的应用程序提供了一致接口。

MiniGUI同时具有多种技术特性,包括可在含有MMU的32位处理器架构之上运行;同时支持低端、高端显示设备以及具备副屏支持的功能;方便为不同操作系统和环境应运而生的三种运行模式以及内建资源的支持;嵌入式应用程序开发和调试的跨操作系统支持的属性;完备的多窗口机制和消息传递机制。

  • 优点
    支持多种嵌入式操作系统,可移植性强;
    可伸缩的系统架构,易于扩展;
    功能丰富,可灵活剪裁;
    轻型,资源占用少;
    高性能,高可靠性。
  • 缺点
    对图形设备的抽象层次太高。

Qt(Qt for MCUs)

Qt for MCUs是一个完整的图形框架和工具包,包含在微控制器上设置、开发和部署GUI所需要的一切。您可以在裸机或实时操作系统上运行应用程序。

Qt for MCUs带有三样开发工具,包括一个配备了完善的代码编辑器、版本控制等功能的IDE(Qt Creator);以Qt QML语言编写的帮助从头开始或基于咸亨UI空间快速设计和构建应用程序的组件WYS|WYG编辑器(Qt Quick Designer);Qt Quick Ultralite 图形框架提供了丰富的 QML API 集,用于构建流畅的 GUI 和渲染引擎。

优点

  • 复用您在微控制器上的现有技能;
  • 通过跨设备(从高端到大众设备)的技术一致性,来降低维护成本;
  • 在不影响图形性能的前提下,向微控制器演进以降低硬件成本;
  • 将传统解决方案升级到现代的跨平台图形工具包。

emWin

emWin支持在任何嵌入式系统上创建高效、高质量的图形用户界面,emWin支持资源受限的微控制器的系统,运行令人惊叹的交互界面。

emWin与单任务和多任务环境兼容,可以使用专有的操作系统,也可以与任何商业RTOS兼容。它以C语言源代码提供,使其成为嵌入式市场的专业、通用GUI,可用于多种不同的场景。

优点

  • 创建惊人的图形与功能强大,易于使用的API
  • 适用于任何显示器和微控制器
  • 适用于任何ANSI C/C++开发环境
  • 体验可靠的图形解决方案
  • 嵌入式图形用户界面解决方案

最后上一张对比图,更直观:

#03 D1哪吒 & LVGL

轻量的属性给LVGL带来了无数粉丝,在使用各种低配置的小型开发板时,大部分开发者都会第一时间想到LVGL,这同时又突出展现出了它的另一个特点易移植。

同样是开源、精简、轻量级,RISC-V和LVGL在设计理念上简直不谋而合,他们或许就代表着未来十年科技发展的主流。

目前,全志基于阿里平头哥C906核设计的RISC-V芯片已经支持LVGL。秉承着同样设计理念的两个网红黑科技,在全志的芯片上绽放出了奇妙的花火。

在全志在线社区论坛上,有小伙伴发布了一篇将LVGL移植到哪吒D1上的帖子,一时也是引起广泛讨论

原帖&效果视频见链接:

哪吒D1开发板 LVGL7 源码下载(带git仓库)​bbs.aw-ol.com/topic/303/

频中使用的是D1哪吒开发板,配上一块带触摸的7寸MIPI屏幕。可以看到移植的LVGL DEMO在RISC-V指令集的芯片上丝滑运行,毫无压力。

原帖&效果视频见链接:

【DIY教程】D1的双屏异显第一弹来啦!D1同时支持两个屏幕,一共做UI交互,一边个播放视频​bbs.aw-ol.com/topic/362/

借助芯片的双屏异显功能,D1可以一边用LVGL做UI交互,另一边又在解码播放视频,很好的解决追剧星人在追剧时候就难以同时操作的问题,不会占用HDMI屏幕输出需要太多资源的同时,LVGL也很好的帮助了屏幕内容在mipi上的丝滑输出,成功实现双屏异显。

而要在哪吒上把LVGL玩起来也非常简单,只需要下载源码后使用编译命令编译源码:

CC=/xxxx/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc make

然后使用Tina Linux自带的adb 将demo推到开发板里,就可以玩起来了。如果没有MIPI屏幕,使用HDMI显示器+鼠标也是同样支持的。

开源轻量级显示框架LVGL简介相关推荐

  1. 开源轻量级 IM 框架 MobileIMSDK v6.2 发布

    一.更新内容简介 本次更新为次要版本更新,进行了若干优化(更新历史详见:码云 Release Nodes).可能是市面上唯一同时支持 UDP+TCP+WebSocket 三种协议的同类开源IM框架. ...

  2. ThinkPHP,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的开源轻量级PHP框架。

    保留日志/Files/logs $today = date('Y-m-d H:i:s', time()); writelog('logs/'.date('Y-m-d').'.log', $today. ...

  3. 开源轻量级 IM 框架 MobileIMSDK 的Uniapp客户端库已发布

    一.基本介绍 MobileIMSDK-Uniapp端是一套基于Uniapp跨端框架的即时通讯库: 1)超轻量级.无任何第3方库依赖(开箱即用): 2)纯JS编写.ES6语法.高度提炼,简单易用: 3) ...

  4. 单片机---HLK-W801图形框架LVGL移植

    背景介绍 最近接触到了一个开源的显示框架lvgl,在跑起了demo的时刻,发现这确实是个酷酷的东西. LVGL的作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C语 ...

  5. Go开源游戏服务器框架——Pitaya

    Go开源游戏服务器框架--Pitaya 简介 抽象分析 框架流程 处理细节 简介 Pitaya是一款由国外游戏公司topfreegames使用golang进行编写,易于使用,快速且轻量级的开源分布式游 ...

  6. 开源对话机器人框架:Rasa概述【中小型公司使用Rasa框架,降低准入门槛。灵活性不够高】【可以本地部署】【保护数据隐私(其他框架需要将自己的数据上传到框架官方云服务器,不安全)】【可以重写一些类】

    一.Rasa安装与使用 1.安装 pip3 install rasa-x --extra-index-url https://pypi.rasa.com/simple 2.创建项目 rasa init ...

  7. Java开源——常见J2EE框架简介

    Java开源--常见J2EE框架简介 Spring Framework Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口 ...

  8. Google 开源 AdaNet:快速灵活的轻量级 AutoML 框架

    雷锋网 AI 科技评论编者按:近期,Google 开源了轻量级 AutoML 框架-- AdaNet,该框架基于 TensorFlow,只需要少量的专家干预便能自动学习高质量模型,在提供学习保证(le ...

  9. [转载]Zookeeper开源客户端框架Curator简介

    转载声明:http://macrochen.iteye.com/blog/1366136 Zookeeper开源客户端框架Curator简介 博客分类: Distributed Open Source ...

最新文章

  1. 利用流水线改进代码中的if处理流程
  2. oracle将一个表中字段的值赋值到另一个表中字段(批量)
  3. 渗透攻击(NT/2000系统)
  4. matlab中句点,matlab入门学习(一)
  5. 《H5 移动营销设计指南》 读书笔记整理
  6. STM32F0使用LL库实现DMA方式AD采集
  7. mysql数据库写入数据的语法_mysql数据库插入数据语法
  8. shell command 输入时的快捷键
  9. redis底层数据结构
  10. android实现半透明,Android应用开发中半透明效果实现方案总结
  11. 青龙2.11.3版本对接傻妞+go-cqhttp+短信登录(Maiark)(兔子)+本地服务器直连GitHub
  12. 【C语言 基础】函数的形参与实参
  13. Linux signal捕获
  14. 卡梅 计算机生物专业怎么样,【智友学子】X同学----卡耐基梅隆大学 计算生物学...
  15. Serial.print()和Serial.write()的区别
  16. 杨辉三角形【找规律】
  17. Win10沙盒功能,系统自带免费免安装
  18. 【Appium】测试时遇到手机内嵌H5页面的切换问题
  19. opencv获取bbox
  20. python的锁机制_python锁机制

热门文章

  1. 水果店可能会遇到哪些风险,开水果店的风险是什么
  2. NX二次开发-UFUN读取图纸尺寸的值UF_DRF_ask_dimension_text
  3. YOLO&Deepsort的车速&车流量检测系统(源码&部署教程)
  4. Linux线程基本知识
  5. 有源带通滤波器快速实现
  6. 「深度」比天气还热的无人超市,是真有料还是在玩模式?
  7. JAVACV实现视频帧添加中文水印
  8. 在del.icio.us , blinklist 和9Fav之间共享收藏
  9. 微软研发经理邹欣谈IT教育:推荐《我是一只IT小小鸟》
  10. 浏览器主页被劫持到*.gndh666.top