CW32运行"AIGUI"性能测试

描述

1. 开发初衷

出于对 GUI 框架的深入学习,我与 AI 协作打造了这款全新的轻量级 GUI。该框架主打低空间占用与高执行效率,旨在让低成本 MCU 也能跑出类似 LVGL 的效果。

2. PFB 显存机制

以 240x135 分辨率为例,若开辟整块显存,RAM 需求远超 CW32L011 仅有的 6K 容量。我们引入 PFB(部分帧缓冲区) 概念:仅开辟单行像素大小的数组作为显存。通过逐行遍历控件并发送至屏幕,实现任意控件的叠层刷新。此时,GUI 核心显存占用仅为480 字节。

3. 脏矩形优化

为保证帧率,必须引入“脏矩形”机制。系统仅重绘前一帧变动的区域,其余位置保持静止。配合控件边界裁剪,大幅减少了无效运算,解决了全屏刷新带来的计算瓶颈。

AI

接下来开启脏矩形调试模式。红色调试框即为系统实时计算出的运行路径:系统仅对变动区域进行像素重构,不变动区域保持静止,确保了低性能芯片下的帧率稳定性。

AI

这种局部刷新机制避免了全屏重绘的无效开销。为了进一步压测框架极限,我们将其移植到资源更受限的 CW32L010(RAM 仅 4KB)。在屏幕尺寸增大、内存减小的双重压力下,让我们通过实测数据看看它的性能表现。

AI

即使将分辨率提升至 280x240,得益于脏矩形机制,系统仅需处理变动区域的绘图计算。这种“精准打击”的渲染方式,让低功耗单片机也能维持极高的帧率,这正是脏矩形的魅力所在。

接下来,我们将界面复杂度进一步提升,看看在多图层、多控件的压力测试下,这款 4KB RAM 的芯片性能发挥如何?

AI

即使在开启底图的情况下,系统依然稳稳维持在 20 FPS。我们继续将动态圆环设为半透明。

AI

在叠加底图与半透明效果后,依然保持了 18 FPS 的出色表现。

值得一提的是,这张底图采用了我深度定制的 QOI(Quite OK Image)魔改算法。针对 PFB 机制的特性,我优化了原版算法在渲染时必须从头遍历的痛点,新增了像素索引支持与 RGB565 色彩适配,大幅提升了随机访问与局部渲染的性能。

相关的取模工具已开源,欢迎免费使用: https://github.com/KOUFU-DIY/LCD_MCU_TOOL

接下来,我们将这套框架移植到同为 M0+ 内核的 CW32L012,并拉来某友商经典的 M3 内核 Sxx32F103 进行同台竞技。

AI

▲上方是CW32L012

AI

▲上方测试的是友商Sxx32F103

实测结果看到,在同样的 280x240 渲染分辨率下,尽管 M3 内核理论上更强,但 CW32L012 凭借 96MHz 高主频 与其指令预取黑科技,在运行该 Demo 时表现出了跨越阶级性能。

我们继续看一下这套AI制作的GUI的固件资源占用(Flash/RAM):

AI

我们看到RAM只占用了2.6k(包括了默认的1k堆栈)

字库占用了5484代码空间

圆弧控件只占用2767代码空间

字符控件只占用了446代码空间

底层驱动占用2338代码空间

总代码空间仅有占用11480

作者写在最后:该GUI由作者和AI共同开发,作者负责把控框架和代码效率,AI负责撰写和拆解复杂数学公式,AI表现出了恐怖的代码能力,新时代的到来,我们即将离不开AI!

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分