嵌入式系統的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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM