硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3095|回复: 24
收起左侧

[LVGL] STM32H750 LVGL V8 速度慢,有没有办法用KEIL 跟踪

  [复制链接]

9

主题

85

回帖

112

积分

初级会员

积分
112
发表于 2022-6-15 10:44:35 | 显示全部楼层 |阅读模式
硬汉哥和各位大神好!

最近移植原来的工程到LVGL  V8, 没想到运行速度比V7慢了很多,起码10倍的差距。我的UI就一个CHART+CANVAS 还有几十个按键和字符,实时采样ADC数据分析并通过CHART显示出。 直接跑BENCHMARK  V8也比V7慢很多。现在也不知道如何查问题了。 这个问题搞了快一周了, 实在是想不出办法了。硬件和LVGL驱动肯定没有问题,因为能正常运行。怀疑某些控件刷新有问题,但是直接用断点去跟踪非常困难,因为LVGL底层比较复杂,很难跟踪。不知道KEIL 下面有没有工具可以分析运行所占时间最长的代码?  或者有没有其他方法?

请硬汉哥和各位大神不吝赐教!多谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2022-6-15 10:56:51 | 显示全部楼层
LVGL8就是卡,卡的嗷嗷叫。V8版本升级的有问题。

可以优化的地方。
(1)H750本身也是有2MB容量的Flash,强行都下载到内部Flas试试。
(2)V7的32bit SDRAM,你看下你的是不是16bit的。

然后然后就是Cache,读写Cache全部开启,先不管Cache命中的花屏问题。
回复

使用道具 举报

5

主题

201

回帖

216

积分

高级会员

积分
216
发表于 2022-6-15 11:01:28 | 显示全部楼层
我就发现过这个情况,我用的一个芯片不能DMA,就只能一点点把数据拷贝到内存里面去。
结果我本来用的V7,发现超级无敌慢,最后直接换成老的V5,速度就正常了不少。
这玩意现在是越来越慢,真是无语了
回复

使用道具 举报

9

主题

85

回帖

112

积分

初级会员

积分
112
 楼主| 发表于 2022-6-15 12:25:39 | 显示全部楼层
多谢硬汉哥和楼上兄弟,V8慢,不会吧? 我问过LVGL作者,他说V8实际比V7还要快一点点,应该他们团队是有实际测量,而不是随口说说。我怀疑还是使用上没有注意一些要点,导致效率下降很多。我已经是32BIT SDRAM, 打开CACHE. 工程中只是换了LVGL库,改了不兼容的地方。驱动都没怎么变。
听说ETM可以分析出耗时最大的函数,请问目前KEIL平台, 用ULINK ME/ STLINK /JLINK 工具能否实现简单的代码运行统计功能? 有没有这样的例子?

多谢各位!
回复

使用道具 举报

3

主题

337

回帖

346

积分

高级会员

积分
346
发表于 2022-6-15 13:30:55 | 显示全部楼层
我在PC模拟器上开发,也发掘越来越慢。LVGL8.2.0比LVGL8.0.2慢很多,滑屏都有点卡。
看来它底层实现机制不好,所以越扩展越低效了。看它代码也是一堆的switch-case,还有频繁的内存alloc-free。
可是适合嵌入式的开源GUI太少,都是些非丑即残的货!
回复

使用道具 举报

9

主题

85

回帖

112

积分

初级会员

积分
112
 楼主| 发表于 2022-6-15 14:03:16 | 显示全部楼层
多谢硬汉哥和楼上各位大神!
不会吧,我跟LVGL作者请教过,他说 V8 比V7还要快一点点, 这个应该不是随口说说,他们开发团队应该是有实际测量比较的吧。 是不是我们使用时有什么地方没有注意,严重影响了效率?  
另外请教硬汉哥,不知道 KEIL 的Event Recorder  能不能帮助找出是那个函数占用了大量时间? 方便检查可能的低效或错误代码。

多谢各位!
回复

使用道具 举报

44

主题

564

