DMA数据传输的时候,CPU可以同时并行处理其它任务吗?

2019-12-15 11:16发布

000.PNG (23.71 KB, 下载次数: 0) 下载附件 2018-11-24 13:02 上传

想请教下各位:

问题1:上述说法是正确的嘛?还是说每种类型的单片机在DMA这块机制不一样?

问题2:如果上述说法正确的,为什么在进行DMA传输的这段时间内需要挂起CPU?这样使用DMA有什么意义?

问题3:如果上述说法不正确,那么是否会产生资源共享的问题(在DMA传输的这段时间内,DMA也可以看作某种意义上的CPU,与真正的CPU进行资源竞争)?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
aozima
2019-12-15 17:00
CPU的指令中不是所有的指令都在访问总线,所以DMA可以在非数据访问时占用。

DMA也不是一直在访问总线,比如UART速度慢,DMA只有收到触发信号时才传输一个字节。

即使两边碰撞了,还有总线仲裁,会把其中一个暂停一下。
这个暂停的代价比CPU产生中断执行一个ISR小几百倍。

另外总线上面还分不同的BANK,这样CPU和DMA同时访问不同的区域时也不会冲突。

对普通用户来说,可以简单理解为并行就可以了。
如果带宽要上几十MB以上才考虑这块这块的效率。

一周热门 更多>