LVGL 在我看了是一个中规中矩的界面库, 当你慢慢熟悉后会发现没有太多的惊喜,
运行效率一般, 图形处理会原生阻塞并占用一些CPU资源,
所以不适合华丽的界面设计,适合一些简单的界面切换,否则会对CPU带来较大开销,
另外,对于一些高端的单片机。 选择Lvgl反而会影响单片机中的gpu图形加速单元的发挥。 因为Lvgl只对很少的器件支持了图形加速,SM32的dma2d算不上gpu图形加速。所以如果用stm32的高端芯片,还是不太适合用lvgl,更适合st官方推出的touchgfx。
所以 LVGL 适合 那些没有GPU图形加速的中低端单片机,H7 系列就不适合,因为H7带 GPU加速
LVGL不支持,或者仅支持个别的厂家, LVGL也就只适合做一些 小的项目,大项目不建议用LVGL,因为在复杂界面中,LVGL处理时比较吃CPU资源,小的项目界面简单 可以用。
有DMA2D 的 单片机 在LVGL中作用不大,能提升一点效率,但是LVGL的刷屏数据都是单片机CPU处理的,
我测试了STM32开启LVGL自带的DMA2D库, 没有明显变化。
lvgl中,就算使用DMA2D 它也是默认阻塞方式, 即使你希望启用 DMA2D在运行等待结束的过程中进行任务调度,那也不会加速它自己的图形处理速度,只是把CPU等待时间让了出来,这对多任务系统有一定帮助。但是感觉他自身的任务还在阻塞,并没有提高效率。这将成为整个系统的短板。
LVGL8 的 DMA2D 库 不是用中断模式写的,而是用阻塞查询模式实现的DMA2D
这个就很扯,经过在STM32H7上的初步比较测试 ,用不用DMA2D CPU占用率都差不多,
而且LVGL9 宣布不在主动支持ST的DMA2D ,说是优先给合作伙伴 提供GPU支持,
就是说只有ST提供经费作为合作伙伴才会继续支持。
就算志愿者 愿意贡献代码 作者也不会接受
https://github.com/lvgl/lvgl/issues/5555