嵌入式Linux GUI收集
关键词:QT、Nano-X、MiniGUI、Wayland、LVGL等等。
QT
QT框架结构
QT支持的平台
Desktop Platforms
Linux/X11
Distribution | Architecture | Compiler | Notes |
---|---|---|---|
openSUSE 15.1 | x86_64 |
GCC 5 or later, GCC 7, ICC 19.1 | |
SUSE Linux Enterprise Server | x86_64 |
GCC 5 or later, GCC 10 | |
Red Hat Enterprise Linux 8.4 | x86_64 |
GCC 10.1 via gcc-toolset-10 | |
Red Hat Enterprise Linux 7.6 | x86_64 |
GCC 5.3.1 via devtoolset-4 | |
Ubuntu 20.04 | x86_64 |
GCC 5 or later, GCC 9 | |
Ubuntu 18.04 | x86_64 |
GCC 5 or later, GCC 9 | |
Generic Linux | x86 and x86_64 |
GCC (5 or later), ICC 18.x |
macOS
Target Platform | Architecture | Build Environment |
---|---|---|
macOS 10.13, macOS 10.14, macOS 10.15, macOS 11, macOS 12 | x86_64 and x86_64h and arm64 |
Xcode 11 or Xcode 12 or Xcode 13 (12 SDK) |
Windows
Operating System | Architecture | Compiler | Notes |
---|---|---|---|
Windows 11 21H2 | x86 and x86_64 |
||
Windows 10 21H2 | x86 and x86_64 |
MSVC 2022, MSVC 2019, MSVC 2017, MSVC 2015, MinGW 8.1 | |
Windows 8.1 | x86 and x86_64 |
MSVC 2019, MSVC 2017, MinGW 8.1 | |
Windows 7 | x86 and x86_64 |
MSVC 2019, MSVC 2017, MinGW 8.1 | MinGW-builds GCC 8.1.0 (x86) |
Mobile Platforms
Android
Platform Version | Architecture | Compiler | Build Environment |
---|---|---|---|
Android 5.0 or later (that is, API Level 21 and up) | armv7a and x86 , arm64-v8 and x86_64 |
Clang as provided by Google, MinGW 8.1 | RHEL 8.x (x86_64), RHEL 7.x (x86_64), macOS 10.15, Windows 10 21H2 (x86_64) |
iOS/tvOS/watchOS
Target Platform | Architecture | Build Environment | Notes |
---|---|---|---|
iOS 12, iOS 13, iOS 14, iOS 15 | armv8 (arm64 ) |
Xcode 11 (iOS 13.2 SDK), Xcode 12 (iOS 14 SDK), Xcode 13 (iOS 15 SDK) | |
tvOS 12, tvOS 13 | armv8 (arm64 ) |
Xcode 11 (tvOS 13 SDK) | Technology Preview |
watchOS 5, watchOS 6 | armv7k |
Xcode 11 (watchOS 6 SDK) | Technology Preview. No UI. |
Universal Windows Platform (UWP)
Platform Version | Architecture | Compiler | Build Environment |
---|---|---|---|
Universal Windows Platform 10 | x86 , x86_64 , and armv7 |
MSVC 2019, MSVC 2017 | Windows 10 |
Qt for WebAssembly
Target Browser | Device |
---|---|
Chrome | Desktop |
FireFox | Desktop |
Safari | Desktop, Mobile |
Edge (Chrome) | Desktop |
Android Browser | Mobile |
Embedded Platforms
For embedded platform support, including Embedded Linux, INTEGRITY, QNX, and VxWorks, please consult the Qt for Device Creation documentation.
官方代码仓库:《Qt · GitHub》《Qt for Embedded Linux | Qt 5.15》。
Nano-X
Nano-X Windlow System是一个为小型设备提供可视化窗口功能的开源项目。
Nano-X允许在Linux桌面环境中进行编译和测试应用,然后移植到目标设备。
Nano-X提供3中API实现,分别是:X11 API、Win32 API、Xlib-like API。
官方代码仓库:《GitHub - ghaerr/microwindows: The Nano-X Window System》。
MiniGUI
MiniGUI是一个自由软件项目。其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)支持系统,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。
官方代码仓库:《GitHub - VincentWei/MiniGUI》。
Wayland
Wayland作为X11的替代,更加易于开发、扩展和维护。
关于Wayland和X的差异的理解,以一个事件从输入设备到显示屏幕的体现能更好说明问题。
下面是X和Waylaynd对比架构图:
更多参考:《Wayland》《wayland · GitLab》。
LVGL
特性
- 丰富且强大的模块化图形组件:按钮 (buttons)、图表 (charts)、列表 (lists)、滑动条 (sliders)、图片 (images) 等
- 高级的图形引擎:动画、抗锯齿、透明度、平滑滚动、图层混合等效果
- 支持多种输入设备:触摸屏、 键盘、编码器、按键等
- 支持多显示设备
- 不依赖特定的硬件平台,可以在任何显示屏上运行
- 配置可裁剪(最低资源占用:64 kB Flash,16 kB RAM)
- 基于UTF-8的多语种支持,例如中文、日文、韩文、阿拉伯文等
- 可以通过类CSS的方式来设计、布局图形界面(例如:Flexbox、Grid)
- 支持操作系统、外置内存、以及硬件加速(LVGL已内建支持STM32 DMA2D、SWM341 DMA2D、NXP PXP和VGLite)
- 即便仅有单缓冲区(frame buffer)的情况下,也可保证渲染如丝般顺滑
- 全部由C编写完成,并支持C++调用
- 支持Micropython编程,参见:LVGL API in Micropython
- 支持模拟器仿真,可以无硬件依托进行开发
- 丰富详实的例程
- 详尽的文档以及API参考手册,可线上查阅或可下载为PDF格式
硬件要求
要求 | 最低要求 | 建议要求 |
架构 | 16、32、64位微控制器或微处理器 | |
时钟 | > 16 MHz | > 48 MHz |
Flash/ROM | > 64 kB | > 180 kB |
Static RAM | > 16 kB | > 48 kB |
Draw buffer | > 1 × hor. res. pixels | > 1/10屏幕大小 |
编译器 | C99或更新 |
更多参考:《LVGL · GitHub》。
Buildroot下支持的几种GUI
Buildroot下的GUI框架:
- cegui06:Crazy Eddie的GUI系统是一个免费的库,为图形API/引擎提供窗口和小部件。
- efl:Enlightenment Foundation Libraries,一个开源UI工具包。Getting started with EFL (enlightenment.org)
- QT5
- tekui:一个轻量、独立、可移植的GUI工具包, 用lua和C开发。tekUI : About (neoscientists.org)
- X.org Window System:支持X11R7的库、服务器、驱动程序和应用程序