硬汉嵌入式论坛

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

[GUI] H7 开启I-Cache和D-Cache以后LVGL透明图标显示有条纹

[复制链接]

18

主题

19

回帖

73

积分

初级会员

积分
73
发表于 2025-12-1 11:40:06 | 显示全部楼层 |阅读模式
使用的是STM32H723,开启I-Cache和D-Cache以后用LVGL显示透明背景的图片会有条纹(显示非透明背景的图片正常),关闭I-Cache和D-Cache以后透明背景的图片显示正常,但是就变的很卡了。
有没有大佬知道是什么原因啊,为啥开启I-Cache和D-Cache会影响透明背景的图片显示。

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120448
QQ
发表于 2025-12-1 11:50:40 | 显示全部楼层
多主控场景都会有Cache数据一致性问题。LTDC, CPU, DMA2D都访问控制显存
开启Cache,底层驱动接口手动管理Cache Clean和无效化操作,比直接关闭稍好点。
回复

使用道具 举报

18

主题

19

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2025-12-1 14:08:31 | 显示全部楼层
eric2013 发表于 2025-12-1 11:50
多主控场景都会有Cache数据一致性问题。LTDC, CPU, DMA2D都访问控制显存
开启Cache,底层驱动接口手动管理 ...

怎么手动管理啊
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120448
QQ
发表于 2025-12-2 09:35:43 | 显示全部楼层
geryznk 发表于 2025-12-1 14:08
怎么手动管理啊

找到底层DMA2D读写显存的地方。

对于DMA2D写操作,在DMA2D操作前调用SCB_CleanInvalidateDCache
对于读操作,在DMA2D操作结束后,注意一定是结束后调用SCB_CleanInvalidateDCache
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2025-12-11 15:28:32 | 显示全部楼层
在main.c添加这个试试,强制开起Cache写回
/* USER CODE BEGIN Init */
  SCB->CACR |= 1 << 2;
  /* USER CODE END Init */
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120448
QQ
发表于 2025-12-12 11:02:16 | 显示全部楼层
miap 发表于 2025-12-11 15:28
在main.c添加这个试试,强制开起Cache写回
/* USER CODE BEGIN Init */
  SCB->CACR |= 1

这个是全局的修改,对性能影响比较大。建议单独地址,单独MPU Cache设置,性能影响小。
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2025-12-12 20:31:41 | 显示全部楼层
eric2013 发表于 2025-12-12 11:02
这个是全局的修改,对性能影响比较大。建议单独地址,单独MPU Cache设置,性能影响小。

好的,学习了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-10 17:23 , Processed in 0.041674 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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