本帖最后由 hpdell 于 2017-3-30 12:05 编辑
F7的单片机,开启 cache 后,uart-idl+dma接收不到数据,中断可以进入,
SCB_EnableICache(); //使能I-Cache
SCB_EnableDCache(); //使能D-Cache 后,
使用usart+dma 接收就不行
屏蔽后uart+dam可以,但sd卡又不行
该如何处理啊 ??
sd卡使用 查询模式,
感觉这个f7的 cache 使用起来很麻烦,
其他的 mpu 保护还没有进行任何设置
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
- 使用 DMA,就要注意 cache 一致性的问题。
- DMA 是绕过 CPU,直接进行的数据搬运操作。
- 如果开启数据 cache 的话,CPU 对于内存的认知来源,是源自 cache,cache 的数据分布,是由 CPU 管控的。
- 而 DMA,却自己改变了物理内存的数据分布,此时 CPU 一无所知,CPU 依旧认为内存数据木有变化, 也就不会去无效化、重新刷新 cache。
- 此时,就会出现 cache 数据与物理内存数据的不一致问题。
- 因此,DMA 操作,要嘛关闭 cache,要嘛就是要注意主动去无效化 cache,而不是什么也不做,因为你不做,CPU 也不会去做什么(它压根就感知不到数据有变化)。
一周热门 更多>