我是嵌入式设备编程的新手。我有一个任务从 DSP 内存地址读取数据块并将其复制到其他地址(映射其他外设的位置)。复制过程是通过对设备中的一个 DMA 通道进行编程来完成的。除了第一个副本之外,我还希望将该数据的副本复制到其他地方。
现在我的问题是,如果我使用第二个 DMA 通道并在第一个 DMA 开始工作后立即触发其复制操作,这两个 DMA 操作会以某种方式相互冲突吗?
我敢肯定,这取决于您在做什么,但是不,DMA 通道不太可能“冲突”,尽管一个通道可能会抢占另一个通道。
如果您在 Microchips dsPIC33F 设备之一上使用它,则 DMA 的关键在于访问独立于 CPU。如果您的时间正确,那么您可以将您的 DMA 时序与您的时钟时序相匹配并获得原子读取或写入。此外,您最多可以有 8 个按优先级排序的单向通道。
在那个平台上,我相信(我不知道)两个 DMA 通道不会同时运行,它们会根据特定通道的优先级一个接一个地运行。较高优先级的通道将首先完成,即使较低优先级的通道首先开始。
所以,是的,您可以将信息复制到两个不同的位置,而不会耗尽 CPU 时钟,但这需要两倍的时间。