AresInAFL 发表于 2021-11-1 10:41:16

stm32H743+lwip+freeRTOS 运行tcp server,长时工作网络异常

本帖最后由 AresInAFL 于 2021-11-2 09:49 编辑

硬件资源:stm32H743IIT6,LAN8720A。软件资源:lwip V2.1.2, freeRTOS V10.3.1
工程移植:在安富莱lwip示例工程上修改而来,V7-2001_LwIP V2.X实验_工程移植模板(FreeRTOS)V1.1。

问题现象:两块板子,一块板子跑的netconn接口,运行tcp server, 另一块板子跑的 tcp client,两块板子网络互联,长时间运行(时间不定,有时四五小时,有时一两小时),server的板子网络就会挂掉,ping也ping不通。但若是server板子和电脑上的网络调试助手上位机连接,连续跑两三天,都不会有问题。

工程细节:
tcp server板子:100ms,连续发送5包128byte数据,copy;2000ms,发送一包128byte数据。网络发送函数调用均在同一线程。
tcp client板子:单纯网络接收,串口打印网络接收长度。


问题排查:
1. 通过打印server板子的 tcpip_thread 线程状态,知道正常工作时的状态是 blocked,异常时的状态是 suspended。
2. server网络异常时,stm32 ETH isr还是能进的,能一直进到 函数 tcpip_inpket(), 在其中为 tcpip_msg 申请内存的时候,会失败,从而无法将消息更进一步上传。
2.1. 具体函数位置见下图,另,通过查阅该部分 MEMP_TCPIP_MSG_INPKT 内存池引用情况,是在 tcpip_thread 中进行释放的,理论而言不应存在泄露或二次释放,为什么实际会出现问题?


问题总结:
1.stm32+lwip+OS 运行tcp server与同为stm32+lwip+OS运行tcp client 连接,长时工作将导致 server板子的网络服务异常,该如何解决或有何思路?
2.stm32+lwip+OS 运行tcp server与PC端网络调试助手连接,能稳定长时(两三天)工作,与另一块板子就无法稳定长时工作?

End:
1. 已将 server板子的工程上传,望各位大牛能协助一二,提前感谢。

Emmmm, 初次使用论坛发帖,不知为何附件上传不了,文件大小25MB,上传小窗口一开始显示文件上传中,过一会文件就不见了,不见了。。。
放置百度云链接。
链接:https://pan.baidu.com/s/1aBGM7AfEB73oOf43YLHxUw
提取码:ir6o

向北 发表于 2021-11-1 14:50:11

我不能帮你解决问题,因为我是个菜比。但是我可以提醒你,工程在哪里?

eric2013 发表于 2021-11-2 10:17:39

这个得实际测试下才好解决。

ou513 发表于 2021-11-4 22:19:58

猜想长时间运行后出问题,有没有可能是内存泄漏了呢,或是什么内存碎片之类的~~~~;P
页: [1]
查看完整版本: stm32H743+lwip+freeRTOS 运行tcp server,长时工作网络异常