emWin是老牌的GUI图片形界面公司,一路走过来十几年了,很接地气;代码中透露出一些年代久远,扣扣省省,没什么FLASH,没什么RAM的画风;所以即使在小单片机中,emWin运行速度是相对快的,优化到入骨;

littleVGL发明才几年,出身的年代就是什么安卓、苹果满天飞的年代,哪里还知道emWin走的艰苦日子,上来就给你噼哩啪啦开个大缓冲;什么叫单色填充?littleVGL表示 从来没听过这玩艺,单色在数学上只是彩色的极值。得到这个真传了以后,littleVGL的风格更是大胆向高端高性能上走,都是直接上三色混合、滑动界面,什么GPU,2D加速都是标配,所以界面很优美,代价也很惨重,一般的单片机玩不起。虽然littleVGL也可以在少资源的单片机中运行,不过用基础功能都够呛了。

下面上传2组代码,方便大家对比。emWin界面用上了TKM32F499各种加速功能,包括但不限于直接内嵌电阻触摸(TouchPad内核中断直读)、浮点运算器FPU、TK80高级功能、DMA、TK499配合液晶屏实现的各种2D加速;所以emWin运行速度很相当快,240MHz可以从容应对;

littleVGL的程序完整移植了两个版本,一个电阻触摸的,一个电容触摸的。基本上没什么优化能用上,TK80配合液晶屏能实现2D加速,但没接入函数,FPU没能用,TK80高级功能也用不上,就得个TouchPad用得上,不过电容触摸就不能用了,所以理论上电容触摸会慢一点,实现上好像看不出来;好不容易,发现可以用DMA+中断,不过最死的是,居然要等待DMA完了,才能进行下一步,那样用什么双缓冲,三缓冲还是四缓冲(RGB888的屏开三缓冲时相当于开发四缓冲,因为刷屏用的Buff不能在littleVGL下复用),都白开了,中断也用不上;最后被逼得没办法,直接用TK499,超频到300MHz,跟littleVGL在854480的屏上硬干,才勉强可以用。如果实现littleVGL的高级功能,分辨率最好不要超过480320才比较快,或者用高分辨率时,不要用滑动功能,静态界面切换快一些。看来下一版MCU要对littleVGL进行逆向优化才行,估计能快上至少几十倍。

两个代码对比:
https://www.amobbs.com/thread-5739953-1-1.html