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

关于STM32H7使能MPU后直接进入HardFault的问题

[复制链接]
攻城狮Melo 发布时间:2022-11-4 16:11
背景:
" }7 f3 n" p$ ~5 x        在使用CUBE+STM32H743进行开发时,打开了cache,在利用DMA往外发一些数据时出现了发送几次的数据都一样的问题,经过分析,认为是cache的存在导致DMA发送的内存区域的数据未及时更新。网上翻了翻,找到两个办法解决:1、在DMA发送之前使用SCB_CleanInvalidateDCache(),将cache中标记为dirty的数据写入对应存储区,并腾出相应的cache空间;2、打开MPU,标记DMA发送的内存区域能进行透写)。. {9 f5 f3 o+ r  z

$ ^5 i0 g7 V. U; y& U" ^8 ?4 X        我在CUBE上的MPU配置如下:, v( d+ ?8 L, w
, M) C/ f& F" u# l4 ?
236d69f2eb954097a07f59f79da86078.png . f) H3 T. y( J$ Y) J' R1 Q

4 c* ~0 t6 M# I 编译后debug,在进入MPU_Config后,直接进入了Hardfault;( f1 u: f; u7 P

& M" a7 Z; @5 M: a解决办法:6 C. q( D  [( @! w% W" {
3 L# C9 [/ Z  }) S1 ?! t  r" z$ [
        我使用MPU仅仅管理了一小部分内存区域,其他内存未使用MPU管理起来,因此需要使能背景区域(Background Region),否则任何访问违例以及对region外地址区域的访问都将引起fault,做如下更改即可
0 N4 J0 I8 c. g1 n7 ]" d' |
* s; m5 O" V9 n4 J5 i 9c1c0e65a31a46f194c556c958044068.png & T" h. j# ]* n' P+ d
8 m3 X! D2 _/ n$ H) ~1 M' ^
————————————————0 I4 h9 k/ u  v6 ~
版权声明:balibala0 c, b4 z- Q' D

3 k  a$ g) z9 @3 `* U- V- x
赞 收藏 评论0 发布时间:2022-11-4 16:11

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版