大家好 ,前段时间在 STM32H7S78-DK 上 做了LVGL 图形库的移植和测试,现在跟大家分享一下。 LVGL 是一个开源的图形库, 因为免费 ,以及开放的开源协议,所以有一定热度,我关注LVGL有大半年了, 在使用过程中也大致学习了LVGL内核的一个运行过程,随着逐步的学习LVGL源代码,发现LVGL8的架构有一些明显低效率的处理方式,LVGL的架构在设计时没有考虑RTOS环境下的优化和对接,很多画面的更新渲染和处理都是用了阻塞方式,看着有点难以接受, 它的输入接口也是采用定时查询方式,不支持IO中断事件响应,这样就不利于低功耗设计,在LVGL官方的讨论区里, 也在不断的讨论代码的优化,但是这种改进确实比较慢而且缺乏深入的优化。所以现在在我看来,选择LVGL时,应该是一种无奈的选择. 我在STM32H7S DK上 移植了LVGL的一个经典Demo, 同时开启了帧率和RAM的显示,在测试过程中发现这个Demo的CPU占用率还挺高的,然后便进行了多种优化测试,由于LVGL目前还不支持H7RS的GPU,而且目前LVGL的DMA2D库实现的还不是很好,所以移植体验感受一般。 目前这个演示的LVGL代码是8月分下载的LVGL8.4 ,第一个视频是没有启用LVGL的DMA2D接口,在刷屏时使用了DMA2D, 代码无优化, 可以看到在这个动态画面中CPU占用率大约在65%~76%之间 第二个视频是开启了LVGL的DMA2D,同时手动添加了驱动接口的切换回调函数,看到CPU占用率没有明显降低 第三个视频是开启了LVGL的DMA2D,没有使用切换回调函数,同时工程编译选择了3级优化,可以看到使用优化后CPU占用率下降了10%左右 经过测试发现LVGL对STM32支持的还不太好,特别是这种带有GPU单元的芯片,LVGL根本没用到芯片的GPU,另一方面LVGL中的DMA2D目前还是使用阻塞方式在处理数据,这两方面原因导致CPU占用率一直下不来, 所以对于H7RS系列 我目前放弃了使用LVGL进行一步开发,还是得用TouchGFX ,因为TouchGFX生成的代码可以使用芯片中的GPU,虽然TouchGFX无法得到完整的代码是个缺点,但是在这种带GPU的芯片上目前没得选。 视频演示解说: 【STM32H7S LVGL测试】 https://www.bilibili.com/video/BV1Tvt9eoEGf/?share_source=copy_web&vd_source=b349f05cc5a1b6f33bff1e317982b64c |
【STM32H7S78-DK】汽车仪表系统
【STM32H7S78-DK】基于 rtthread 适配 lcd 驱动移植 lvgl
【STM32H7S78-DK评测】TouchGFX (QR Code)二维码生成器
【STM32H7S78-DK】rtthread 增加 psram 内存管理
【STM32H7S78-DK】开箱与rtthread工程初体验
【STM32H7S78-DK评测】-4 LTDC&DMA2D 基本测试
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题
【STM32H7S78-DK评测】移植AI框架TensorFlow【DSP指令加速篇】
【STM32H7S78-DK评测】移植AI框架TensorFlow【下篇】
【STM32H7S78-DK评测】移植AI框架TensorFlow Lite【上篇】
这个源代码方便共享下嘛
你要白嫖?
哈哈哈 学**DMA2D的配置