TI中文支持网
TI专业的中文技术问题搜集分享网站

SRIO数据接收问题

现在用6678的SRIO从FPGA接收数据,FPGA做主!现在遇到一个问题,就是怎么判断FPGA发送过来的数据已经到达DSP指定的空间,比如我想把数据发送到6678的SL2,待数据完全到达我才能对数据进行处理,开始用的是在数据的最后发送一个标志位,DSP一直查询标志位是否到达,但是这样如果多核操作占用总线!请问有什么好的办法吗?谢谢!

Andy Yin1:

在DIO方式下,可以发送doorbell中断,参考帖子及例程:

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/p/53665/123500.aspx#123500

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx

在message方式下可以通过配置Accumulator Queue等方式来产生中断。

Mark:

回复 Andy Yin1:

非常感谢您的回复,我现在是采用这个办法了。就是让FPGA方发完数据之后发送一个doorbell信号,但是遇到了一个问题。

在DIO模式下,我让对方在数据的结尾发送一个标志位,已知发送数据的长度。当我接收到对方的doorbell中断时,我查询数据最后的这个标志位,发现该标志位并未到达。所以我猜想可能是因为当数据发送过来时需要内部DMA搬运到我指定的DSP内存空间,而doorbell则直接去触发这边的中断。

数据搬运需要一定的时间,从而造成了doorbell先于我的数据达到,这样如果用doorbell来标志数据发送完毕,有点不合适,因为那时候数据并未完全到达相应的空间,因为数据占用总线的情况不同,所以数据到达晚于doorbell到达的时间也不一样,这个应该怎么解决啊,谢谢了!

hocodrecon:

回复 Brighton Feng:

想问一下,你说的中断之后再去查数据标志是什么意思,是指通过中断调用的函数置的标志,还是指其他的?

Brighton Feng:

回复 hocodrecon:

我的意思是在Doorbell中断服务程序中去查询数据标志,或者在中断服务程序执行完后去查询数据标志。

 

Mark:

回复 Brighton Feng:

您好,Brighto Feng,首先非常感谢您的解答,谢谢您提供的这两种数据接收方式!另外感谢您提供的C66XX多核开发驱动程序。

这几天又查看了一下SRIO的datasheet,发现doorbell其实可以专门可以用于DIO方式下数据发送完毕中断。在SRIO芯片手串的中断介绍那部分。不知道我理解的对不对,好像是说FPGA可以采用有response的写发送数据,等FPGA收到所有数据包的response后再发送doorbell,就可以保证数据完全发送到相应的空间。

如果FPGA向DSP发送数据,那么DSP收到每一包都会有一个response反馈。这个反馈好像就是来自于vBUS。但是我测试了一下,发现当FPGA将数据发送完毕后,要等好多个时钟才能全部收到所有包的response,这样可能发送效率也低些。

不知道我对芯片手册的理解对不对,手册的内容摘要部分如下:

 

Mark:

回复 Brighton Feng:

好的,非常感谢您的解答,谢谢!

zi yang:

回复 Brighton Feng:

你好,Brighton Feng,

我这里有一个 AIF2 的问题,如果你有时间请帮我看下,谢谢。

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/54952.aspx

赞(0)
未经允许不得转载:TI中文支持网 » SRIO数据接收问题
分享到: 更多 (0)