项目概述与特点¶
一句话了解 EmbeddedGUI¶
EmbeddedGUI (EGUI) 是一个面向资源受限嵌入式系统的轻量级 C 语言 GUI 框架,主打 PFB 局部帧缓冲、脏矩形刷新、纯 C99、无 FPU 依赖,适合 RAM / ROM 都非常紧张的 MCU 场景。
项目仓库地址:
Gitee: EmbeddedGUI (gitee.com)
GitHub: EmbeddedGUI (github.com)
项目采用 MIT 许可证,可自由用于商业和非商业项目。
先看什么¶
如果你是第一次接触这个项目,建议按下面顺序阅读:
为什么选 EmbeddedGUI¶
EGUI 的核心目标,是在很小的资源预算里仍然保持完整的 GUI 能力。
局部帧缓冲 (PFB)¶
传统 GUI 往往依赖整屏帧缓冲,这对许多 MCU 来说代价太高。EGUI 采用局部帧缓冲方案,只使用一小块缓冲区分块渲染整个屏幕,从而显著降低 RAM 占用。
脏矩形机制¶
框架只重绘发生变化的区域,而不是整屏刷新。这能减少 CPU 负载、降低功耗,并让静态界面几乎没有额外开销。
定点数运算¶
所有核心数学计算都使用定点数实现,避免浮点依赖,使框架能在没有 FPU 的芯片上稳定运行。
类 Android API¶
EGUI 提供 Activity、ViewPage、LinearLayout、Dialog、Toast 等熟悉的 API 组织方式,降低从 Android 或现代 UI 框架迁移过来的学习成本。
核心特点¶
资源占用低:适合小 RAM、小 ROM 的 MCU
纯 C 实现:C99 风格,易集成、易移植
PFB + 脏矩形:适合局部刷新屏幕与低功耗场景
控件丰富:按钮、输入、布局、图表、时间、列表、虚拟控件等
动画完整:支持常见动画类型和插值器
主题系统:统一管理视觉风格
多平台支持:PC、QEMU、STM32、WebAssembly、Designer 预览端口
配套工具链:资源生成、编译检查、运行验证、性能分析、体积分析
适合谁¶
需要在资源受限 MCU 上实现图形界面的工程师
需要兼顾“可用性”和“资源占用”的产品团队
需要 PC 预览、自动验证和多平台移植能力的嵌入式项目
需要快速搭建原型,同时后续可落到量产平台的场景
不太适合谁¶
需要非常复杂的桌面级图形效果和大规模资源管理的项目
完全不在意内存占用、也不需要嵌入式落地的通用桌面应用
需要高度依赖 GPU / 浮点 / 大内存的场景
支持的平台¶
EGUI 采用分层架构,应用代码与平台无关,主要由 Porting 层适配底层能力:
PC 模拟器:Windows / Linux / macOS,适合日常开发和调试
PC Test:无 SDL 的测试端口,适合单元测试和 CI
QEMU:适合自动化测试和性能基准
STM32G0:裸机移植参考
WebAssembly:浏览器在线体验
Designer Port:设计器预览端口
快速体验¶
如果你已经配置好了开发环境,可以直接编译最小示例:
make all APP=HelloSimple
make run
想快速看几个典型能力,可以再试:
make all APP=HelloBasic APP_SUB=button
make all APP=HelloBasic APP_SUB=slider
make all APP=HelloChart
与其他框架的定位¶
EGUI 介于“极简绘图层”与“功能完整大框架”之间:
比极简绘图层更完整,提供控件、布局、动画和应用组织能力
比资源更重的大型框架更轻,适合小 RAM / 小 ROM 的 MCU
具体选型仍建议根据目标芯片、屏幕大小和项目复杂度来决定。