原创 如何重启SG-DMA

2009-8-11 21:16 4496 2 3 分类: FPGA/CPLD
    由于项目的需要,我们用到了Altera公司的SG-DMA这一IP核。

    很多次我们想将SG-DMA重启,本来以为调用alt_avalon_sgdma_stop()这一函数即可,但是调用此函数后,后面再让SG-DMA根据描述符传输的时候问题出问题,比如有一次我们调用这一函数后,构造了一个描述符(stream_to_mem),此描述符指示SG-DMA传输时一直等到EOP信号再停止,结果SG-DMA,无论如何也停止不了。

    今天特意从Altera公司介绍SG-DMA的文档中查找关于停止或者重启SG-DMA的方法,发现其控制寄存器(CONTROL)有一位是SW_RESET,即软件复位,上面讲“Software can reset the core by writting to this bit twice.Upon the second write,the core is reset.The logic which sequences the software reset process then resets itself automatically”.Executing a software reset when a DMA transfer is active may result in permanent bus lockup until the next system reset.Hence,Altera recommends that you use the software reset as your last resort.

    我在想要复位的地方调用IOWR_ALTERA_AVALON_SGDMA_CONTROL函数将此位置为1,只写了一次,然后再像上述那样的描述符就可以传了。

    我一直纳闷为什么整个文档都没有介绍关闭SG-DMA的内容,难道开启了之后就像上了贼船似儿的下不来了吗?唯一有这么个软件复位的地方还可能引起死锁。大家如果知道解决方法,请不吝留言赐教。

文章评论1条评论)

登录后参与讨论

502593045 2011-3-21 17:25

关注!!!
相关推荐阅读
lijianfei2006_ok_469130939 2010-01-14 11:19
【转帖】#pragma pack(n) 对齐用法详解
什么是对齐,以及为什么要对齐:     现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这...
lijianfei2006_ok_469130939 2009-12-13 17:19
年终个人总结
伴随着滴答滴答的钟声,2009年马上就要过去了,感谢Dian团队在时光流逝的同时给予我的历练和成长。回首在Dian团队度过的2009年,经历了太多的事情,7、8月份的千兆网卡项目攻坚阶段、9月份的保研...
lijianfei2006_ok_469130939 2009-12-11 19:00
【转帖】生活中常用的14条著名法则
    一、马太效应          八、 水桶定律  二、 手表定理          九、 蘑菇管理  三、 不值得定律         十、 奥卡姆剃刀定律  四、 彼得原理         ...
lijianfei2006_ok_469130939 2009-11-29 14:11
种子班课程总结
    回顾大三这一年的课程、项目和生活,课程有很多特色,通过项目实践自己的能力有了很大的提高,生活在一种快节奏的旋律中度过。在大学里最重要的一年,我通过在种子班的学习和生活,各方面的能力都有了很大的...
lijianfei2006_ok_469130939 2009-11-29 14:09
大三项目总结
    前面所做的两个项目中,《千兆网转换卡》项目另我印象尤其深刻,在此项目中,我结识了优秀的学长,学到了高深的技术,在项目中,更夹杂着酸甜苦辣。下面就以此项目为代表,介绍自己大三一年的项目情况。 1...
我要评论
1
2
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /3 下一条