我面临一个奇怪的缓存问题。我使用耦合到
DMA的DCMI,以便将图像采集到外部
SDRAM中。如应用说明 AN4839 中所述,我按照这种方式进行。
- 在开始 DMA 传输之前,我清理缓存 ( cache_D_Clean(); )
- 在传输结束时(在指示结束的 DMA 中断中),我使缓存无效(cache_D_Invalidate();)
一切都在
STM32H7 上完美运行。
在stm32F7上,缓存失效例程一被调用,CPU就会产生
总线错误。
在 stm32F7 上,在指示传输结束的 DMA 中断中,我将缓存失效 (
cache_D_Invalidate() ;) 替换为缓存清除,然后是缓存失效 (
cache_D_Clean(); cache_D_Invalidate(); )。添加一个干净的(
cache_D_Clean();)似乎可以避免总线错误,但我不明白为什么。
为什么 H7 和 F7 缓存在同一代码上的行为不同?
感谢您的反馈。
知道为什么吗?