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/TM4C129XNCZAD:NDK 单播

Guru**** 2614265 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/579070/rtos-tm4c129xnczad-ndk-unicast

器件型号:TM4C129XNCZAD

工具/软件:TI-RTOS

您好!

我正在使用

- CCS 版本:6.1.0.00104、

- TIRTOS:tirtos_tivac_2_16_01_14、  

- xdctools_3_32_01_22_core

我的项目中有许多任务、我遵循强制转换技术通过 UDP 套接字转发某些 IP 数据包、但如果我连续向多个目标发送某些数据包、我将会收到错误(55 =没有可用的缓冲区空间) 在第7个目标之后、这表示 没有可用的缓冲区 、并且由于缓冲区大小受限、因此我在目标之间的传输之间增加了一个延迟、延迟应长达100毫秒、这应该很重要、但没有帮助、并且我仍然会遇到相同的错误。

我的问题是:

-与 NDK 任务相比、我是否错过了其他任务优先级导致 IP 数据包延迟太多、以至于100ms 不足以满足要求?

-为了确认如何增加 NDK 缓冲器以减少错误的影响(55)?

谢谢、

Mohammed Fawzy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我现在将深入探讨这一点、当我有问题或回答时、我会尽快回复您。

    Alan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在其表面、UDP 数据包似乎没有退出以太网接口。 DHCP 使用 UDP 来获取 IP 地址、因此、如果您成功使用 DHCP、我们可以排除 UDP 的基本问题。 您能否通过 Wireshark 确认6个单播 UDP 数据包已成功在以太网上传输?

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

    您的猜测是不正确的、这样几个数据包就可以到达目的地、而其他数据包则不能到达目的地、因此问题出在哪里。 为什么其余的数据包会卡住? 它是否与其他任务优先级相关?

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

    第7个"sendo"调用中发送的缓冲区长度可能超过 NDK 内的最大 alloc 大小、约为3k 字节。

    此问题之前已被发现并讨论过。 请参阅以下帖子中的第3点以供参考。

    https://e2e.ti.com/support/embedded/tirtos/f/355/p/372023/1314892#1314892

    Alan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于以下原因,该帖子描述的问题不相同:
    -我的数据包长度为32字节
    执行一些调试后,我发现问题是从 PBMQ_DEQ 开始提出的,因为没有可用的池。
    这就是为什么我在每个 sendto 之间添加了100ms、因为我担心 sendto 调用速率大于传输速率。 但100ms 没有解决我的问题。
    因此、现在在保持数据包不在以太网级别传输方面存在问题、因此请提供建议。 尤其是时间对我来说是个问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从 Wireshark 跟踪中、您能否判断发送到"sendo"的所有数据包是否都已实际传输? 我想知道、问题是由于数据包尚未传输而没有将 PMM 恢复到 PBM 池、或者在传输后将 PMM 恢复到池的线程是否已被耗尽。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实际上、我注意到、如果我尝试发送到目标列表之间的网络上不存在的 IP。 因此、如果目标在网络上不可用、则数据包将不会发出、甚至可用目标的连续数据包也不会通过、因为没有可用的轮询是可用的、那么您认为什么呢?

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

    任何更新!

    谢谢