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.

[参考译文] TM4C129ENCPDT:多个 TCP 套接字(Telnet 客户端)连接

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/842401/tm4c129encpdt-multiple-tcp-sockets-telnet-client-connection

器件型号:TM4C129ENCPDT

我已通过以下 Enet S2E 示例成功创建了两个 telnet 客户端会话。 我需要使用 telnet 连接到10台设备和 TM4C。 当我尝试连接到2个以上的插座时、它工作了几分钟、连接意外关闭。 是否有要更改的参数。 代码也在循环  

for (pxIterator =(ListItem_t *)&(pxList->xListEnd);pxIterator->pxNext->xItemValue //list.c of RTOS 


我是否需要在 lwipopts.h 中更改任何参数以解决此问题?

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

    您好!

     您从何处获取 Enet_s2E 代码?

     我不是 S2E 代码的专家、尤其是 FreeRTOS。 FreeRTOS 是一种开源操作系统、我们将向客户推广 TI-RTOS。 但我在您展示的内容之前发现了一些注释、这些注释介绍了执行将如何最终在该内容中完成。 以下是说明。 您的 Enet_s2E 项目是否有此注释? 我想知道您是否有较旧版本。 如注释所述、您可能会遇到堆栈溢出。 如果是这种情况、则在工程编译期间增大堆栈大小。 如果问题与 FreeRTOS 配置有关、我强烈建议您将问题发布到 freertos.org 以获得最佳支持。   

     

    其他
    {/****
    注释
    如果您发现您的应用程序在此处崩溃、则可能的原因
    如下所示。 此外,有关 
    更多提示,请参见 www.freertos.org/FAQHelp.html,并确保已定义 configASBERT()!
    	www.freertos.org/a00110.html
    
    1)堆栈溢出-
    请参阅 www.freertos.org/Stacks-and-stack-overflow-checking.html
    2)错误的中断优先级分配、尤其是在 Cortex-M
    器件上、其中数字高优先级值表示实际中断
    优先级较低、这看起来与实际中断优先级相反。 1
    		   
    
    		   
    )请参阅 www.freertos.org/RTOS-Cortex-M3-M4.html 和 www.freertos.org/a00110.html 上 CONFIGMAX_SYSCall_INTERRUPT_PRIORITY 的定义3)从关键段中调用 API 函数、或在
    调度程序暂停时调用、或从
    中断调用不以"FromISR"结尾的 API 函数。
    4)在已初始化或
    调度程序已启动之前使用队列或信标(是否在
    调用 vTaskStartScheduler()之前触发中断?)。
    (二 /
    
    for( pxIterator =( ListItem_t *)&( pxList->xListEnd );pxIterator->pxNext->xItemValue <= xValue740;pxIterator = pxIterator->pxNext )/*lint !eRAM 将迷你列表结构保存为插入列表。 这是已选中且有效的。 //
    {
    //*此处没有任何操作,只需迭代到所需
    的插入位置即可。 */
    } 

    这是我拥有的 Enet_S2E。 也许它与您的一样。 请与您拥有的产品进行比较。  

    e2e.ti.com/.../0602.enet_5F00_s2e.zip

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

    谢谢 Charles。

    我  还阅读了崩溃的原因、并尝试更改堆栈大小。 但什么也不起作用。 此外、如果我以大约3秒的间隔向每个套接字发送数据、则表明它运行良好。 当我尝试以每秒1/5的间隔向套接字发送数据时、数据将发送大约5 - 10个周期(即)、工作时间约为10 - 20秒、然后代码将进入上述循环

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

    您好!

     不确定如何更改堆栈大小。 由于我不熟悉 FreeRTOS、因此您需要咨询他们的支持网站、了解如何为您创建的任务更改堆栈大小。 两个套接字后、您要创建多少个套接字、超过这些套接字时、会发生崩溃? 崩溃可能是由于 FreeRTOS 或 LwIP 上的内存泄漏造成的。 由于这些都是第三方软件、我们实际上并不具备调试这些软件的专业知识。 我建议您确定您可以在多大数量的插座上可靠地使系统正常工作。 您是否也尝试过更改堆大小?