0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【RISC-V & LVGL】现象级爆红的开源显示框架——LVGL究竟蕴藏怎样的魔力

深圳全志在线有限公司 2022-03-15 09:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

#01 LVGL简介

pYYBAGIv7yCAJnePAAS4nPMF0YE782.png实用自行车码表

pYYBAGIv7yKAJ73QAAgKcgwqkZg738.png具有科技感的奖杯

实现这些DIY作品的背后,都有同样一个功能强大的GUI——LVGL。

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

pYYBAGDzFMOAIAarAAkJeeJd_-M804.gif

-主要特性-

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

-配置要求-

  • 基本上,每个能够驱动显示器的现代控制器都适合运行 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来说十分适合。

poYBAGIv7yCAeWw1AALBJdCrTD4138.png

-MiniGUI-

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

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

pYYBAGIv7yGABCa0AAC4F193l-Q816.jpg

  • 优点

支持多种嵌入式操作系统,可移植性强;

可伸缩的系统架构,易于扩展;

功能丰富,可灵活剪裁;

轻型,资源占用少;

高性能,高可靠性。

  • 缺点

对图形设备的抽象层次太高。

-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 和渲染引擎。

poYBAGIv7yOAZU0EAAHD-LslCo0272.png
  • 优点

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

-emWin-

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

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

poYBAGIv7yGAW_a4AAAU_94DCOE090.png
  • 优点

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

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

pYYBAGIv7yKAdF2BAABDzl3C9t8045.png

#03 D1哪吒 & LVGL

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

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

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

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

话不多说,直接上链接。《 LVGL移植哪吒D1》-https://bbs.aw-ol.com/topic/294/

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

借助芯片的双屏异显功能,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可以实现的远不止于此,快快开发你的脑洞,完成更多的大作吧!!!

【带git仓库的哪吒D1开发板 LVGL7 源码】-https://bbs.aw-ol.com/topic/303/-