回帖

701

积分

金牌会员

积分
701
发表于 2022-6-15 15:34:04 | 显示全部楼层
V8好像更新了刷新方式,驱动有没有用DMA,需要调试一下底层驱动
回复

使用道具 举报

44

主题

564

回帖

701

积分

金牌会员

积分
701
发表于 2022-6-15 15:36:49 | 显示全部楼层
glory 发表于 2022-6-15 13:30
我在PC模拟器上开发,也发掘越来越慢。LVGL8.2.0比LVGL8.0.2慢很多,滑屏都有点卡。
看来它底层实现机制不 ...

LVGL已经不是原来那个小而快的UI了,我用了项目做到快完成一半了,现在都后悔死了,都有改用其他UI的想法了~~~
回复

使用道具 举报

9

主题

85

回帖

112

积分

初级会员

积分
112
 楼主| 发表于 2022-6-15 16:32:06 | 显示全部楼层
楼上兄弟们怎么都是差评
我用的STM32H7,DMA2D是开启了的。速度慢应该不是这个地方引起。 可能还是某些配置或者调用规则上没有注意。 还请硬汉哥指点下 KEIL 的Event Recorder   的使用,初步看了教程,了解了大致功能,但是不知道如何用于查找最耗时的函数。

还请大家多指教!
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2022-6-15 18:46:04 | 显示全部楼层
果断GUIX
回复

使用道具 举报

44

主题

564

回帖

701

积分

金牌会员

积分
701
发表于 2022-6-15 19:38:29 | 显示全部楼层
szjdb 发表于 2022-6-15 16:32
楼上兄弟们怎么都是差评
我用的STM32H7,DMA2D是开启了的。速度慢应该不是这个地方引起。 可能还是某些 ...

你可以把基础的工程发上来看看,就只是能跑lvgl部分的,可以参考看看
回复

使用道具 举报

21

主题

125

回帖

188

积分

初级会员

积分
188
发表于 2022-6-15 22:15:02 | 显示全部楼层
glory 发表于 2022-6-15 13:30
我在PC模拟器上开发,也发掘越来越慢。LVGL8.2.0比LVGL8.0.2慢很多,滑屏都有点卡。
看来它底层实现机制不 ...

真的吗?我想回退版本了
回复

使用道具 举报

21

主题

125

回帖

188

积分

初级会员

积分
188
发表于 2022-6-15 22:17:37 | 显示全部楼层
touchgfx,听说华为有源码,表也是用它做的
回复

使用道具 举报

25

主题

92

回帖

167

积分

初级会员

积分
167
发表于 2022-6-16 08:30:49 | 显示全部楼层
还是坚守emwin吧,大公司,大团队,优化肯定比单兵作战强
回复

使用道具 举报

44

主题

564

回帖

701

积分

金牌会员

积分
701
发表于 2022-6-16 14:27:51 | 显示全部楼层
珠联璧合 发表于 2022-6-16 08:30
还是坚守emwin吧,大公司,大团队,优化肯定比单兵作战强

确实是,亲身感受,当然可能跟个人水平有关系,要不是当初图新鲜,图开源什么的也不选这个用于项目,自己先玩玩还可以。做项目还是已稳定为大啊~~~
回复

使用道具 举报

13

主题

86

回帖

125

积分

初级会员

积分
125
发表于 2022-6-17 11:16:39 | 显示全部楼层
正在调H750用LVGL8,LVGL8.0我用F407驱动过和以前的版本速度上用是感觉不出来快慢的,用F1C200S也驱动过。
回复

使用道具 举报

21

主题

125

回帖

188

积分

初级会员

积分
188
发表于 2022-6-17 14:25:05 | 显示全部楼层
lg676041036 发表于 2022-6-17 11:16
正在调H750用LVGL8,LVGL8.0我用F407驱动过和以前的版本速度上用是感觉不出来快慢的,用F1C200S也驱动过。

试一下8.2
回复

使用道具 举报

44

主题

564

回帖

