|
本帖最后由 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
|
-
|