打印

求助:DMA的问题

[复制链接]
1880|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
haibian826|  楼主 | 2007-6-16 22:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助: 
    我今天看了一下5402的DMA ,有点云里雾里。。。
    脑袋里就几个寄存器,比如,DMPREC,DMSA,DMSDI,DMSDN,等等

    然后看了一些程序初始化设置

请问,我应该如何理解DMA ,它一般都用在哪个地方?用来数据块传送?
   哪位高手,如过有这方面的程序,能否给我一个?最好是带解释的 
 

谢谢!

相关帖子

沙发
haibian826|  楼主 | 2007-6-16 22:30 | 只看该作者

补充问题。。。

请问高手:
    在5402DSP的内核中,是否真实的存在一个物理 空间为DMA控制器?

还是象各个寄存器一样,是一个“虚拟”的东西?

使用特权

评论回复
板凳
wowow| | 2007-6-19 12:57 | 只看该作者

DMA就是个搬运工

CPU平常挺忙的,经常没空去搬。而且有的数据来得也慢,时不时中断一下去取数据也挺烦的。

以下是以前写实验指导书中的部分文字:
DMA是直接存储器存取,是一种传送不占用CPU处理时间的大批量数据传送的有效方式。我们用以下实例来说明它的应用:
    如果我们要做一个音频处理系统,需要连续用McBSP接口的语音芯片采集若干个样本进行处理,比如频谱分析、音频压缩等。本例假设要每采集256个样本进行一次处理。上例用的是查询方式,占用了所有CPU资源。可以用中断方式,结合前面的实验不难做到,请同学们自行完成。在这个实验中我们将介绍一个更有效的DMA传送方式。我们比较一下用中断方式和DMA方式的效率有何不同:
    一、中断方式:每当中缓冲串口接收一个16bit样本的数据,触发一次串口接收中断,将数据转移到一个256 word的数据接收缓冲区并计数。当计数达到256个,即缓冲区满时,将256个数据转移到数据处理存储区,并通知主程序进行处理。
    二、DMA方式:我们使用一个通道自动接收McBSP传来的数据并存入接收缓冲区,当缓冲区满时触发DMA中断,将256个数据传送到数据处理存储区,传送完毕触发通知主程序进行处理。
    由上比较可见,每接收一批样本,用中断方式将触发256次中断,也就是主程被打断256次去接收数据。而用DMA方式,只在全部256个样本全部接收完毕时发生一次中断,这时主程序应该已经处理完上一批的数据。
    进一步考虑,当数据处理完毕后还需要将数据送走,这时又可以采用另一个DMA通道完成这个任务,将CPU释放出来等待进行下一批样本的处理。
    事实上DMA传送并非比用CPU直接处理快,例如在内部存贮器之间传送时,用CPU需要2cycle/word,而用DMA要4cycle/word。DMA的优势在是把CPU解放出来做其它的事。

使用特权

评论回复
地板
小李志| | 2007-6-19 13:01 | 只看该作者

经典,

使用特权

评论回复
5
lianpan| | 2007-6-21 17:25 | 只看该作者

经典

跟后来的6000系列的EDMA功能也差不多

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

227

帖子

3

粉丝