概述
一台设备,硬件使用STM32+ENC28J60,协议栈使用LWIP-2.1.2版本。
作为TCP客户端与外网的服务器通信,正常运行了约2个月后,出现出法连接服务器的故障,
查看UART日志发现:使用lwip的函数tcp_connect建立连接,返回成功。但在等待连接成功的回调时,发生了error异常,错误代码是ERR_ABRT(-13),一般表示连接超时。
1.重新插拔网线,可以正常检测到网线断开和连接,说明网口芯片工作正常,网口的绿灯和黄灯也正常点亮。
2.使用同局域网的电脑调用ping命令,可以正常ping通设备,再次说明网卡芯片是正常工作的,协议栈也没有崩溃。
3.使用参数配置工具,将设备内的服务器IP地址改为局域网内的电脑,并在该电脑上启动一个TCP服务器调试程序,发现设备可以正常连接到该电脑,通信也正常。
4.再次将设备内的服务器IP地址恢复为外网服务器,故障依旧,仍无法连接。
5.将设备的网线插入到用于调试电脑,该电脑可以正常访问外网服务器,说明外网服务器也没有问题。
6.无奈,只得重启设备,故障消失!
最终还是没能定位到问题所在,困扰中....................
2020.12.29
经过一个多月的待机观察,终于发现了问题所在!
这个是应用层软件功能的设计缺陷,不是网卡问题,也不是LWIP协议栈问题。
本地的网关地址被修改了,导致无法访问外网!
最后
以上就是落后小海豚为你收集整理的LWIP+ENC28J60长时间运行后无法访问外网服务器的全部内容,希望文章能够帮你解决LWIP+ENC28J60长时间运行后无法访问外网服务器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复