项目概述与特点

一句话了解 EmbeddedGUI

EmbeddedGUI (EGUI) 是一个面向资源受限嵌入式系统的轻量级 C 语言 GUI 框架,主打 PFB 局部帧缓冲、脏矩形刷新、纯 C99、无 FPU 依赖,适合 RAM / ROM 都非常紧张的 MCU 场景。

项目仓库地址:

项目采用 MIT 许可证,可自由用于商业和非商业项目。

先看什么

如果你是第一次接触这个项目,建议按下面顺序阅读:

  1. 环境搭建

  2. 第一个应用

  3. 项目目录结构

  4. 构建系统详解

  5. 架构原理总览

  6. 控件参考总览

为什么选 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

具体选型仍建议根据目标芯片、屏幕大小和项目复杂度来决定。

下一步