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.

[参考译文] CCS/TMS320C6670:PA EMAC 示例将 MAC 数据包传输到 PC、某些数据包丢失。

Guru**** 2613915 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/657052/ccs-tms320c6670-pa-emac-example-transmite-mac-packet-to-pc-some-packet-lost

器件型号:TMS320C6670

工具/软件:Code Composer Studio

我使用 PA EMAC 示例将 MAC 数据包传输到 PC、我进行了长时间测试。

例如、DSP 6670传输100000个 MAC 数据包、但 PC 仅接收99998数据包。

I checkd DSP 寄存器0x02090C34,该寄存器是"STATSB TXGOODFRAMES "寄存器,该寄存器记录传输的良好帧总数。 它显示了100000。

有人能告诉我为什么有 MAC 数据包丢失?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    如何记录 PC 接收到的数据包? 使用 Wireshark 之类的软件? 传输数据包的速度有多快? 此测试使用的软件是什么?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我使用名为 Omnipeek 的软件。 速度不快、为100Mbps。 Omnipeek 是 一种类似 Wireshark 的软件。

     

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、我们更清楚地知道数据包提交率、它们是连续发送还是两者之间有一些间距。 在类似的情况下、我们在其有效载荷中对数据包进行了编号、并检查了接收器侧的序列。 绝对不应损失。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我在发送大量使用非空间的 UDP 数据包时遇到类似的问题。 至少在我的案例中、我发现问题出在 PC 端。 我通过以下方式减少丢失的数据包:
    1.使用更好的开关
    2.使用更好的 PC
    3.增加接收套接字的 RX 缓冲区(默认 Windows 缓冲区为8K)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Alberto Chessa
    感谢你的答复。
    我还发现计算机的性能会影响结果、但我不确定计算机性能是否差会导致数据包丢失。 我也不知道如何解决这个问题。
    此外、我想问的是、TCP/IP 协议可以解决这个问题。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我将支持阿尔贝托的意见。 我们发现、如果数据包提交速度足够快、PC 就会用尽接收缓冲区。 我们解决了增加套接字的接收缓冲器的问题。 查找诸如 setsockopt (sock、SOL_socket、SO_RCVBUF、... 通过调整、我们不使用 Jumbos 就能获得300Mbps 的数据。
    至于 TCP/IP、需要考虑很多因素。 至少使用 TCP 需要使用 NDK 及其更多组件。 在我们的案例中、我们开发了我们自己的极其轻量化的 eth-IP-UDP 实现。 接下来、UDP 自然是数据报之间具有不同边界的数据包协议。 TCP 是流协议、如果您要交换消息、这种协议会发生很大变化。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨,很棒的泻湖!

    我尝试使用 Wireshark 捕获来自6678的数据包、 它看起来很好、没有丢失数据包。在6678中、我设置了"对于"将 MAC 数据包发送到比较器的周期"。

    其速度为723 Mbps。 如果总字节不超过 Wireshark 的缓冲区、则会接收到所有数据包。

    我有另一个板使用 TMS320C6670。 在该板中、我使用 SGMII 和 SRIO 接口。  我 以  以下方式发送 MAC 数据包:

     每次 SRIO 收到 SWRITE 数据包和门铃数据包时、6678都会向编译器发送 MAC 数据包。

    虽然(1)
    {
    //多任务线性是一个信号量、它从 SRIO 门铃 ISR 发布
    Semaphore_pend (多任务、BIOS_wait_forever);
    {
    IF (ICT_BU_BSP_SGMII_SendPacket (0、pktMatch_Test+6、1024+2、dst_MACAddr)!= 0)
    {
    System_printf ("数据包%d 发送失败\n");
    BIOS_exit (-1);
    }
    packet_send_cnt++;
    
    }
    } 
    静态空 myDorrbellFunc
    (
    UARG 参数
    )
    {
    CSL_SRIO_ClearDoorBellPendingInterrupt (hSrioCSL、DNUM、0xFFFF);
    CSL_SRIO_ClearLSUPendingInterrupt (hSrioCSL、0xFFFFFFFF、0xFFFFFFFF);
    DoorBell_rev_core++;
    
    Semaphore_post (多任务线程);//将信标发布到 Mac 数据包发送函数
    
    
    返回;
    } 

    这样、即使 MAC 数据包速度为10Mbps、也会丢失一些数据包。

    我不知道如何解决 question.ca问题、您能帮我吗?

    此致、

    田  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    正如您刚才所说的、如果单独测试、网络子系统性能不会出现问题。 但是、如果我在不了解该应用的任何情况下猜测可能的原因、这是不公平的。 抱歉。