701

积分

金牌会员

积分
701
发表于 2022-6-18 10:03:35 | 显示全部楼层
lg676041036 发表于 2022-6-17 11:16
正在调H750用LVGL8,LVGL8.0我用F407驱动过和以前的版本速度上用是感觉不出来快慢的,用F1C200S也驱动过。

正在调H750用LVGL8,放个移植好的demo上来大家学习学习呗~~~~
回复

使用道具 举报

15

主题

87

回帖

132

积分

初级会员

积分
132
发表于 2022-6-20 08:37:26 | 显示全部楼层
connot find -isdl2main
connot find -isdl2test
直接编译显示
回复

使用道具 举报

15

主题

87

回帖

132

积分

初级会员

积分
132
发表于 2022-6-20 09:00:19 | 显示全部楼层

LIBS += -L$$PWD/lib/ -lSDL2
LIBS += -L$$PWD/lib/ -lSDL2main
LIBS += -L$$PWD/lib/ -lSDL2_test

要改一下,可以编译通过,目前还没跑起来,再排查一下看
回复

使用道具 举报

13

主题

86

回帖

125

积分

初级会员

积分
125
发表于 2022-6-20 09:21:55 | 显示全部楼层
ou513 发表于 2022-6-18 10:03
正在调H750用LVGL8,放个移植好的demo上来大家学习学习呗~~~~

目前刚点亮屏幕,之前来论坛是想看看有没现成的。如果移植好,效果没问题我就传上来。我是用的8.0不是8.2.
回复

使用道具 举报

13

主题

86

回帖

125

积分

初级会员

积分
125
发表于 2022-6-22 09:57:15 | 显示全部楼层
本帖最后由 lg676041036 于 2022-6-23 16:32 编辑

链接:https://pan.baidu.com/s/1LDmtTRwj3u_dx81u1rnkQQ?pwd=abcd
提取码:abcd
H750内置Flash和内置RAM,驱动的屏是320*240的触屏是GT911主控。没开CACHE。画屏驱动接口函数如下,里面的WHILE可以改成用LTDC的重载中断。
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
    /*The most simple case (but also the slowest) to put all pixels to the screen one-by-one*/
//        MMU_TestCleanDCache();
        LTDC_Layer2->CFBAR  =(uint32_t)color_p;
        lcdtmpaddr=(uint32_t)color_p;
                        LTDC->SRCR=0x02;
        while(1)
        {
                if((LTDC->SRCR&0x02)==0)
                        break;
        }
  lv_disp_flush_ready(disp_drv);

}链接:https://pan.baidu.com/s/1_N_2sUg9IOcKf4OlLbHwoA?pwd=abcd
提取码:abcd

新的开了CACHE,用了硬件I2C。使用更流畅,之前链接取消。是强上内部2M FLASH。之前不开CACHE是开ICACHE后用IO模拟的I2C不正常,一开始就想用硬件I2C所以就没查原因了。

回复

使用道具 举报

1

主题

5

回帖

13

积分

新手上路

积分
13
发表于 2022-6-22 14:22:27 | 显示全部楼层
750才128KB的FLASH,LVGL需要120KB的存贮空间,你程序在内置flash里面运行?
回复

使用道具 举报

2

主题

26

回帖

32

积分

新手上路

积分
32
发表于 2022-6-22 15:39:16 | 显示全部楼层
xuchu 发表于 2022-6-22 14:22
750才128KB的FLASH,LVGL需要120KB的存贮空间,你程序在内置flash里面运行?

应该是强上750内部的2M FLASH
回复

使用道具 举报

26

主题

70

回帖

148

积分

初级会员

积分
148
发表于 2022-9-7 08:17:09 | 显示全部楼层
我刚用Lgvl V6.0移植到V8.2, 库文件多少很多, 没有了6.0版本的简练, 感觉要V6.0可以玩玩, 听你们吐槽V8.2慢, 那就更无法接受了.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 19:22 , Processed in 0.277724 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表