Cortex-M4内存争用(针对程序的DMA)

时间:2017-03-13 22:46:12

标签: dma cortex-m contention

我正在使用STM32F4xx控制器。 我用DMA来缓冲UART(循环缓冲区)。 我担心的是,如果我的程序在与DMA同时访问相同的内存位置时会出现内存争用。

可以通过这种方式进行争用,还是控制器有措施防止这种情况发生?

感谢。

1 个答案:

答案 0 :(得分:1)

我在STM32F401手册中找到了这个:

  

BusMatrix管理主设备(CPU,DMA)之间的访问仲裁。仲裁使用循环算法。

由于仲裁,DMA(或CPU)可能无法进行转移(在适当的时间)。这会导致欠载/溢出错误(在DMA中,CPU将等待)。

  

如果由于超限或欠载条件设置了DMEIFx或FEIFx标志,则故障   流不会自动禁用,由软件通过重置DMA_SxCR寄存器中的EN位来禁用或禁用流。这是因为发生此类错误时不会丢失数据。