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.

c6678网口通信问题



利用论坛提供的c6678例程,实现两个dsp间的网口通信。dsp型号:都是c6678。emac端口都选用port1,按例程要求,发送代码运行在核0,接收代码运行在另一dsp的核1。先发现一个问题:

当发送数据端每一包数据发送间加入很大的延时时,接收端收到的数据都是一样,查看了接收端accumulation固件获取的descriptor的首地址指针都不变。;如果发端不加延时,收端则没有问题,accumulation获取的descriptor首地址指针则按0x20增加,请问是什么原因。感觉发端应该没有问题,通过网络调试助手抓的数据包争正确,主要是收端的配置。烦赐教

  • 走的TCP还是UDP协议?用的哪个协议栈?NDK?

  • 走的mac层,不带协议栈,论坛上下载的KI_STK_c

    6670_6678_6614例程

  • 接收侧accumulation设置成1个entry产生1个中断测试一下呢

  •    你可以看看看看 Multicore Navigator和Gigabit Ethernet (GbE) Switch Subsystem 这两个手册。

    程序中有一句 GE_QMSS_Accumulation_config(1, 4, Qmss_AccPacingMode_LAST_INTERRUPT);

    应该就是 所说的设置中断函数。

  • 这个函数的参数我都有修改过,第二个参数我改为1,第三个参数我改为Qmss_AccPacingMode_NONE,但都一样。我现在又发现了一些现象,描述一下:

    现在我修改程序后,第一次连续发5包数据,每包数据长为64字节,每包数据相同,相邻包数据递增,隔一秒钟后再发第二次,第二次连续发10包数据,发现,15包数据均收到,取每包一个数据记录为0 1 2 3 4 4 3 2 1 0 a b c d e,而正确的数据记录应为:0 1 2 3 4 5 6 7 8 9 a b c d e, 通过网络助手发现发送端没有错误,接收的数据正确,分析问题应出在dsp接收端。查看接收中断服务函数,发现第二次收到的前5个描述符地址,就是第一次收到的5个描述符地址的逆转,即第一次收到描述符地址为:

    0x0c084900

    0x0c084920

    0x0c084940

    0x0c084960

    0x0c084980

    而第二次接收的描述符地址为:

    0x0c084980

    0x0c084960

    0x0c084940

    0x0c084920

    0x0c084900

    0x0c0849a0

    0x0c0849c0

    0x0c0849e0

    0x0c084a00

    0x0c084a20,

    实在搞不清是什么原因,觉得和延时或描述符回收相关,请解答