1回答

0收藏

[求助] STM32H7的MPU配置与D-Cache冲突如何解决??? ??

STMCU STMCU 357 人阅读 | 1 人回复 | 2025-06-23

STM32H7的MPU配置与D-Cache冲突如何解决????[color=var(--md-box-samantha-deep-text-color)]硬件环境
  • [color=var(--md-box-samantha-deep-text-color) !important]MCU 型号:STM32H743VIT6
  • [color=var(--md-box-samantha-deep-text-color) !important]开发板:自定义板(或 STM32H743I-EVAL 等)
  • [color=var(--md-box-samantha-deep-text-color) !important]外部晶振:25MHz HSE,16MHz LSE
  • [color=var(--md-box-samantha-deep-text-color) !important]调试工具:ST-LINK/V2-1
  • [color=var(--md-box-samantha-deep-text-color) !important]供电:3.3V 稳压器
[color=var(--md-box-samantha-deep-text-color) !important]软件环境
  • [color=var(--md-box-samantha-deep-text-color) !important]开发工具链:Keil MDK v5.37(或 GCC Arm Embedded Toolchain 10.3-2021.10)
  • [color=var(--md-box-samantha-deep-text-color) !important]RTOS:FreeRTOS v202112.00(或裸机)
  • [color=var(--md-box-samantha-deep-text-color) !important]CubeMX 配置:
    • HCLK = 480MHz,D1 APB3 = 120MHz
    • D-Cache、I-Cache、MPU 均启用
    • 系统时钟配置通过 HAL_RCC_ConfigSystemClock () 完成

[color=var(--md-box-samantha-deep-text-color) !important]问题现象
  • [color=var(--md-box-samantha-normal-text-color) !important][color=var(--md-box-samantha-deep-text-color) !important]错误触发条件:
    • 仅当同时启用[color=var(--md-box-samantha-deep-text-color) !important]D-Cache和[color=var(--md-box-samantha-deep-text-color) !important]MPU时出现。
    • 关闭 D-Cache(SCB_DisableDCache())或 MPU(MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk)后,系统运行正常。


分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

a1a1a21

发表于 2025-9-23 14:40:57 | 只看该作者

确保MPU区域配置与缓存策略匹配:

MPU可以设置内存区域的权限和缓存策略(如是否可缓存、写通、写回等)。如果MPU配置的缓存策略与D-Cache的行为不匹配,可能会导致数据不一致。

例如,如果某个内存区域被配置为“设备”类型(通常不可缓存),但D-Cache却缓存了该区域的数据,则会导致问题。因此,需要确保MPU区域配置为正确的内存类型和缓存策略。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

33 积分
2 主题
+ 关注
热门推荐
关闭

站长推荐上一条 /3 下一条