硬汉嵌入式论坛

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

[Cache] 开cache 读写问题

[复制链接]

6

主题

4

回帖

22

积分

新手上路

积分
22
发表于 2020-10-20 08:53:05 | 显示全部楼层 |阅读模式
硬汉的h7手册说开了cache,会导致dma和sram数据读写不一致问题,而且不论哪种设置都有可能出现。那这个问题应该怎么解决,总不能再去把每次的数据做个校验吧,开dma本来就是为了加速,再去对每个数据校验不是浪费时间,而且万一错了怎么办,直接把所有数据丢弃?
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2020-10-20 10:58:23 | 显示全部楼层
使用cache机制,需要dma时候强制无效化读缓存或者清空写缓冲
回复

使用道具 举报

3

主题

70

回帖

79

积分

初级会员

积分
79
发表于 2020-10-21 08:02:18 | 显示全部楼层
关于CACHE,两种办法:
1. 使用MPU将需要DMA处理的SRAM,设置成CACHE WT;
2. 使用SCB_CleanDCache,SCB_CleanInvalidateDCache等按需无效化读缓存或者清空写缓冲。
个人一开始使用方法2,后来使用方法1,详见AN4839, AN4838
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2020-10-21 09:25:28 | 显示全部楼层
我来说几个关键点,剩下自己看教程即可。





1、普通DMA1,DMA2并没有加速作用,而且性能非常捉急,他们最大的作用就是降低CPU利用率。

STM32H7的MDMA,DMA2D和DMA性能测试出来了,DMA2D和MDMA有一拼,DMA1和2的性能太挫
http://www.armbbs.cn/forum.php?mod=viewthread&tid=94058


2、玩不转的时候,最简单的方法就是如下配置。

最低性能配置就跟使用F1,F4的RAM没区别了,读Cache和写Cache全部关闭,玩不转,建议这种方式。
最高性能配置是读Cache和写Cache全开。

http://www.armbbs.cn/forum.php?mod=viewthread&tid=99322

3、剩下自己看教程即可,MPU和Cache章节

http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980




回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 22:07 , Processed in 0.208634 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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