vxWorks网络运行一段时间后ping不通问题

时间:2022-11-17 16:59:50
我的是vxWorks6.6的内核,atmel的9G20的cpu
情况就是我的网络程序运行一段时间之后,网络就断开了,怎么也ping不通,网络芯片上的连接指示灯也是亮的,网络芯片是什么忘记了,回去看看再补上,不知道有没有大虾遇到过这种问题,请不吝赐教

25 个解决方案

#1


查一下驱动,是否有数据buffer的问题。

#2


怎么查呀?网络的调试命令底层我们没有提供支持,还有网络芯片是DM9161AEP,有什么好的思路没有请赐教

#3


抓包,看一下。
能看到是谁先出现问题。

#4


有可能和内存使用有关系 查代码

vxworks目标机

#5


不知道vxWorks那些网络调试任务需要怎样支持

#6


能通过串口连上shell么? 如果可以的话, 连上去, 用ifconfig查看一下

#7


该现象我也遇到过,串口可以联上,查看以太驱动,收发包统计都有计数,网卡驱动应该正常,
拔掉网线过会就好了,不知道什么原因(网络有攻击包?),下次复现抓包,看一下。

#8


引用 7 楼 stevewang1979 的回复:
该现象我也遇到过,串口可以联上,查看以太驱动,收发包统计都有计数,网卡驱动应该正常,
拔掉网线过会就好了,不知道什么原因(网络有攻击包?),下次复现抓包,看一下。

我的拔掉网线再插上也还是ping不通,抓包个人觉得没什么意义,进入此现象都ping不通了

#9


引用 6 楼 hunle 的回复:
能通过串口连上shell么? 如果可以的话, 连上去, 用ifconfig查看一下


其他网络调试命令使用不了,我使用ifconfig设置mac地址的,我还以为ifconfig查看不了网络信息,今天试了一下可以,多些

#10


不知道怎样才能支持ifShow这些网络调试命令

#11


引用 10 楼 pishuli 的回复:
不知道怎样才能支持ifShow这些网络调试命令


ifShow是5.5之前的版本的, 6.5之后的整个网络协议栈的实现都换了

#12


引用 11 楼 hunle 的回复:
引用 10 楼 pishuli 的回复:
不知道怎样才能支持ifShow这些网络调试命令

ifShow是5.5之前的版本的, 6.5之后的整个网络协议栈的实现都换了

哦多谢,那岂不是这些调试命令都不能用了?网络调试用哪些命令呢?

#13


引用 12 楼 pishuli 的回复:
引用 11 楼 hunle 的回复:引用 10 楼 pishuli 的回复:
不知道怎样才能支持ifShow这些网络调试命令

ifShow是5.5之前的版本的, 6.5之后的整个网络协议栈的实现都换了
哦多谢,那岂不是这些调试命令都不能用了?网络调试用哪些命令呢?


看你在VIP里面include了那些

#14


谁遇到过这种问题,怎么解决的麻烦告诉一下在下,万分感激

#15


我之前遇到过 网卡传输过程中死机的情况,后来换了个CPU就好了。。。

#16


引用 15 楼 hezhe1008 的回复:
我之前遇到过 网卡传输过程中死机的情况,后来换了个CPU就好了。。。

这....估计还是与你的有差异

#17


遇到这种问题,先通过MII接口工具看下PHY状态是不是联通,然后在PHY和MAC层分别做环回,基本就能定位问题了。
如果还不行,那应该是软件层面问题,检查下你的txBD,rxBD等描述符,需要到程序打印。

#18


先通过MII接口工具看下PHY状态是不是联通:这一步还需要看各种PHY状态位,不光是up就可以了

#19


在做环回之前,可以先看下MAC的中断,状态和MIB计数器,会有很详细的各种异常包,丢包,包大小,等等信息,帮助判断。

#20


引用 17 楼 jdygrdzh 的回复:
遇到这种问题,先通过MII接口工具看下PHY状态是不是联通,然后在PHY和MAC层分别做环回,基本就能定位问题了。
如果还不行,那应该是软件层面问题,检查下你的txBD,rxBD等描述符,需要到程序打印。

不好意思,请教一下MII接口工具是什么东西呀?“PHY和MAC层分别做环回”这个也不知道怎么操作呀,请大虾指点呀

#21


MDIO是连接你的外部PHY的管理端口,uboot里面会有个工具叫做MII的,通过MDIO读取的PHY的信息。

