This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于SRIO发送数据,接收端用DMA搬移数据太慢,改如何处理。



图1

图2

图3

图4为发送端

图5 为SRIO在中断中用DMA搬移数据

如图所示:图1,2,3,是console输出的结果,图4,5是程序的部分截图,图4是发送端的,图5 位接收端,通过图4,图5打印的信息可以判断程序的进展。现在的问题是,图1打印的情况是正常的,图2打印的情况就不正常了,应该是先打印出收到1024个Doorbell,然后在是0.出现这样的情况就会导致第二次传输数据的时候,传输的数据前面一部分丢失了。第三次也是如此。我不知道应该怎么解决这个问题,发送端数据的发送频率是理论需要,不能改动,主要是接收端,感觉是DMA搬移的不够快。

请问各位大仙,如何解决这个问题?

  • 没太明白你的意思,接收端是多核接收吗?如果是多核接收,由于doorbell是中断相应打印出来的,会增加相应延时的

  • 您好,Thomas Yang1 ,非常感谢您的关注!

         是我发送端一直在发送一堆数据,本来是发送端打印1920信息的时候,接收端应该打印收到1024个doolbell,就如同第一次的图1一样,但是呢,图2和图3就是发送完1920之后,又发送了一些数据,接收端才打印收到1024个门铃,也就是说,第二次是,第三次是接收端丢失了数据的开头部分。

         发送端是对一块数据进行循环的发送,打印1920的时候,就是发送完了这一块数据,接着重复发送这块数据。我知道您说的printf函数也会耗一定的时间,但是,不加这句,数据也不对,不加的时候,就只能看数据对不对了。您看看我描述清楚就吗?

  • 发送端 是多核调用SRIO驱动对同一块数据区进行循环发送,还是单核发送?因为你的打印中来看是多核