以下内容来自CW32生态社区用户:口服
1. 开发初衷
出于对 GUI 框架的深入学习,我与 AI 协作打造了这款全新的轻量级 GUI。该框架主打低空间占用与高执行效率,旨在让低成本 MCU 也能跑出类似 LVGL 的效果。
2. PFB 显存机制
以 240x135 分辨率为例,若开辟整块显存,RAM 需求远超 CW32L011 仅有的 6K 容量。我们引入 PFB(部分帧缓冲区) 概念:仅开辟单行像素大小的数组作为显存。通过逐行遍历控件并发送至屏幕,实现任意控件的叠层刷新。此时,GUI 核心显存占用仅为480 字节。
3. 脏矩形优化
为保证帧率,必须引入“脏矩形”机制。系统仅重绘前一帧变动的区域,其余位置保持静止。配合控件边界裁剪,大幅减少了无效运算,解决了全屏刷新带来的计算瓶颈。
接下来开启脏矩形调试模式。红色调试框即为系统实时计算出的运行路径:系统仅对变动区域进行像素重构,不变动区域保持静止,确保了低性能芯片下的帧率稳定性。
这种局部刷新机制避免了全屏重绘的无效开销。为了进一步压测框架极限,我们将其移植到资源更受限的 CW32L010(RAM 仅 4KB)。在屏幕尺寸增大、内存减小的双重压力下,让我们通过实测数据看看它的性能表现。
即使将分辨率提升至 280x240,得益于脏矩形机制,系统仅需处理变动区域的绘图计算。这种“精准打击”的渲染方式,让低功耗单片机也能维持极高的帧率,这正是脏矩形的魅力所在。
接下来,我们将界面复杂度进一步提升,看看在多图层、多控件的压力测试下,这款 4KB RAM 的芯片性能发挥如何?
即使在开启底图的情况下,系统依然稳稳维持在 20 FPS。我们继续将动态圆环设为半透明。
在叠加底图与半透明效果后,依然保持了 18 FPS 的出色表现。
值得一提的是,这张底图采用了我深度定制的 QOI(Quite OK Image)魔改算法。针对 PFB 机制的特性,我优化了原版算法在渲染时必须从头遍历的痛点,新增了像素索引支持与 RGB565 色彩适配,大幅提升了随机访问与局部渲染的性能。
相关的取模工具已开源,欢迎免费使用: https://github.com/KOUFU-DIY/LCD_MCU_TOOL
接下来,我们将这套框架移植到同为 M0+ 内核的 CW32L012,并拉来某友商经典的 M3 内核 Sxx32F103 进行同台竞技。
▲上方是CW32L012
▲上方测试的是友商Sxx32F103
实测结果看到,在同样的 280x240 渲染分辨率下,尽管 M3 内核理论上更强,但 CW32L012 凭借 96MHz 高主频 与其指令预取黑科技,在运行该 Demo 时表现出了跨越阶级性能。
我们继续看一下这套AI制作的GUI的固件资源占用(Flash/RAM):
我们看到RAM只占用了2.6k(包括了默认的1k堆栈)
字库占用了5484代码空间
圆弧控件只占用2767代码空间
字符控件只占用了446代码空间
底层驱动占用2338代码空间
总代码空间仅有占用11480
作者写在最后:该GUI由作者和AI共同开发,作者负责把控框架和代码效率,AI负责撰写和拆解复杂数学公式,AI表现出了恐怖的代码能力,新时代的到来,我们即将离不开AI!
想要获取该GUI的最新进展可关注作者视频up主“我是KOUFU”
扫码加入QQ群3群| 610403240
208