-End-

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LVGL
    +关注

    关注

    2

    文章

    115

    浏览量

    4276
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    重大更新,LVGL有UI编辑器用了,2秒内加载,快到飞起!

    凭借对平台的深度适配与轻量化优势,成为图形界面开发的最优解。LVGL与Linux系统的高度协同性,完美平衡了开发效率与硬件资源占用,适配从ARM到X86再到RISC
    的头像 发表于 10-21 12:58 1087次阅读
    重大更新,<b class='flag-5'>LVGL</b>有UI编辑器用了,2秒内加载,快到飞起!

    睿擎SDK V1.5.0重磅升级:EtherCAT低抖动,AMP虚拟网卡,LVGL硬件加速,多核调试等性能大幅提升|产品动态

    )。AMP模式下虚拟网卡驱动支持,双系统通信更加便利,更完善的Perfetto多核性能调试工具,AIUVC人脸识别示例,优化LVGL支持硬件加速等。并提供对应的教
    的头像 发表于 09-29 17:36 9751次阅读
    睿擎SDK <b class='flag-5'>V</b>1.5.0重磅升级:EtherCAT低抖动,<b class='flag-5'>AMP</b>虚拟网卡,<b class='flag-5'>LVGL</b>硬件加速,多核调试等性能大幅提升|产品动态

    基于RTThread nano的LVGL线程卡顿怎么解决?

    ;// LVGL显示支持 #include \"lv_port_indev.h\" // LVGL的触屏支持 #include \"gui_guider.h\"
    发表于 09-09 06:04

    【RA-Eco-RA6M4开发板评测】移植LVGL

    【开发环境】 1、mdk 2、mdk下面的lvgl pak安装包 【前提】 在前面的一篇文章中,我详细介绍了如何驱动st7796LCD屏,在其基础之上进行lvgl移植。【RA-Eco-RA6M4
    发表于 08-05 12:38

    【创龙TL3562-MiniEVM开发板试用体验】5、基于帧缓存区fd的LVGL

    基于帧缓存区可以很容易实现数据通过显示控制器(FBDEV)发送给屏幕。 所以就想进行一步实现移植下LVGL,然后自己尝试一下在TL3562上移植LVGL,然后发现Makefile还是挺难写的,总是
    发表于 07-31 15:17

    触觉智能RK3506核心板,工业应用之LVGL显示方案分享

    在如今工业智能化快速发展的时代,工业HMI的响应速度、显示效果与系统稳定性已成为设备竞争力的核心要素。触觉智能RK3506核心板59元售价,深度融合LVGL开源图形框架,以2.5秒极速
    的头像 发表于 04-02 15:11 895次阅读
    触觉智能RK3506核心板,工业应用之<b class='flag-5'>LVGL</b><b class='flag-5'>显示</b>方案分享

    芯来科技携手芯芒科技发布RISC-V CPU系统仿真平台

    专业RISC-V处理器IP及解决方案公司芯来科技与杭州芯芒科技深入合作,共同研发推出芯来全系列RISC-V CPU系统仿真平台。帮助下游SoC和产品开发团队基于该仿真平台快速构建从芯片核心架构、整
    的头像 发表于 03-19 14:36 1368次阅读

    基于RTThread nano的LVGL线程卡顿是什么原因引起的?

    显示支持 #include \"lv_port_indev.h\" // LVGL的触屏支持 #include \"gui_guider.h\"
    发表于 03-07 06:00

    瑞芯微RK3568正式开放RISC-V核心啦,也支持非对称AMP双系统!

    ,通过ARM与RISC-V的协同工作,展现出了强大的性能优势,下面一起来看看! “非对称AMP”双系统 AMP(Asymmetric Multi-Processing),即非对称多处理架构。“非对称
    的头像 发表于 02-27 10:36 1024次阅读
    瑞芯微RK3568正式开放<b class='flag-5'>RISC-V</b>核心啦,也支持非对称<b class='flag-5'>AMP</b>双系统!

    SOPHGO RISC-V SoC Linux Kernel 社区邮件列表建立,欢迎加入开源社区为RISC-V生态完善添砖加瓦

    SOPHGO RISC-V SoC Linux Kernel 社区邮件列表建立,欢迎加入开源社区为RISC-V生态完善添砖加瓦
    的头像 发表于 02-14 08:34 713次阅读
    SOPHGO <b class='flag-5'>RISC-V</b> SoC Linux Kernel 社区邮件列表建立,欢迎加入<b class='flag-5'>开源</b>社区为<b class='flag-5'>RISC-V</b>生态完善添砖加瓦

    关于RISC-V芯片的应用学习总结

    RISC-V芯片作为一种基于精简指令集计算(RISC)原则的开源指令集架构(ISA)芯片,近年来在多个领域展现出了广泛的应用潜力和显著优势。以下是对RISC-V芯片应用的总结。
    发表于 01-29 08:38

    LVGL开发入门教程

    LVGL(Light and Versatile Graphics Library)是一个开源的嵌入式图形库,由Gábor Kiss-Vámosi于2016年创建,遵守MIT协议。目前由来自世界各地的志愿者共同维护和开发。
    的头像 发表于 01-03 15:23 4117次阅读
    <b class='flag-5'>LVGL</b>开发入门教程

    RISC-V在MCU中有哪些知名的开源项目?

    RISC-V在MCU中有哪些知名的开源项目?
    发表于 12-30 19:48

    如何判断产品需不需要做AT&amp;amp;amp;T认证?AT&amp;amp;amp;T测试内容和要求分享

    随着经济全球化的发展,国内越来越多产品厂商选择将自家产品出口到北美市场,而这时候各位厂商都会面临产品需不需要做AT&amp;T的问题。今天英利检测针对这一问题整理了一些关于AT&amp;T认证中
    的头像 发表于 12-23 17:46 1026次阅读
    如何判断产品需不需要做AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T认证?AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T测试内容和要求分享

    凌科电气YU系列工业连接器登场,解锁USB&amp;amp;Type-C多模块新体验!

    近日,凌科全新推出YU系列USB&amp;amp;Type-C多模块工业连接器,在功能上实现了全面升级。
    的头像 发表于 12-18 09:46 793次阅读