我是嵌入式设备编程的新手。我有一项任务是从DSP存储器地址读取数据块并将其复制到其他地址(其他外设被映射)。通过编程设备中的一个DMA通道来完成复制过程。 我希望,除了第一个副本之外,还要复制其他地方复制的数据。
现在我的问题是,如果我在第一个DMA开始执行其工作后立即使用第二个DMA通道并触发其复制操作,那么两个DMA操作是否会以某种方式相互冲突?
答案 0 :(得分:4)
取决于,我确定,你在做什么,但不是,DMA通道不会“碰撞”,虽然可能会抢先一个。
如果您在某个Microchip dsPIC33F器件上使用它,则DMA的要点是访问独立于CPU。如果你的时间正确,那么你可以将DMA时序与时钟时序相匹配,并获得原子读取或写入。此外,您最多可以有8个单向通道,这些通道按优先级排序。
在那个平台上,我相信,(我不知道)两个DMA通道不会同时运行,它们将根据特定通道的优先级依次运行。即使优先级较低的频道首先启动,优先级较高的频道也会先完成。
所以,是的,您可以将信息复制到两个不同的位置,而不会耗尽CPU时钟,但这需要两倍的时间。