2、主流框架概览:Qt for MCU、LVGL、Embedded Wizard、Crank Storyboard、AWTK 的横向对比
做多屏交互HMI,选框架是第一道坎。说实话,我见过太多项目在框架选型上栽跟头——要么选了个跑不动的,要么选了个开发效率极低的。今天咱们就把市面上主流的五个框架拉出来遛遛。
2.1 为什么是这五个?
市面上HMI框架少说几十个,但真正能在量产项目里站稳脚跟的,其实就这几个。我个人习惯把它们分成三类:
- 商业重型选手:Qt for MCU、Embedded Wizard、Crank Storyboard
- 开源轻量选手:LVGL、AWTK
你想想看,选框架就像选装修队——预算充足找大公司,预算有限找靠谱工头。没有绝对的好坏,只有合不合适。
2.2 逐个拆解
Qt for MCU
Qt for MCU 是 Qt 公司专门为微控制器打造的版本。它把 Qt 的 QML 和 Qt Quick 搬到了 MCU 上,支持硬件加速。
核心特点:
- 使用 QML 语言开发,声明式 UI
- 支持 GPU 加速(如果芯片有)
- 与桌面 Qt 生态无缝衔接
我踩过的坑:
曾经有个项目,客户指定用 Qt for MCU。我们兴冲冲地选了 STM32H7,结果发现 2MB Flash 根本装不下完整的运行时库。后来不得不砍掉一半动画效果才勉强塞进去。嗯,这里要注意——Qt for MCU 对 Flash 和 RAM 的要求比想象中高。
LVGL
LVGL 是目前最火的开源嵌入式 GUI 库。我最早接触它是在 2019 年,那时候还叫 LittlevGL。现在它已经发展到 v9 了,生态非常成熟。
核心特点:
- 纯 C 语言编写,移植性极强
- 丰富的内置控件(按钮、滑块、图表等)
- 支持字体、图片、动画
- 社区活跃,文档齐全
我的使用体验:
说实话,LVGL 是我个人最推荐的开源方案。它不像 Qt 那么重,也不像某些商业框架那么封闭。我在一个智能家居项目里用过它,从移植到出 demo 只花了两天。为什么这么快?因为它的 API 设计得很直观,你甚至不用看文档就能猜出函数名。
Embedded Wizard
Embedded Wizard 是德国公司 TARA Systems 的产品。它走的是「所见即所得」路线,UI 设计完全在 PC 上完成,然后生成 C 代码。
核心特点:
- 强大的 GUI 设计器,支持复杂动画
- 生成的代码体积小、效率高
- 支持多种 MCU 平台
我的看法:
Embedded Wizard 的动画引擎确实厉害。我见过有人用它做出了类似手机系统的滑动效果,丝滑程度远超 LVGL。但代价是什么?价格不菲。一套许可证几万块,小公司可能承受不起。
Crank Storyboard
Crank Storyboard 是另一个商业方案,主打「故事板」式的 UI 开发流程。设计师可以在工具里做交互原型,然后直接导出到嵌入式平台。
核心特点:
- 故事板式设计,适合复杂交互
- 支持多屏联动
- 代码生成效率高
我的经验:
Crank 在汽车仪表盘领域用得比较多。我有个朋友在 Tier 1 供应商工作,他们用 Crank 做了一款双屏联动的仪表盘——中控和仪表盘可以互相拖拽应用。这种场景下,Crank 的故事板模式确实比手写代码方便得多。
AWTK
AWTK 是国产开源框架,由周立功团队开发。它主打「一套代码,多平台运行」。
核心特点:
- 支持 C/C++ 开发
- 内置丰富的控件和动画
- 支持多种后端(SDL、Linux Framebuffer、RTOS 等)
- 中文文档友好
我的评价:
AWTK 在国内工业控制领域用得比较多。它的设计理念和 LVGL 类似,但更强调跨平台。我曾在一次技术交流会上看到有人用 AWTK 在 Linux 和 RTOS 之间无缝切换,确实方便。不过社区活跃度不如 LVGL,遇到问题可能需要自己啃源码。
2.3 横向对比表
| 特性 | Qt for MCU | LVGL | Embedded Wizard | Crank Storyboard | AWTK |
|---|---|---|---|---|---|
| 开发语言 | QML/C++ | C | C | C/C++ | C/C++ |
| 许可证 | 商业 | MIT | 商业 | 商业 | LGPL |
| Flash 占用 | 高(>1MB) | 低(~200KB) | 中(~500KB) | 中(~600KB) | 低(~300KB) |
| 动画能力 | 强 | 中 | 强 | 强 | 中 |
| 学习曲线 | 陡 | 平缓 | 中 | 中 | 平缓 |
| 社区生态 | 好 | 优秀 | 一般 | 一般 | 一般 |
| 典型场景 | 高端仪表 | 智能家居 | 工业控制 | 汽车电子 | 工控/家电 |
2.4 选型建议
说了这么多,到底怎么选?我总结了几条经验:
- 预算充足、性能要求高 → 选 Qt for MCU 或 Embedded Wizard
- 开源优先、社区活跃 → 选 LVGL
- 国产化需求、中文支持 → 选 AWTK
- 汽车仪表、多屏联动 → 选 Crank Storyboard
好了,框架概览就到这里。下一章咱们会深入 LVGL 的移植实战,手把手教你把 LVGL 跑在 STM32 上。到时候记得带上你的开发板。