硬汉嵌入式论坛

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

关于H7系列MPU配置的S位的问题

[复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2023-12-21 17:17:15 | 显示全部楼层 |阅读模式
下载 (2).png

如果我配置一块内存区域如下图:

下载 (3).png

这块内存用户需要填充数据,同时需要使用DMA将内存中的数据发送到外设。

如果在 用户写 和 DMA传输 同时操作了这块内存。这种情况算不算多个总线访问一块不共享的内存,从而会产生错误?那么这种错误会导致什么?是单纯的传输数据错误?还是会进入hardfulat异常?

附一下背景:
H743+裸机lwip(TCP传输)
需要在中断中做高速采集并填充数据,填满之后用TCP发送出去(while循环中发送)。
为什么会想到这种奇葩的问题呢?
是因为突然想到之前做的一个项目,使用到了lwip(TCP)发送大量数据,当时参考了一位ST员工的配置就是上图的,链接在这里:如何使用以太网为STM32H7创建项目?- STMicroelectronics 社区
在高采样率下发送的时候一直会程序崩溃(低采样率可以正常运行),每次用抓包工具观察也都是 在对方发送回应包(数据丢失)之后的几包就出错了。
而lwip TCP内部是有一个缓冲区(存放暂未发送出去的数据),会不会就是在这些数据交互的过程中,DMA和用户同时操作了非共享的地址,导致了程序崩溃?
后来改成用UDP就没问题了,但是这个问题一直没有解决,当时尝试用了一下带操作系统的lwip(TCP),高采样率下可以正常传输,但是采集的信号质量很差。

回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2023-12-22 08:57:49 | 显示全部楼层
图怎么看不到
就是MPU配置时
TEX位为001
S/C/B位都为0
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-12-22 09:24:00 | 显示全部楼层
有个这个概率,可以开启S试试。我们的网络例子,动态内存这块一直配置的这个Device模式,这个模式下不管S是0还是1都是共享的

123.png




回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2023-12-22 11:25:04 | 显示全部楼层
eric2013 发表于 2023-12-22 09:24
有个这个概率,可以开启S试试。我们的网络例子,动态内存这块一直配置的这个Device模式,这个模式下不管S是 ...

谢硬汉哥,主要是现在手头上没有这个环境了,所以测试不了。以后遇到类似的问题是应该设成device模式
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 06:59 , Processed in 0.283233 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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