设置PHY的环回,首先要看PHY手册,找到那一位(loopback)。我相信绝大部分的PHY都会有这位的。
它相当于把本来要发出去的包在PHY里面绕一圈送回去MAC。

MAC环回也类似,不过不需要MDIO来访问,直接访问MAC寄存器应该就可以找到。

#22


引用 21 楼 jdygrdzh 的回复:
MDIO是连接你的外部PHY的管理端口,uboot里面会有个工具叫做MII的,通过MDIO读取的PHY的信息。

设置PHY的环回,首先要看PHY手册,找到那一位(loopback)。我相信绝大部分的PHY都会有这位的。
它相当于把本来要发出去的包在PHY里面绕一圈送回去MAC。

MAC环回也类似,不过不需要MDIO来访问,直接访问MAC寄存器应该就可以找到。

灰常感谢你的回答,可是我们不是用UBOOT来引导的,不知道要怎么才能查看,还得请教一下在PHY和MAC层分别做环回的意义是什么,看来我还是得要先恶补一下这方面的知识,惭愧

#23


引用 19 楼 jdygrdzh 的回复:
在做环回之前,可以先看下MAC的中断,状态和MIB计数器,会有很详细的各种异常包,丢包,包大小,等等信息,帮助判断。

MAC的中断,状态和MIB计数器,会有很详细的各种异常包,丢包,包大小,等等信息,这些是不是要通过MII工具才能查看呀?

#24


不用uboot的话,应该也有类似的工具查看PHY.
MAC环回的意思就是如字面一样,数据从内存出发,达到MAC模块,然后不出去,反而发给自己。至于能不能回到内存那要看你的编程。但是不管能不能回去,MIB计数器一定会有统计。
PHY环回类似,只不过出了MAC,经过PHY,不经过RJ45,直接回到MAC.

如果你的MAC是作为SOC芯片的一部分的话,MIB等MAC信息应该是内存映射的寄存器。MII或者MDIO是提供链接PHY的管理接口,而不是连接MAC的。
MAC由于是数字层面的东西,不涉及物理层,所以可以放在数字SOC里面。PHY需要把以太网信号发送到别的主机,有很多混合信号电路,不适合放到纯数字芯片上。所以你看到的PHY都是在SoC之外单独另接的。
具体看你的芯片手册。

#25


多谢各位帮忙,分数太少,请见谅

#1


查一下驱动,是否有数据buffer的问题。

#2


怎么查呀?网络的调试命令底层我们没有提供支持,还有网络芯片是DM9161AEP,有什么好的思路没有请赐教

#3


抓包,看一下。
能看到是谁先出现问题。

#4


有可能和内存使用有关系 查代码

vxworks目标机

#5


不知道vxWorks那些网络调试任务需要怎样支持

#6


能通过串口连上shell么? 如果可以的话, 连上去, 用ifconfig查看一下

#7


该现象我也遇到过,串口可以联上,查看以太驱动,收发包统计都有计数,网卡驱动应该正常,
拔掉网线过会就好了,不知道什么原因(网络有攻击包?),下次复现抓包,看一下。

#8


引用 7 楼 stevewang1979 的回复:
该现象我也遇到过,串口可以联上,查看以太驱动,收发包统计都有计数,网卡驱动应该正常,
拔掉网线过会就好了,不知道什么原因(网络有攻击包?),下次复现抓包,看一下。

我的拔掉网线再插上也还是ping不通,抓包个人觉得没什么意义,进入此现象都ping不通了

#9


引用 6 楼 hunle 的回复:
能通过串口连上shell么? 如果可以的话, 连上去, 用ifconfig查看一下


其他网络调试命令使用不了,我使用ifconfig设置mac地址的,我还以为ifconfig查看不了网络信息,今天试了一下可以,多些

#10


不知道怎样才能支持ifShow这些网络调试命令

#11


引用 10 楼 pishuli 的回复:
不知道怎样才能支持ifShow这些网络调试命令


ifShow是5.5之前的版本的, 6.5之后的整个网络协议栈的实现都换了

#12


引用 11 楼 hunle 的回复:
引用 10 楼 pishuli 的回复:
不知道怎样才能支持ifShow这些网络调试命令

ifShow是5.5之前的版本的, 6.5之后的整个网络协议栈的实现都换了

