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.

[参考译文] EVM-AM243X:EVM-AM243X:MCU-PLUS-SDK:发送碎片 MCU-PLUS-SDK 数据包

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1377159/mcu-plus-sdk-am243x-mcu-plus-sdk-am243x-evm-am243x-sending-fragmented-udp-packets

器件型号:MCU-PLUS-SDK AM243X
主题中讨论的其他器件:SysConfig

工具与软件:

您好、TI 支持团队:

发送分段 UDP/TCP 数据包时遇到问题。 当我们将要发送的数据大小增加到超过软件中的最大 MTU 大小(1500字节)时,我们会在 UART 输出中得到以下错误消息(assert):

@行:xxx/mcu_plus_sdk_am243x_09_02_00_50/source/networking/enet/core/lwipif/lwipif/lwip2lwipif.c 中的241 src:失败!!

我已经使用 TI 示例(Relase 和 debug build)和这些版本复制了此问题

TI 示例:enet_lwip_cpsw_am243x-evm_r5fss0-0_freertos_ti-arm-clang
TI CCS       :12.7.0
SysConfig  :1.20.0
适用于 AM243x 的 MCU+ SDK:9.2.0.50

为此、我在 test.c 中插入了两个简单的 UDP 发送函数(参见附加的源文件)

e2e.ti.com/.../7840.test.c

 IRET = sendto (iSocket、aBuf、1000、0、(sockaddr*)&dstAddr、 sizeof (sockaddr_in);
 IRET = sendto (iSocket、aBuf、4000、0、(sockaddr*)&dstAddr、 sizeof (sockaddr_in);

可以发送1000字节而不会出现任何问题。 如果发送的数据超过1500字节、则显示上述断言。
如果我注释掉 lwip2lwipif.c:241中的相应行、

// Lwip2Enet_assert (p->len >=(sizeof (struct ip_HDR)+ sizeof (struct eth_HDR)+ sizeof (struct udp_HDR));

然后还支持超过1500字节的数据包大小(请参阅 Wireshark 屏幕截图)。

我的问题是、我在使用 lwip 库时遇到了问题、还是驱动程序出现了问题?


此致、

Thomas

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

    您好、Thomas:

    感谢您的详细发布、我将能够轻松地在我的最后通过这个重新创建问题  

    让我来检查一下并取回您。

    此致、

    Nitika

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

    您好、Thomas:  

    我有一个问题:您的用例是否仅涉及发送碎片数据包、或者您是否也在查看接收和处理超过1500 MTU 的数据包?

    此致、

    Nitika

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

    尊敬的 Nikita:

    我们只对发送大于1500 MTU 的数据包感兴趣。 在我们当前的实现中、我们通过两个 LAN 接口上的某些端口发送和接收 UDP/TCP 数据包、每个数据包小于1500字节。 到目前为止、它运行得很好。 在下一步中、我们要使用 UDP 发送端口发送大于1500 MTU 的数据包。

    此致、

    Thomas

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

    尊敬的 Nikita:

    我希望您能表现得好。 我想知道是否有关于 UDP 问题的任何更新。 提前感谢您提供任何信息。

    此致、

    Thomas

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

    您好、Thomas:

    很抱歉、上星期我没有得到答复。

    软件当前不支持碎片。

    如果我在 lwip2lwipif.c:241
    中注释掉相应的行

    通过此更改、您可以在 Wireshark 上看到碎片数据包、但确实意识到、注释行下方的数据包部分的校验和计算在碎片情况下无法正常工作。

    此致、

    Nitika

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

    嗨、Nitika、

    首先、抱歉在最后一封电子邮件中拼写错误您的姓名。 我仍然可以看到很好,但最近我的手臂不够长。

    这是否意味着无法使用当前驱动程序正确地发送分段的 UDP 数据包? 近期是否有针对此问题的 lwip 驱动程序更新? 我意识到注释掉的行不是一个解决方案、但我对无法发送碎片化的 UDP 数据包感到有点惊讶-尤其是因为源代码提供了此功能? ...或者我误解了什么?


    此致、

    Thomas

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

    您好、Thomas:

    我与开发团队沟通过、 当前驱动程序不支持碎片化的 UDP 数据包处理、目前也不计划在不久的将来进行处理。

    此致、

    Nitika