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/TM4C1294NCPDT:TM4C1294/RTOS HTTP 服务器加载失败

Guru**** 2477065 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/674533/rtos-tm4c1294ncpdt-tm4c1294-rtos-http-server-loading-fail

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

大家好、

 实际上 TCP 发送缓冲区集1300。但加载 js 文件太慢。

我尝试 将 TCP 发送缓冲区放大为2048。 加载速度加快、但很容易无法加载。  

谁能为我 提供 解决这个问题的建议。

  

谢谢

Arthur

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

    尊敬的 Arthur:

    您可能会发现此线程解释了可能导致这些错误失败的错误、以及如何修复它很有帮助:  
    https://e2e.ti.com/support/embedded/tirtos/f/355/p/497052/1803424#1803424

    此致、
    Gerardo

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

    您好 Gerardo、

    感谢您的回复。

    但我认为我的问题与您找到的主题不同。

    在我的情况下、我不需要使用大型接收缓冲器。

    我使用 Wireshark 查看数据包失败加载文件显示"TCP 失序"、如下所示。

    谢谢

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我只运行 HTTP 服务器、一切都正常。
    当我为控制 GPIO、I2C 和 SPI...添加了2个 UART 接收任务和1个系统任务时、http 将加载失败。
    这些任务的优先级为2、2、1。
    我不知道导致这种情况的原因是什么。


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

    运行 HTTP 服务器的任务的优先级是多少?

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

    您好 Gerardo、

    我们看到这个简单的项目、一个 TCP 句柄和一个 http 服务器。

    http 任务的优先级为5、I、可从 ROV 中找到。

    当我刷新网站时、我认为 HTTP NDK 将创建任务来处理 申请、如下所示。

    但网站加载了可能失败的 js 或 css 文件。

    Arthur

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

    尊敬的 Arthur:

    您在第二个屏幕截图中突出显示的任务是溢出其堆栈、您知道这是哪个任务吗? 这会导致一些问题、因此您需要增大任务的堆栈大小、这可能会解决问题。

    请告诉我、这是否有帮助、
    Gerardo

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

    您好 Gerardo、

    我认为第二个屏幕截图上的任务可能是 HTTP NDK 自动创建的 HTTP 处理任务。

    只有 当我对网页执行一些操作时、任务才会显示、例如:将网页更改为其他网页。

    我发现任务的堆栈大小通过"high TaskStackSize"变化。

    我将 高 TaskStackSize 修改为4096、即使是6000、但仍然失败。

    该员额的问题 与我的问题类似,如下所示。

     我将 Global. memRawPageCount 更改为32-50,但它没有解决我的问题。

    https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/598021?tisearch=e2e-sitesearch&keymatch=TWO%20TCP

    Arthur

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

    尊敬的 Arthur:

    任务的优先级为5、对应于 normTaskPriLevel、因此您需要增加 normTaskStackSize。

    如果这不能帮助尝试增加 ndkThreadStackSize。

    请告诉我、这是否有帮助、
    Gerardo

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

    您好 Gerardo、

     优先级为5的任务、但我认为这在我的测试中应用了高任务堆栈大小。

    但我不知道为什么?

    您可以看到我设置了高 TaskStackSize 4096。

    ROV 显示了  优先级为5的0x20019450和 STACKSIZE 4096。

    因此、我确信我修改 了 normTaskStackSize 不会更改任何内容。

    我 增加 了正常 TaskStackSize 或 highTaskStackSize 、它没有帮助。

    如果 增加 ndkThreadStackSize、ti_ndk_config_Global_stackThread 将更改为我的设置值。

    但 它不能解决这个问题。

    Arthur  

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

    尊敬的 Arthur:

    看起来、即使大小增加到4096、堆栈仍会溢出。 您需要进一步增大堆栈大小、直到 stackPeak 低于您的 STACKSIZE。

    谢谢、
    Gerardo

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

    我认为增加堆栈大小对这一点毫无帮助。
    我还尝试将堆栈大小设置为6000、系统将崩溃。
    现在,我将高堆栈大小和 ndkThreadStackSize 减小到1536。
    它有时可以工作、有时它仍然加载失败。
    我不断修改堆栈的一些参数来解决这个问题。


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

    尊敬的 Arthur:

    因此、由于您的程序似乎总是溢出该堆栈、即使您增大了大小、这也会导致我相信问题是在其他地方。 我想、您执行的存储器写入可能会超过存储器分配的大小、因此写入此任务的堆栈会导致其损坏。 我会检查您可能拥有的任何缓冲区以及对这些缓冲区的任何写入、以确保您的写入不会超过它们的限制。

    希望这有所帮助、
    Gerardo

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

    这是否得到了解决?

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

    还没有!
    我没有一种直接的方法来解决这个问题。
    只需修改不同的堆栈大小即可测试哪种设置更好。
    此外,您是否可以在您的一侧进行测试,以便同时使用 RTOS 打开一台 telnet 服务器和一台 http 服务器。
    我一次只能使用其中一个(telnet 或 http)。
    另一个始终失败。

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

    尊敬的 Arthur:

    您是否尝试检查其他东西是否会破坏该任务的堆栈?

    我将为您检查是否可以同时运行这两台服务器。

    BR、
    Gerardo

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

     Gerardo、

    我认为您只能先尝试一个 http 和一个 telnet 服务器。

    并同时使用它们。  

    在我的一侧,您可以看到下面的测试。

    1.首先打开网页。我的服务器 IP 为192.168.1.84,运行良好。

    然后 我同时连接到 telnet 服务器。

    HTTP 服务器就像失去连接一样。 Web 浏览器将 "getSystemSettings"发送到服务器、但不返回任何内容。

    #2。如果我先连接到 telnet 服务器,它就能正常工作!

    然后打开网页时出现错误。

    因此、您可以首先执行此测试、以检查其中的两个器件是否可以同时工作。

    谢谢你。

    BR

    Arthur

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

    无法使 telnet 和 http 协同工作的原因可能是堆外存在。 您是否已检查堆以确保在 HTTP 连接进入时有足够的空间来分配新套接字?

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

    很抱歉、告诉您结果太晚了、我已经尝试放大堆大小、它可以帮助解决这个问题。
    谢谢!

    Arthur