哦多谢,那岂不是这些调试命令都不能用了?网络调试用哪些命令呢?

#13


引用 12 楼 pishuli 的回复:
引用 11 楼 hunle 的回复:引用 10 楼 pishuli 的回复:
不知道怎样才能支持ifShow这些网络调试命令

ifShow是5.5之前的版本的, 6.5之后的整个网络协议栈的实现都换了
哦多谢,那岂不是这些调试命令都不能用了?网络调试用哪些命令呢?


看你在VIP里面include了那些

#14


谁遇到过这种问题,怎么解决的麻烦告诉一下在下,万分感激

#15


我之前遇到过 网卡传输过程中死机的情况,后来换了个CPU就好了。。。

#16


引用 15 楼 hezhe1008 的回复:
我之前遇到过 网卡传输过程中死机的情况,后来换了个CPU就好了。。。

这....估计还是与你的有差异

#17


遇到这种问题,先通过MII接口工具看下PHY状态是不是联通,然后在PHY和MAC层分别做环回,基本就能定位问题了。
如果还不行,那应该是软件层面问题,检查下你的txBD,rxBD等描述符,需要到程序打印。

#18


先通过MII接口工具看下PHY状态是不是联通:这一步还需要看各种PHY状态位,不光是up就可以了

#19


在做环回之前,可以先看下MAC的中断,状态和MIB计数器,会有很详细的各种异常包,丢包,包大小,等等信息,帮助判断。

#20


引用 17 楼 jdygrdzh 的回复:
遇到这种问题,先通过MII接口工具看下PHY状态是不是联通,然后在PHY和MAC层分别做环回,基本就能定位问题了。
如果还不行,那应该是软件层面问题,检查下你的txBD,rxBD等描述符,需要到程序打印。

不好意思,请教一下MII接口工具是什么东西呀?“PHY和MAC层分别做环回”这个也不知道怎么操作呀,请大虾指点呀

#21


MDIO是连接你的外部PHY的管理端口,uboot里面会有个工具叫做MII的,通过MDIO读取的PHY的信息。

设置PHY的环回,首先要看PHY手册,找到那一位(loopback)。我相信绝大部分的PHY都会有这位的。
它相当于把本来要发出去的包在PHY里面绕一圈送回去MAC。

MAC环回也类似,不过不需要MDIO来访问,直接访问MAC寄存器应该就可以找到。

#22


引用 21 楼 jdygrdzh 的回复:
MDIO是连接你的外部PHY的管理端口,uboot里面会有个工具叫做MII的,通过MDIO读取的PHY的信息。

设置PHY的环回,首先要看PHY手册,找到那一位(loopback)。我相信绝大部分的PHY都会有这位的。
它相当于把本来要发出去的包在PHY里面绕一圈送回去MAC。

MAC环回也类似,不过不需要MDIO来访问,直接访问MAC寄存器应该就可以找到。

灰常感谢你的回答,可是我们不是用UBOOT来引导的,不知道要怎么才能查看,还得请教一下在PHY和MAC层分别做环回的意义是什么,看来我还是得要先恶补一下这方面的知识,惭愧

#23


引用 19 楼 jdygrdzh 的回复:
在做环回之前,可以先看下MAC的中断,状态和MIB计数器,会有很详细的各种异常包,丢包,包大小,等等信息,帮助判断。

MAC的中断,状态和MIB计数器,会有很详细的各种异常包,丢包,包大小,等等信息,这些是不是要通过MII工具才能查看呀?

#24


不用uboot的话,应该也有类似的工具查看PHY.
MAC环回的意思就是如字面一样,数据从内存出发,达到MAC模块,然后不出去,反而发给自己。至于能不能回到内存那要看你的编程。但是不管能不能回去,MIB计数器一定会有统计。
PHY环回类似,只不过出了MAC,经过PHY,不经过RJ45,直接回到MAC.

如果你的MAC是作为SOC芯片的一部分的话,MIB等MAC信息应该是内存映射的寄存器。MII或者MDIO是提供链接PHY的管理接口,而不是连接MAC的。
MAC由于是数字层面的东西,不涉及物理层,所以可以放在数字SOC里面。PHY需要把以太网信号发送到别的主机,有很多混合信号电路,不适合放到纯数字芯片上。所以你看到的PHY都是在SoC之外单独另接的。
具体看你的芯片手册。

#25


多谢各位帮忙,分数太少,请见谅