硬汉嵌入式论坛

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

[DMA] H7视频教程第14讲,关于DMA的memTomem实验,为什么0x24010000里的值没有完全更新

[复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2023-3-21 10:25:51 | 显示全部楼层 |阅读模式
在看 硬汉哥H7视频教程第14讲,视频时间在第37分钟。这里用例子讲解了  DMA 内存到内存。 配置为 透写,read allocate。 源地址是 0x24000000,目的地址0x2410000。为什么目的地址0x2410000里的值

没有完全更新呢?难道 DMA 从源地址到目的地址,不是 写入到目的地址吗?  这里已经配置为透写了。为什么没有写入到目的地址? 而且目的地址本身不在cache里,是不能写命中的,为什么没有更新。
谢谢!

另:请问 视频里的 测试 源码在哪里可以得到。谢谢
11.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-3-21 10:34:23 | 显示全部楼层
1 例子在论坛置顶帖V7网盘里面,你截图的MDK左上角就是MDK例子名称。
2 会更新,DMA前和DMA后都做Clean无效化操作即可

加速 = 加上
QQ截图20230321103420.png


回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-3-21 11:10:07 | 显示全部楼层
本帖最后由 GHLDD 于 2023-3-21 11:25 编辑

硬汉哥:
谢谢! 我明白 用了 SCB->CleanInvalidataDCache(). 这个 可以更新。这样 会无效 Cache,把 SRAM的最新数据加载到  read  Cache里。

我是 不明白:先用 for 循环给 源地址 赋值的时候 在 MDK 的 memory 查看器里看到源地址里的值更新了。  DMA传输之后为什么在 MDK的 memory里查看  目的地址 的值 没有更新。我个人感觉本质上讲 for 给 源地址赋值,和DMA给目的地址赋值,都是写 操作。 这里 是 透写。为什么 目的地址里的 数据 在 MDK 的 memory 里查看 好像是 部分 读命中的样子。而源地址里的 值每次从 MDK 的 memory 里看 ,都是最新的。

再次感谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-3-21 11:23:16 | 显示全部楼层
GHLDD 发表于 2023-3-21 11:10
硬汉哥:
谢谢! 我明白 用了 SCB->CleanInvalidataDCache(). 这个 可以更新。这样 会无效 Cache,把 SRAM ...

特别注意,如果你开了读Cache,MDK的memory读取的也是Cache的(命中的情况下),所以要DMA传输完毕后,用我二楼的处理,你的memory查看就正常了。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-3-21 12:03:05 | 显示全部楼层
硬汉哥:
    还是我没有讲清楚。

我的问题是:
    在 关闭写cache   打开读cache 的情况下。  For 循环的写 和 DMA 的写。都是 透写,读都是 从cache里读。 为什么 MDK 的 DMA源地址  memory 每次都看到的是新值,而 DMA目的地址  memory 每次都看到都是 旧值 。

感谢 硬汉不吝赐教! 谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-3-21 12:20:30 | 显示全部楼层
GHLDD 发表于 2023-3-21 12:03
硬汉哥:
    还是我没有讲清楚。

主要是两个方面
1、Cache大小有限,只有16KB数据Cache。这么大的空间,这个命中了,其它的就没法命中了。
2、另外这个是Cache算法自己的处理机制,用户没法控制。
回复

使用道具 举报

210

主题

1042

回帖

1682

积分

至尊会员

More we do, more we can do.

积分
1682
发表于 2023-3-21 15:53:51 | 显示全部楼层
简单原则:仅CPU访问的使用Cache,有DMA或外设访问的RAM不使用
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-3-23 09:38:12 | 显示全部楼层
谢谢 楼上 诸位大神
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2023-6-29 16:21:16 | 显示全部楼层
eric2013 发表于 2023-3-21 10:34
1 例子在论坛置顶帖V7网盘里面,你截图的MDK左上角就是MDK例子名称。
2 会更新,DMA前和DMA后都做Clean无 ...

我想问一下,就是我做了无效化处理,但接受数据一直是一样的,然后我前后向您一样,就接受不到数据,具体是为什么呢
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2023-6-30 08:31:27 | 显示全部楼层
huawei 发表于 2023-6-29 16:21
我想问一下,就是我做了无效化处理,但接受数据一直是一样的,然后我前后向您一样,就接受不到数据,具体 ...

描述清楚一些 mpu是什么配置 哪里到哪里搬运数据 现象是什么
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 13:20 , Processed in 0.222635 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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