LVGL开发小分享
关于LVGL
这其实是我最近一个月才关注到的一款gui库,由于公司项目需要,已在GD32F450和新塘N32905上面移植成功。
关于移植
移植的过程可以参考正点原子提供的教程,这里就不班门弄斧。
一堆文件的添加之后,主要是根据自己的工程修改填色函数。
关于PC仿真
因为LVGL不同于qt,一个标签或者按键都需要用代码编译处理,没那么直观。LVGL提供一些PC端的软件来模拟界面,其中包括VS,code blocks等。我这边同样参考正点原子提供的方案,通过code blocks搭建工程完成仿真,根据步骤完成也相对简单。
关于GUI Guider
以上的code blocks只是方便调试,不需要下载验证,但是开发也并不直观。
这里主要想提一下NXP开发的GUI Guider软件,这是NXP公司开发的为其公司的芯片开发LVGL的上位机软件,支持类似Qt的拖拽控件来编辑界面。
官方提供的第一版软件支持win10和Ubuntu,实测我在win7上面也能安装运行成功。
这里需要注意的是,GUI Guider需要Java环境,关于Java的安装可自行百度,系统的环境变量添加也需要注意。
由于该上位机是针对NXP的芯片,但是我们可以利用该软件编辑界面代码即可,然后将代码移植到自己的工程,这样大大提高了开发界面的速度。在根据实际进行一定的修改。
注意:目前支持LVGL 7版本。
关于帧率优化
有看到相关的文章,分析关于 单全屏buff,两半屏buff,两全屏buff三种情况的帧率对比。如果在LVGL 7以上的版本,可以利用官方提供的lv_demo_benchmark进行测试。
实测 单全屏buff > 两半屏buff > 两全屏buff(测试屏幕分辨率为480*272,芯片为GD32F450,RGB565,采用IPA加速和中断刷新)。
可能容易以为 “两全屏buff” 的效果应该更佳,但是我通过debug发现:
配置LVGL刷新为 单全屏buff 和 两半屏buff 时,每次刷新的坐标和图像宽度并非全屏大小,可能这样每次刷新的数据量更小,所以效率更高。而配置成 两全屏buff 时,每次都是刷新整个页面,数据量更大。
因此通过 lv_demo_benchmark 测试得到的 两全屏buff 效果并不理想。
(不同平台结果可能不同)