稍微详细探讨一下:
对于你说说的2和3,分成2种情况
一、计算速度能满足数据采集周期间隔要求
二、计算速度不能满足实时数据采集间隔要求(这时你们需要定义对这些过多数据如何处理,下面不再讨论)
对于一、其实又分为至少2种情况
1、 可直接调用寄存器数量满足数据存储需要
2、 不寄存器数量不满足需要,这样肯定是先存内存啦
对于1,还要分析是否有途径满足直接IO数据放置到寄存器中,即使能,可能编程复杂度也会比较高,当然为了极致的速度,开发难度是可以克服的。
使用DMA会极大的减轻CPU负担。使用DMA读取数据到内存,读取过程中不影响CPU处理其他程序,读取结束使用中断或者信号量通过任务处理数据。
如果使用IO方式,并且不使用实时系统,那么IO读取大量数据会影响其他功能的实时性。
如果使用IO方式,且使用实时系统,那么IO读取大量数据可能是一个单独的任务(其他功能的实时性也许可以保证),也会导致系统调度的开销。
总结一下,还是使用DMA好一些。
实时的话,还是不要用DMA了,直接处理数据。
如果实时性要求不高,可以使用DMA,收到一部分数据后再处理
你所谓的大运算量是数据多,还是运算的步骤多,还是......
不过基本上都是先把涉及的数据读入内存中计算比较好,因为IO口读数据是一个比较慢的操作,和普通运算来说是数量级的差别。如果能一次性预先读入内存,使用时会方便很多。
本人的数据量大分3种情况:1. 针对获取的图像信号的处理——非常适合在内存中处理;2. 实时采集的并行数据;3. 定时间点促发得到的数据。这里问的是后两种情况,对实时性要求较高。谢谢