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.

[参考译文] MCU-PLUS-SDK-AM243X:如果 TCP echo 未运行、则 FreeRTOS LWIP UDP echo 示例应用会失败

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1218673/mcu-plus-sdk-am243x-freertos-lwip-udp-echo-example-app-fails-if-tcp-echo-is-not-running

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

如果我 在 LWIP 示例应用程序的 lwipcfg.h 中将 LWIP_TCPECHO_APP 设置为零、则 UDP 回显应用程序将失败。 我正在尝试找出发生这种情况的原因,因为我看不到 UDP echo 应用程序应该依赖 TCP echo 应用程序的任何原因。 我将 mcu_plus_sdk_am243x_08_05_00_24与在 TMDS243EVM 评估板上运行的 LWIP 示例"enet_lwip_ICSS"或"examples\networking\lwip\"下的"enet_lwip_cpsw"搭配使用。

使用 ncat 从主机 PC 连接到 UDP 回显应用程序(例如"。\ncat -u 192.168.1.100 7")。

如果 tcpecho 正在运行、那么我看到 ncat 回显、并且我在控制台中看到一条 udpecho 消息:"GOT "表明它正在接收数据包。 我还在控制台中看到持续报告 CPU 负载的消息。

如果 tcpecho 被禁用、那么我看不到 ncat 中回显、虽然我看到控制台中的第一行是"got et."、但在第一条消息后、控制台停止打印任何内容、包括 CPU 负载。

从调试器可以看出、udpecho 应用程序能够接收第一条消息、但在尝试发回回复时会进入某种故障、因此永远不会接收另一条消息。 如果 tcpecho 应用程序正在运行、则不会发生该故障。

欢迎提出任何建议。

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

    布莱斯、您好!

    我们正在研究这个问题。 请在下周早些时候收到回复。

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

    尊敬的 

    根据分析结果、代码进入重置并尝试执行 MPU_init、在此处我们收到数据中止。

    我能够复制到我的最后的问题,我提出了一个正在研究的错误。

    同时、我建议您使用  examples/networking/lwip/enet_cpsw_udpclient  或  examples/networking/lwip/enet_cpsw_tcpclient  TCP 或 UDP 功能示例。  

    此致、

    Shaunak

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

    大家好、Shaunak:

    我已经查看了您建议的示例、但对于我的应用、我们打算使用套接字 API。 我在中尝试了示例  examples\networking\lwip\enet_cpsw_udp_igmp  但我也看到了这种奇怪的行为。 和以前一样、使用 ncat、我看到它回显我发送的第一条消息、但后续消息返回 gibberish 文本。

    测试消息 
    测试消息
    另一个示例
    ÖYfªÖYfªÖYfªÖYfª μ A

    该示例似乎可以很好地接收目标上的消息:

    接收到数据包 
    客户端:测试消息
    回波数据包已完成

    接收到数据包
    客户端:另一个示例
    回波数据包已完成

    您是否也能够重现此示例? 或者、您对这种情况可能发生的原因有何建议?

    谢谢

    -布莱斯

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

    布莱斯、您好!

    对于  examples\networking\lwip\enet_cpsw_udp_igmp、  我无法重现此问题、我可以看到所有回显到 NCAT 终端的消息、并且可以看到终端中的打印件。 我尝试发送大约20条消息、全部回送成功。

    问题1: 您能否确认您未在下的 LwIP 库中进行任何更改  源/网络/lwip/.*

    问题2. 您是在开箱即用示例中、还是在该示例或 LwIP 库中进行一些更改后观察到这种行为?

    问题3: 此外、您是否可以清理/清理并重新构建项目、将 UDP IGMP 服务器连接到端口2638并尝试发送消息?

    此致、

    Shaunak

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

    我刚刚尝试从新安装的 SDK 进行构建、以确保没有更改。 我仍然看到相同的行为。 我使用 ncat 连接到该示例、并使用命令".\ncat.exe -u 192.168.1.100 2638"。 我始终可以看到第一条消息正确回显、但所有后续消息都已损坏:

    完成 
    完成
    显示的帧类型
    ÖYfªÖYfªok μ A
    ÖY μ A

    您正在使用哪个版本的 SDK? 我在 原始帖子中使用的是08_05_00_24。 是否有任何其他版本我应该检查以进行比较?

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

    布莱斯、您好!

    您能否共享该项目的 debug.out 文件和映射文件? 需要使用.out 二进制文件进行调试、因为我仍然无法在最后重现问题

    此致、

    Shaunak

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

    我可以共享它们。 上传的最佳方式是什么? 我试图拖放他们在回复窗口,但它没有成功上传。

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

    我已将它们作为拉链进行附上。 如果您还需要其他文件、请告诉我。

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

    布莱斯、您好!

    我得以重现此问题。 这是 LwIP 协议栈 UDP API 中已知的高速缓存一致性问题。

    修复方法是缓存写回和缓存会在每次重复使用之前使缓冲区无效。

    官方修复程序是 MCU_PLUS_SDK 08_06版本的一部分。 同时、您可以遵循下面的图像并在"app_udp_igmp_server.c"中进行所需的更改、重新编译示例、它应该能正常工作。

    此致、

    Shaunak

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

    非常感谢、Shaunak、他确实解决了这个问题。 是否有任何其他需要此修复的情况?

    此外、原始数据中止问题是否有任何更新? 现在、我们正在通过在任何 UDP 流量之前启动 TCP 服务器来解决这一问题。

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

    布莱斯、您好!

    对于要重复使用缓冲区的 LwIP UDP 套接字 API、通常需要进行此修复。 我建议您在遇到 UDP 或 LwIP 套接字 API 类似问题时尝试此修复。

    我已经向内部团队提出了一个关于器件复位引起的数据中止问题的错误(在本主题中进行了上述讨论)。 如果有进一步的进展、我会随时向您通报最新情况。

    此致、

    Shaunak