国内外主流嵌入式GUI汇总

GUI:Graphical User Interface,图形用户界面。

以前,因为微控制器和处理器的资源和处理能力有限,很少有基于这些处理器通用的GUI,很多都是使用文字菜单界面,这种界面让人感觉非常的朴实无华,内容言简意赅,如果使用图形库进行开发,产品一下子就让别人觉得有点高级感。现在,MCU资源增多,处理能力也强了,同时市场需求也增多了,GUI功能也越来越丰富了,很多的嵌入式图形库都可以做出绚丽的界面。

下面的博文给大家介绍几款国内外主流的GUI:

当涉及嵌入式GUI框架时,以下是更详细的例子来说明国内外主流的选择

1、Qt

官方网站:Qt | Tools for Each Stage of Software Development Lifecycle

想必学习嵌入式开发的,都应该知道Qt,Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。

2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件。

2019年8月21日, Qt公司推出了Qt for MCUs,使客户能在经济高效的微控制器(MCU)上创建流畅的用户界面。

Qt for MCUs的主要优势:

null

  • 复用您在微控制器上的现有技能

  • 通过跨设备(从高端到大众设备)的技术一致性,来降低维护成本

  • 在不影响图形性能的前提下,向微控制器演进以降低硬件成本

  • 将传统解决方案升级到现代的跨平台图形工具包

  • 特点:Qt是一款跨平台的GUI框架,具有丰富的功能和可定制性。它提供了一套完整的工具和组件,包括图形控件、事件处理、布局管理等,使开发者可以快速构建现代化的用户界面。

  • 应用领域:Qt广泛应用于汽车信息娱乐系统、工业控制、智能设备等各种嵌入式系统中,支持的平台包括Linux、Windows、Android、iOS等。

2、μC/Gui

官方网址:μGUI - free Open Source GUI module for embedded systems | Embedded Lightning

  • 特点

    轻量级设计:uGUI的设计目标是在资源有限的环境中运行,因此具有小巧的体积和较低的内存占用。这使其适用于单片机等资源受限的嵌入式系统。

    易于集成和使用:uGUI的API设计简单直观,易于学习和使用。开发者可以迅速集成uGUI到他们的项目中,并通过简单的API调用实现基本的GUI功能。

    可扩展性:虽然uGUI的核心设计简单,但它仍提供了一些可扩展的特性,如支持多种字体和颜色配置。这使得开发者可以通过简单的配置满足一些基本的定制需求。

  • 应用场景

    简单嵌入式系统:uGUI适用于资源有限的简单嵌入式系统,特别是那些对内存和处理器资源有严格要求的项目。

    快速原型设计:由于其易于集成和使用的特性,uGUI也可以用于快速原型设计,帮助开发者迅速搭建界面并验证概念。

  • 生态支持

    uGUI虽然规模相对小,但仍有一定的社区支持。用户可以在社区中获取一些基础的文档和示例代码,尽管相较于一些大型GUI库,支持和社区参与度相对较低。

    uGUI是一款适用于资源受限嵌入式系统的轻量级GUI库。其简洁的设计和易用的API使其在简单项目或需要快速原型设计的情况下表现出色。然而,对于一些复杂的GUI需求,可能需要考虑更为功能丰富的GUI库。

3、MiniGUI

官方网址:首页 :: MiniGUI

MiniGUI 是一款轻量级的开源图形用户界面(GUI)库,专为嵌入式系统设计。MiniGUI以其高度可定制和适应性强的特点而备受开发者推崇。资源够的情况下可移植到所有MCU。免费用于非商业用途,使用部分指定的SOC可免费使用。

  • 特点

    轻量级设计:MiniGUI是一款轻量级的GUI库,专为嵌入式系统而设计。其小巧的体积使其适用于资源受限的环境,例如单片机和嵌入式Linux系统,最低

    高度可定制:MiniGUI提供了高度可定制的皮肤和界面元素,使开发者能够轻松地适应项目的外观和感觉需求。

    多平台支持:MiniGUI不仅支持嵌入式Linux系统,还可以运行在其他嵌入式平台上。eCos 和其他传统 RTOS (RT-Thread、RTEMS、FreeRTOS、VxWorks、ThreadX、Nucleus、pSOS、uC/OS-II、OSE 等),特别是 MiniGUI 作为 HybridOS 的窗口系统运行,这使得MiniGUI成为一个具有广泛可移植性的选择。

  • 应用范围

    TouchGFX广泛应用于智能家居、医疗设备、工业控制等领域的嵌入式系统中。

    嵌入式系统:MiniGUI主要面向嵌入式系统,特别是那些资源有限、需要轻量级GUI的项目。它适用于多种硬件平台,包括一些较为简单的单片机。

    定制UI需求:MiniGUI的高度可定制性使其非常适合需要特定外观和交互风格的项目。开发者可以根据项目需求自由调整皮肤和界面元素。

  • 生态支持:

    MiniGUI拥有一个积极的社区,提供了一些基础的文档和示例代码。虽然社区规模不如一些大型的GUI库,但对于MiniGUI的问题,仍然能够得到一定的支持。MiniGUI作为一款轻量级开源嵌入式GUI库,注重于适应资源受限的环境,特别适合嵌入式系统和一些简单的项目。其高度可定制的特性使其在定制UI方面表现出色。虽然文档相对较少,但其简单直接的设计有助于开发者迅速上手。对于那些需要轻量级GUI的项目,MiniGUI是一个值得考虑的选择。

