搜索
bottom↓
回复: 21
打印 上一主题 下一主题

[求助] LVGL, 滑动时花屏

[复制链接]

出0入362汤圆

跳转到指定楼层
1
发表于 2024-4-10 11:32:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如图, 点击三个按钮切换页面完全正常, 滑动就会局部花屏, 左右滑动和上下滑动花得还不一样...

跑官方例子也一样, 点击按钮都完全正常, 滑动就花.   windows上用sdl跑模拟器则完全正常, 不花屏.

有没有哪位遇到过类似情况的?

LVGL版本是8.3.11

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入362汤圆

2
 楼主| 发表于 2024-4-10 11:35:38 | 只看该作者
补充: spi+dma传输前后加__disable_irq, __enable_irq, 也花;
三个按钮不用自定义图标, 改成普通文本, 内置字体, 也花

出0入93汤圆

3
发表于 2024-4-10 11:43:24 | 只看该作者
先换块屏试试

出0入8汤圆

4
发表于 2024-4-10 11:50:43 | 只看该作者
是什么片子,有没有数据cache,先关闭dcache试试

出0入362汤圆

5
 楼主| 发表于 2024-4-10 12:07:18 | 只看该作者
了无 发表于 2024-4-10 11:50
是什么片子,有没有数据cache,先关闭dcache试试
(引用自4楼)

gd32f303cgt6, 没有cache...

出10入284汤圆

6
发表于 2024-4-10 12:14:51 来自手机 | 只看该作者
花屏首先应该降频试试

出0入362汤圆

7
 楼主| 发表于 2024-4-10 13:04:26 | 只看该作者
brother_yan 发表于 2024-4-10 12:14
花屏首先应该降频试试
(引用自6楼)

哦, 降频已经试过了, 一样 @@

出110入0汤圆

8
发表于 2024-4-10 14:20:41 | 只看该作者
早先移植emwin遇到过类似问题,检查读显存接口试一试

出0入91汤圆

9
发表于 2024-4-10 14:44:22 | 只看该作者
感觉是内存溢出了

出0入16汤圆

10
发表于 2024-4-10 16:00:05 | 只看该作者
可能设定滑动范围的边界出了问题。
比如,你平时点击刷新图标的时候可能只需要更新部分图标位置,写的数据可讷讷个比较少。但你滚动的时候可能需要整个屏幕刷新显示屏,由于内存大小等原因限制,可能写显示屏的函数是分开几个块顺序写的,
滚屏的时候刷屏请求有可能内存请求分配失败而没有作处理,写了错误地址的内容进去就花屏了

出0入362汤圆

11
 楼主| 发表于 2024-4-10 18:43:22 | 只看该作者
Elex 发表于 2024-4-10 16:00
可能设定滑动范围的边界出了问题。
比如,你平时点击刷新图标的时候可能只需要更新部分图标位置,写的数据 ...
(引用自10楼)

嗯, 明天在dma写屏函数里把地址和写入数量打印出来看看...

出100入312汤圆

12
发表于 2024-4-10 19:12:57 来自手机 | 只看该作者
内存分配大些试试

出0入224汤圆

13
发表于 2024-4-10 20:10:57 | 只看该作者
不使用DMA试试。

出0入362汤圆

14
 楼主| 发表于 2024-4-11 15:35:30 | 只看该作者
找到问题了, 我这里刷屏用第一种方式, 给10行的缓存, 实测发现刷全屏时都是按一次10行, 刷个别控件时会小范围刷若干行, 按缓存大小来用.
但是滑动时偶尔会一次刷全屏30行或者40行, 结果就出界了.
在disp_write里手动加个判断:
  1.     uint32_t count = (area->y2 - area->y1) * MY_DISP_HOR_RES
  2.         + (area->x2 - area->x1);
  3.     if(count > disp_drv->draw_buf->size)
  4.         count = disp_drv->draw_buf->size;
  5.     disp_write((unsigned short*)color_p, count);
复制代码


这样倒是不花了, 但是还是会有显示错位的问题.

难道是lvgl的bug? 切回8.3.10试试.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入362汤圆

15
 楼主| 发表于 2024-4-11 15:41:52 | 只看该作者
切8.3.10, 8.3.8, 都一样...

出0入362汤圆

16
 楼主| 发表于 2024-4-11 15:46:36 | 只看该作者
打开Log, 这行是有问题的

继续追查...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入362汤圆

17
 楼主| 发表于 2024-4-11 16:25:37 | 只看该作者
我了个去, 还是上面计算count有误, 改成count = (area->y2 - area->y1 + 1) * (area->x2 - area->x1 + 1))就彻底解决了.
惭愧惭愧, 之前某次已经改好了, 结果这次是从某个旧项目里copy过来的结果又把对的给覆盖成错的了

出0入91汤圆

18
发表于 2024-4-12 08:38:38 | 只看该作者
缓存方式 我都用全图缓存,并且 不用赋图,直接把数组的地址丢出去 直接就OK了

出0入362汤圆

19
 楼主| 发表于 2024-4-12 09:16:07 | 只看该作者
ackyee 发表于 2024-4-12 08:38
缓存方式 我都用全图缓存,并且 不用赋图,直接把数组的地址丢出去 直接就OK了 ...
(引用自18楼)

嗯, 关键是得有那么大RAM...
我这个是480*222的屏, 全屏得200多k ram了.

出100入312汤圆

20
发表于 2024-4-12 10:07:44 来自手机 | 只看该作者
tomzbj 发表于 2024-4-12 09:16
嗯, 关键是得有那么大RAM...
我这个是480*222的屏, 全屏得200多k ram了.

(引用自19楼)

336k ram,156m主频,1m flash,8元

出0入362汤圆

21
 楼主| 发表于 2024-4-12 17:42:25 | 只看该作者
akey3000 发表于 2024-4-12 10:07
336k ram,156m主频,1m flash,8元
(引用自20楼)

啥型号啊? esp32之类么

出100入312汤圆

22
发表于 2024-4-12 18:16:41 来自手机 | 只看该作者
tomzbj 发表于 2024-4-12 17:42
啥型号啊? esp32之类么
(引用自21楼)


散户可能还买不到,某模拟大厂新推的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-30 04:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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