嵌入式系统的GUI分类及介绍——面向MCU微控制器 硬件平台的GUI

嵌入式系统的GUI分类及介绍——面向MCU微控制器

硬件平台的GUI

摘要:分析嵌入式系统GUI选型时需要考虑的问题,简要介绍目前嵌入式系统使用的ToughGFX、emWin、Embedded Wizard、uGFX、LittlevGL、MiniGUI(飞漫)、AWTK(周立功)、Microwindows、OpenGUI、Qt for MCU等10款国内外的GUI。

关键字:嵌入式GUI;ToughGFX;uGFX;LittlevGL

1   GUI选型

GUI(Graphical User Interface,图形用户界面)是指采用图形方式显示的用户操作界面,小型的嵌入式系统不同于桌面级的Windows、Linux显示、也不同于移动终端(手机、平板)上的Android、IOS显示。小型嵌入式系统的GUI通常可能是定制的,要显示的内容比较有限,也没有复杂、丰富的应用。而且小型嵌入式系统的硬件平台通常是MCU(Microcontroller Unit,微控制器),显示时没有GPU、3D渲染等硬件单元,也无法运行大型操作系统,桌面级和移动端的成熟GUI无法与其适配,也无法在这类系统上运行。

笔者认为,小型嵌入式系统GUI选型时需要考虑如下几个问题:

1)   应用场景,主要需要显示什么,显示的是否复杂。

2)   与使用的操作系统的结合,移植难度。

3)   硬件平台,是否已经有现成可用的GUI与其适配。

4)   GUI的开源协议,是否收费。

2   常见的嵌入式GUI

文献[1]中将GUI分为低端(ucGUI、RTThread的柿饼UI),中端(miniGUI、OPENGUI、Microwindows),高端(桌面级的QT、Android、Windows MFC)三类。查阅了这些GUI的资料[2],简要列举如下:

1)   TouchGFX

如果是ST的硬件平台,则几乎是必选它。

2)   emWin、Embedded Wizard

emWin比较老,不支持复杂控件,收费;Embedded Wizard也收费。

3)   ugfx,LittlevGL

uGFX完全免费,LittlevGL是开源免费(MIT许可)的GUI。

4)   miniGUI(飞漫),AWTK(周立功)

这两个是国内的。

5)   Microwindows,OPENGUI,Qt forMCU。

这三个感觉一版不予考虑。

2.1 TouchGFX

非开源;以界面华丽,流畅以及强劲的 TouchGFX Designer著称;界面非常炫,堪比手机的APP界面。已经被ST收购,在ST MCU、MPU上可免费使用。视频[3]展示了TouchGFX图形界面简介,Demo展示,视频[4]展示了STM32H750B Discovery Kit,运行TouchGFX Demo例程。

使用TouchGFX开发STM32界面,有两种方法。

  • 一是利用TouchGFX Designer软件,支持图片和控件拖拽、可快速生成在KEIL或IAR等IDE中可打开的项目工程;
  • 另一种方法是,STM32CUBEMX 5.0版本增加了对TouchGFX的支持,可以使用CubeMX开发TouchGFX应用。

