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/EK-TM4C1294XL:使用 NDK 的 HTTP 服务器中出现意外延迟

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/592664/rtos-ek-tm4c1294xl-unexpected-delay-in-http-server-using-ndk

器件型号:EK-TM4C1294XL

工具/软件:TI-RTOS

您好!

我已经尝试使用  从 EK-TM4C1294XL 电路板上的这个 wiki 页面下载的 http 服务器示例。  

HTML 文件正在正确呈现,CGI 函数正在调用中,没有任何问题。

但是、对于初始请求、get 响应的延迟约为10-20ms。 但是、在10到15个连续调用之后、对于此后的大多数调用、延迟峰值为3000ms。  

我使用 REST 客户端(Postman)测试了延迟。  

在 http 服务器待机大约20分钟后、我没有收到任何响应、不得不重置电路板。

我在没有对示例中的代码进行任何修改的情况下尝试了这种方法。

请帮助解决此问题。

谢谢、

Ayyappa

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

    我不熟悉 Postman。 您能否使用 Wireshark 来缩小延迟范围?

    Todd

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

    您好 Todd、

    感谢您的即时回复、

    这是我遇到延迟时捕获的鲨鱼线。 很明显 ,在第一个 SYN 数据包之后,客户端正在重新传输数据。  

    第二个数据包的"时间"值为3.008302 (在屏幕截图中不可见)。

    我是否可以知道重新传输 SYN 数据包的原因以及此问题的原因?

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

    您能否查看 EMAC 驱动程序以查看是否有数据包丢失? 在 CCS 的表达式窗口中、添加以下内容:'EMACSnow.c':::EMACSnow_Private

    cfg 文件中 NDK 的内存设置是什么? 例如、在 TCP Echo 中、我们尝试将其保持在较小的值、因此使用了以下内容
    global.pktNumFrameBufs=10;
    global.memRawPageCount = 6;
    global.ndkThreadStackSize = 1536;
    global.lowTaskStackSize = 1024;
    Global.normTaskStackSize = 1024;
    global.highTaskStackSize = 1024;
    tcp.transmitBufSize = 1024;
    tcp.receiveBufSize = 1024;

    如果 pktNumFrameBuf 很小(例如10)、您可以增大大小吗?

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

    1.我看不到任何要使用给定表达式丢弃的数据包。
    2.正如我之前提到的、我没有更改 cfg 中的任何设置、内存设置与 TIRTOS httpServer 示例一起提供。 以下是供参考的设置:
    global.pktNumFrameBufs=16;
    global.memRawPageCount = 8;
    global.ndkThreadStackSize = 2048;
    global.lowTaskStackSize = 2048;
    Global.normTaskStackSize = 2048;
    global.highTaskStackSize = 2048;
    tcp.transmitBufSize = 2048;
    tcp.receiveBufSize = 2048;

    Ayyappa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以尝试将 pktNumFrameBuf 从16增加到64吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我将 pktNumFrameBuf 从16增加到64时、TCP 重新传输(显示在 Wireshark 中)的频率会更高。 以前、它仅在10-12个呼叫后发生、但现在它在6-8个呼叫后发生。

    Ayyappa
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否提供有关如何继续的任何更新?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们无法重现此问题。 您能否附加存在问题的示例项目(以及测试方法)?

    Todd