你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请问STM32H7 在设置MPU时 为什么将SRAM1地址开始的512K(SRAM1-3)设置为Strongly ordered memory会死

[复制链接]
传说中的路过 提问时间:2024-3-6 14:32 / 已解决

微信截图_20240306143020.png

MPU配置截图

这样配置会进入hardfault,这么配置的原因是这段里某些地址我用做了ETH和LWIP的缓存 标识符啥的

不知道这么配置为什么就会进入Hardfault,但是如果我把MPU Cacheable Permission打开后,就是正常的

不知道各位大佬有没有遇到过

微信截图_20240306143020.png
收藏 评论6 发布时间:2024-3-6 14:32

举报

6个回答
传说中的路过 最优答案 回答时间:2024-3-7 10:02:03

xmshao 发表于 2024-3-6 17:10
你就先这样配置测试下吧,配置成device:</p>
<p>

发生问题是因为发生了未对齐访问 也就是我读取到SCB->CFSR寄存器为0x01000000,我正在寻找是哪里出现了未对齐访问

在M7 TRM的手册里有这样的说明 device 和strongly-ordered 是不能未对齐的,normal是可以的,所以我配置成normal类型是可以用的,device和strongly-ordered类型会硬错误

微信截图_20240307095826.jpg

xmshao 回答时间:2024-3-6 17:10:08
你就先这样配置测试下吧,配置成device:


Cacheable=Disable;
Bufferable=enable;
shareability =disable;
xmshao 回答时间:2024-3-6 16:25:08
这里做些分析,给些参考:


如果你想把某块区间配置为strongly ordered属性,意味着这块区域是共享的。


就你现有配置,此时那个shareable属性怎么设置不关注了。


然后你调整Cacheable permission又OK了,假定其它配置如你贴图所示,这时


这块存储空间变成不共享了。 难道说是因为共享访问导致的异常?


不过可以肯定,这块区域的Cacheable属性是可以开、关的。


感觉你是担心因为Cache导致一致性问题,这个地方配置成device属性比较合适。


比如你这样配置试试:


TEX=0;
Cacheable=Disable;
Bufferable=enable;


至于shareability配置,你根据需要来,需要共享就enable,不需要就disable.
传说中的路过 回答时间:2024-3-6 16:21:32

是因为SRAM1-3的地址空间不可以设置为Strongly ordered类型吗

传说中的路过 回答时间:2024-3-6 17:35:28

xmshao 发表于 2024-3-6 17:10
你就先这样配置测试下吧,配置成device:</p>
<p>

不太行 不过TEX=1 C=0 B=0 S=0或者TEX=0 C=1 B=0 S=0 都是OK的 是不是SRAM本身必须要用Normal,而不能用device或者Strongly ordered类型啊

xmshao 回答时间:2024-3-8 09:50:07

传说中的路过 发表于 2024-3-7 10:02</p>
<p>发生问题是因为发生了未对齐访问 也就是我读取到SCB-&gt;CFSR寄存器为0x01000000,我正在寻找是哪里出现 ...

[md]en.谢谢反馈!

strongly ordered是有这个限制。不过 非对齐访问导致出错 是可以看到相关提示的。

还有就是你这个地方不建议配置为strongly order,太浪费性能了。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版