笔者曾经试图将TouchGFX的闭源库,移植到其它的操作系统上,出现点问题,移植中断了,详情参见我的另外一篇随笔《TouchGFX undefined reference to `touchgfx::HAL::blockCopy(void*, void const*, unsigned int)' ——记一次arm-none-eabi-g++ 链接时找不到静态库中对应的函数,学习GNU C++的符号改编机制》 。

2.2 emWin(uCGUI,STemWin)

老牌的嵌入式 GUI 了,有着十几年的历史,软件架构和功能比较成熟了。主要是SEGGER(没错就是做仿真器的那个)来开发和维护。但是做出来比较炫的效果非常麻烦,且不支持较为复杂的控件。

ucGUI是Segger公司为Micrium公司(ucos所属公司)定制的emWin,使用的时候都需要向该公司交纳版权费。

而STemWin是Segger公司为ST公司定制的emWin;如果我们使用的ST的芯片,则可以免费使用STemWin。

2.3 Embedded Wizard

德国TARA System公司开发的一个使用舒适、灵活的嵌入式系统GUI开发工具。出现较晚,在emWin和TouchGFX之后,以华丽,流畅的界面和强劲的GUIBuilder 著称。

官方号称支持几乎任意平台。也是要收费的。

视频[5]展示了在STM32F746G-DISCO开发板上,运行基于Embedded Wizard开发的界面应用。

2.4 uGFX

界面效果不像TouchGFX那么华丽,不过功能也是简单实用。同样它也有一款不错的GUIBuilder。

值得一提的是这是一款完全免费的GUI。

视频[6]展示基于chibios和ugfx开发的示波器demo演示。

2.5 Microwindows

是一个著名的开放式源码嵌入式GUI 软件,遵循MPL协议,目的是把图形视窗环境引入到运行Linux的小型设备和平台上。

2.6 OpenGUI

OpenGUI基于一个用汇编实现的x86图形内核,提供了一个高层的C/C++图形/窗口接口。

OpenGUI比较适合于基于x86平台的实时系统,跨平台的可移植性较差,目前发展较慢。

2.7 MiniGUI

开源Linux图形用户界面支持系统,跨操作系统支持,具体包括普通嵌入式 Linux/uClinux、VxWorks、eCos、uC/OS-II、pSOS、ThreadX、Nucleus、OSE 等,同时还提供 Win32 平台上的 SDK 开发包,方便嵌入式应用程序的开发和调试。

并且非常适合 eCos/uCOS-II/ThreadX 等无文件系统支持的实时嵌入式操作系统。

2.8 AWTK

AWTK[7]是ZLG集团旗下致远电子开源的GUI引,对标QT?

视频[8]展示了AWTK的一些基本控件。

在嵌入式Linux系统上也极具优势,也能能很好的解决嵌入式Linux GUI开发的大多数痛点。也支持STM32系列[9]

2.9 Qt for MCU

Qt for MCU 将能够在没有操作系统的设备上运行,允许开发人员在具有成本效益的单片机上创建流畅的用户界面,基于 Qt 的应用程序现在可以部署在运行传统操作系统的系统以及基于 ARM Cortex M7 的微控制器上[10]。基于 ARM Cortex M7 的微控制器上,发布了1.0,目前支持如下硬件:

  • STM32F769i-DISCO,STM32F7508-DK
  • I.MX RT1050-EVKB
  • Renesas RH850

2.10   LittlevGL

LittlevGL是一个开源免费(MIT许可)的GUI。Flash大于64KB,RAM大于20KB的单片机都可以使用。

网址[11]和视频[12]展示了,与FreeRTOS结合,运行的一些Demo。

国内的阿里AliOS Things图形界面,也是基于LittleVGL[13]

Zephyr OS的显示Demo,也是基于LittlevGL[14]

参考文献

[1] 陈俊彦. 嵌入式GUI设计[EB/OL].百度文库,2019.05.28:10-11. https://wenku.baidu.com/view/3019a2a5cd7931b765ce0508763231126fdb7745.html.

[2] 21ic电子网. 工程师请进:MCU上跑的GUI,哪个最合你心意?[EB/OL].搜狐,2017.06.24. https://www.sohu.com/a/148171489_464086.

[3] 田三番. [中英字幕][STM32GUI][TouchGFX]TouchGFX图形界面简介,Demo展示[EB/OL].bili bili,2019.10.20.

https://www.bilibili.com/video/av71847495?from=search&seid=7751593998842112472.

[4] fssiiot. STM32H750B Discovery Kit 运行TouchGFX Demo例程[EB/OL]. Bili bili,2019.09.23.

https://www.bilibili.com/video/av68722775/?spm_id_from=333.788.videocard.0.

[5] 野火_firege. Embedded Wizard [J].2018.09.10.

https://www.bilibili.com/video/av31475329?from=search&seid=8773020113669252398.

[6] xxx. 基于chibios+ugfx的示波器demo演示[J].腾讯视频, 2015.11.09.

https://v.qq.com/x/page/y0172o1pymx.html .

[7] anyuliuxing. 主流嵌入式开源GUI比较(二)[EB/OL].CSDN,2019.08.24. https://blog.csdn.net/anyuliuxing/article/details/99691721.  

[8] xxx. 腾讯视频, https://v.qq.com/txp/iframe/player.html?vid=n07811pocfx.

[9] 247153481. 一个新的嵌入式GUI [EB/OL].eeworld.2019.02.20.

    http://bbs.eeworld.com.cn/thread-1069878-1-1.html .

[10] 许豆. 有哪些好的嵌入式操作系统界面库(GUI library)?[EB/OL]. 知乎,2019.0.01. https://www.zhihu.com/question/20751611 .

[11] 悠然伴山居. freeRTOS+littlevgl的综合demo[EB/OL].CSDN,2019.09.10. https://blog.csdn.net/duikui2371/article/details/100704602 .

[12] 悠然伴山居. 做了一个stm32+littlevgl的demo [EB/OL]. Bili bili,2019.09.09.

https://www.bilibili.com/video/av67166877/ .

[13] 阿里云物联网. AliOS Things图形界面开发指南[EB/OL]. 阿里云,2018.04.18.

https://developer.aliyun.com/article/582795.

[14] Zephyr. LittlevGL Basic Sample[EB/OL]. zephyrproject,2022.

https://docs.zephyrproject.org/latest/samples/subsys/display/lvgl/README.html?highlight=littlevgl.

posted on 2022-03-07 15:35  wangyw  阅读(2567)  评论(0编辑  收藏  举报

导航