4、emWin

官方网址:www.segger.com/products/user-interface/emwin

  • 特点

    emWin是一款商业GUI框架,专为资源受限的嵌入式系统设计。它具有小内存占用和高效的绘图引擎,提供了丰富的控件库和字体支持,适用于各类嵌入式设备。

  • 应用场景

    emWin广泛应用于汽车仪表盘、医疗监控、家电控制等嵌入式设备中,满足各种用户界面设计需求。

  • 开源:

    它是不开源的,只提供调用库

  • SEGGER 公司

    授权给 ST、NXP,Energy Micro 等,凡是使用这些芯片厂商生产的处理器的都可以免费使用 emWin。ST芯片的emwin叫STemWin,STemWin 针对 ST 的芯片做了优化。

        

5、LittlevGL

官方网址:LVGL — Light and Versatile Embedded Graphics Library

LVGL免费开源的嵌入式图形库,可为任何 MCU、MPU 和显示器创建漂亮的UI界面,现在它可以使用UI 编辑器SquareLine Studio来简化开发。

lvgl移植到嵌入式项目中也比较简单,首先下载好源码、调好LCD的显示驱动程序(画点函数那些),画图函数与lvgl显示接口衔接上即可,stm32中有提供DMA2D优化显示驱动,lvgl也支持触摸屏触摸,有相应的接口,另外还需要提供时钟给lvgl(提供心跳,使其保持响应)。

  • 特点:LittlevGL是一款开源的嵌入式GUI库,提供简单易用的API和丰富的图形控件库。它支持自定义控件和动画效果,适用于轻量级的嵌入式系统开发。

  • 应用领域:LittlevGL可应用于智能穿戴设备、传感器监控、工业自动化等各类嵌入式系统中,提供灵活的用户界面设计方案。 这些嵌入式GUI框架在不同领域和应用场景中发挥着重要作用,开发者可以根据项目需求、平台兼容性和开发经验进行选择和应用。

  • 代码可以直接到LVGL官方GitHub中提取,同时也提供了在线文档、Demo示例程序等,目前版本已经更新到了V8.3.4了。

特性

  • 强大的构建块,例如按钮、图表、列表、滑块、图像等。

  • 具有动画、抗锯齿、不透明度、平滑滚动的高级图形

  • 各种输入设备,如触摸板、鼠标、键盘、编码器等。

  • 使用 UTF-8 编码的多语言支持

  • 多显示器支持,即同时使用多个TFT、单色显示器

  • 具有类 CSS 样式的完全可定制的图形元素

  • 独立于硬件:与任何微控制器或显示器一起使用

  • 支持操作系统、外部存储器和 GPU,但不是必需的

  • 单帧缓冲操作,即使具有高级图形效果

  • 用 C 编写以获得最大兼容性(C++ 兼容)

硬件要求

  • 绝大多数MCU都能满足要求。

  • 16、32 或 64 位微控制器或处理器

  • 推荐 大于16 MHz 时钟速度

  • 闪存/ROM:> 64 kB 用于非常重要的组件(建议 > 180 kB)

  • 内存:

    • 静态 RAM 使用:~2 kB,具体取决于使用的功能和对象类型

    • 堆栈:> 2kB(建议> 8 kB)

    • 动态数据(堆):> 4 KB(如果使用多个对象,建议> 48 kB)。由lv_conf.h中的LV_MEM_SIZE设置。

    • 显示缓冲区:> “水平分辨率”像素(推荐>10× “水平分辨率”)

移植

        lvgl移植到嵌入式项目中也比较简单,首先下载好源码、调好 LCD的显示驱动程序(画点函数那些),画图函数与lvgl显示接 口衔接上即可,stm32中有提供DMA2D优化显示驱动,lvgl也支 持触摸屏触摸,有相应的接口,另外还需要提供时钟给lvgl(提 供心跳,使其保持响应)。

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值