我用udpserver例程测试通讯,在电脑上用网络调试助手给板子的固定IP发送数据做回环测试,正常通讯时读phy状态是45(十进制),过半小时或一小时通讯会中断,此时读phy状态是9。周围环境中有干扰。
请问这是什么状况,有没有什么办法能尽量避免(包括软件和硬件设计),程序中需要怎么做能尽快恢复通讯,能不能只重启phy不要涉及到socket?
我用udpserver例程测试通讯,在电脑上用网络调试助手给板子的固定IP发送数据做回环测试,正常通讯时读phy状态是45(十进制),过半小时或一小时通讯会中断,此时读phy状态是9。周围环境中有干扰。
请问这是什么状况,有没有什么办法能尽量避免(包括软件和硬件设计),程序中需要怎么做能尽快恢复通讯,能不能只重启phy不要涉及到socket?
您好,PHY状态变化有两个方面可能的原因:
(1)外部干扰导致单独PHY无法工作,协议栈软件运行正常。
(2)协议栈运行出错,同时PHY不工作。
建议在收发时候加上获取socket状态的指令,待复现问题的时候查看socket出于什么状态。暂无只重启PHY的方法。
好的,谢谢。能说详细点吗,什么是获取socket状态指令,怎么用,包括tcp和udp。另外怎么恢复通讯,是重新创建socket,还是重新初始化网络库,还是复位整个芯片。
您好,关于您说的现象,您可以考虑以下几点:
PHY因为干扰异常,这个建议您在网络接口这边使用一些增强抗干扰的屏蔽器件。
出现异常的时候,您可以看是否有触发Time Out中断,如果有的话,您可以尝试重新拔插网线,如果能重新产生新的PHY中断,如果可以,您可以在产生新的PHY中断后,创建新的Socket。如果无法产生新的PHY中断,您可能得考虑硬件复位芯片。看能否重新操作。