DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率,可以大大节省系统资源。
可是实际情况:
1.DMA 传一小块数据的时候 基本上没什么用 CPU还是得等他处理完,才能处理别的
比如我用DMA 在ADC采集上,我要采集64次然后平均 滤波来使用,因为我是连续采集64次, 所以还是得等采集完了,得到处理结果,才能执行下一步,而不能CPU去处理其它事,再回来找这个结果. 也就是 DMA任务时间小于我的任务切换时间的, 用处真不大.
2.如果传一大块数据,CPU可以去干别的 然后用DMA中断来处理传据结果
比如 用DMA 传输SDIO SD文件数据 一次传几KB的数据 可能时间大于任务切换的时间,就不可能一直在那里等它,等到DMA传完,中断后,再来处理. 很多时间 我宁愿一小块一小块的传,便于处理. 这样下来 感觉DMA用处真不大了.
欢迎大家来讨论一下.
|