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.

[参考译文] RTOS/TMS320C6678:C6678 DSP 网络带宽测试

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/659391/rtos-tms320c6678-c6678-dsp-network-bandwidth-test

器件型号:TMS320C6678

工具/软件:TI-RTOS

您好!

我们在 C6678 DSP 上进行开发、为了进行网络测试、我们稍微修改了 PA_emacExample_evmc6678_C66BiosExampleProject 、并在 no_boot 模式下将应用加载到 DSP。

特别是为了测试网络带宽、我们将 MAX_numb_packets 计数从10U 增加到1000000u、以便有足够的时间来测量实际带宽、禁用自动符号并将模式从 CPSW_LOOP_INTERNAL 更改为 CPSW_LOOP_EXTERNAL


目前在另一端、我们仅接收120Mbps、而不是1000Mbps (或更接近它的器件)

您能否帮助发现低传输带宽的根本原因建议使用另一种精确的甲胺来测量 DSP 网络端口上的网络带宽?

此致

Andranik Asransran

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

    要执行此类测试、我假设您还修改示例以增加 TX 描述符的数量、并在 TX 描述符变干的情况下重试数据包。

    尝试查看接收器性能。 例如、使用 C6678自定义网络驱动程序和 iperf 发送器、在我的环境中、我可以看到 Win7 PC 端丢失的数据包数量取决于(也)接收器插槽缓冲区大小。

    将接收器缓冲区大小从默认的8K (Win7)增加到64K、丢包数量从50%减少到0.1%。 即使在这种情况下、我也必须降低发送器(C6678)的速度。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alberto、

    我们成功地测试了 C6678传输带宽、非常好-直到930Mbps。
    最后一个目标是测试接收带宽-我们在主机端再次看到900+Mbps、但无法测量 C6678端的接收带宽。
    处理器 SDK 或 MCSDK 端是否有用于此目的的示例? 如果没有-您能建议一种方法来实现这一点吗?

    P.S.
    目前、我将使用以下命令通过 Iperf 工具从 Linux PC 向 C6678发送数据包:

    iperf -c 192.168.1.1 -l 32k -i 1 -u -b 1000M


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

    阿尔贝托

    您是否有机会了解这一点?

    Andranik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    如何在主机端存档930Mbos? 是否增加了接收缓冲区大小?

    关于 Rx、我不知道 C6678方面有一个即用型工具。 TI NDK 中可能有一些东西。

    我还使用 iperf、但由于我不使用 TI NDK、我实现了一个基本的 iperf Rx 服务器(但我无法共享代码、抱歉)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在中增加了 pktMatch[]数组内容的有效载荷
    ~/ti/pdk_c667x_2_0_7/packages/ti/drv/pa/example/emacExample/src/c66x/bios/framework.c 文件,从80字节到800字节,可实现930Mbps。

    您能否至少描述在 DSP 和主机端运行此类 iperf Rx 服务器所需执行的基本步骤?

    Andranik
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    由于基本示例不支持 UDP 套接字,我认为您必须修改 Rx VerifyPacket()以捕获 iperf 消息(仅限 UDP)。

    您必须解释接收到的数据包才能找到 UDP 报头和有效载荷

    字节0x24处的目标 IP 端口应为5001 (网络大端序为0x89、0x13)、而 iperf 有效载荷应从偏移量0x2A 开始。

    前32位有效载荷字是 iperf 数据包 ID (以网络顺序排列的带符号数)

    因此、如果目的端口= 5001:
    1.识别号=0? Iperf 开始、保存 C6678时间戳 t_start=TSCL。 total_received=packet_size
    2. ID >0:数据包编号序列(您可以验证是否已松开数据包),total_received+=packet_size
    3. ID =-previous_id、最后一个数据包(负)、t_stop=TSCL。 total_received+=packet_size

    T_Elapsed = t_stop - t_start (纳秒@1GHz)

    您可能必须手动将 C6678 MAC/IP 对添加到 PC ARP 表中、因为该示例无法回复 ARP 请求。 在我的 SDK 版本中、默认 C6678 IP 为192.168.2.100、因此必须在 Iperf 命令中使用该数字。

    请注意、要在 PC 端关闭测试、您必须发回最后一个数据包(ID 为负数的数据包)、但用源(MAC 地址、IP 地址、IP 端口)替换目标、并计算 IP 校验和。

    我不确定以太网数据包中的偏移量(我使用 UDP 层、而不是对数据包的原始访问)、但您可以通过网络监视器(如 Wireshark)来验证它们。