搜索
bottom↓
回复: 11

运行一二天后就ping不通了,怎么跟踪解决?

[复制链接]

出0入4汤圆

发表于 2013-3-25 09:57:29 | 显示全部楼层 |阅读模式
使用lwip,硬件是28j60。我使用finsh shell查看的信息有:
finsh>>list_mem()
total memory: 47808
used memory : 36992
maximum allocated memory: 41476
        0, 0x00000000
内存没有异常。
finsh>>show_reg()
        0, 0x00000000


finsh>>enc28j60()
-- enc28j60 registers:
HwRevID: 0x06
Cntrl: ECON1 ECON2 ESTAT  EIR  EIE
       0x00  0x80  0x01  0x00  0x00
MAC  : MACON1 MACON3 MACON4
       0x00   0x00   0x00
Rx   : ERXST  ERXND  ERXWRPT ERXRDPT ERXFCON EPKTCNT MAMXFL
       0x05fa 0x1fff 0x0000  0x05fa  0xa1    0x00    0x0600
Tx   : ETXST  ETXND  MACLCON1 MACLCON2 MAPHSUP
       0x2c00 0x0000 0x0f     0x37     0x10
        0, 0x00000000

finsh>>list_thread()
thread  pri  status      sp     stack size max used   left tick  error
-------- ---- ------- ---------- ---------- ---------- ---------- ---
c_webnet 0x15 suspend 0x00000118 0x00000400 0x000001b8 0x00000003 000
wb_gui   0x19 ready   0x000000d8 0x00001000 0x000003f0 0x00000009 000
rtgui    0x0f suspend 0x000000e8 0x00000400 0x000000e8 0x00000004 000
tcpip    0x0c suspend 0x000000d0 0x00000400 0x00000218 0x0000000e 000
etx      0x0f suspend 0x00000090 0x00000200 0x000000a0 0x00000003 000
erx      0x0f suspend 0x00000090 0x00000200 0x000000f0 0x0000000b 000
tidle    0x1f ready   0x00000058 0x00000100 0x00000060 0x0000001e 000
tshell   0x14 ready   0x000001a0 0x00000800 0x00000320 0x00000009 000
led      0x14 suspend 0x00000078 0x00000200 0x00000078 0x00000005 000
        0, 0x00000000
除啦这样查看,还有什么命令可以看到故障吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入4汤圆

 楼主| 发表于 2013-3-25 10:00:01 | 显示全部楼层
重新复位后正常,总不能一两天都插着仿真器吧!

出0入0汤圆

发表于 2013-3-25 11:10:08 | 显示全部楼层
重点检查ENC28J60的发送阻塞,以防止发送失败后死锁。
即检查 etx 线程是因什么原因挂起,list_sem()等。

出0入4汤圆

 楼主| 发表于 2013-3-25 14:43:54 | 显示全部楼层
finsh>>list_thread()
thread  pri  status      sp     stack size max used   left tick  error
-------- ---- ------- ---------- ---------- ---------- ---------- ---
wb_gui   0x19 ready   0x000000d8 0x00001000 0x000003f0 0x00000003 000
rtgui    0x0f suspend 0x000000e8 0x00000400 0x000000e8 0x00000005 000
tcpip    0x0c suspend 0x000000d0 0x00000400 0x00000198 0x00000012 000
etx      0x0f suspend 0x00000090 0x00000200 0x00000090 0x0000000f 000
erx      0x0f suspend 0x00000090 0x00000200 0x000000c0 0x0000000b 000
tidle    0x1f ready   0x00000058 0x00000100 0x00000060 0x00000001 000
tshell   0x14 ready   0x00000088 0x00000800 0x000002f0 0x00000009 000
led      0x14 suspend 0x00000078 0x00000200 0x00000078 0x00000005 000
        0, 0x00000000
finsh>>list_sem()
semaphore v   suspend thread
--------  --- --------------
topwin    001 0
spi2lock? 001 0
sem1      001 0
sem0      001 0
e0        000 0
lock      001 0
shrx      000 0
sdlock    001 0
heap      001 0
        0, 0x00000000
finsh>>

出0入4汤圆

 楼主| 发表于 2013-3-25 14:48:46 | 显示全部楼层
finsh>>list_timer()
timer    periodic   timeout    flag
-------- ---------- ---------- -----------
rtgui    0x00000064 0x00000000 deactivated
rtgui    0x00000064 0x00000000 deactivated
rtgui    0x00000064 0x00000000 deactivated
rtgui    0x00000064 0x00000000 deactivated
rtgui    0x00000032 0x001a7c7e activated
rtgui    0x00000002 0x001a7c7a activated
wb_gui   0x00000000 0x00000000 deactivated
rtgui    0x00000000 0x00000000 deactivated
touch    0x0000000c 0x00000000 deactivated
tcpip    0x00000064 0x001a7cd4 activated
etx      0x00000000 0x00000000 deactivated
erx      0x00000000 0x00000000 deactivated
tidle    0x00000000 0x00000000 deactivated
tshell   0x00000064 0x001a547f deactivated
led      0x00000032 0x001a7c80 activated
current tick:0x001a7c7d
        0, 0x00000000

出0入33汤圆

发表于 2013-3-25 14:58:00 | 显示全部楼层
查ENC28J60寄存器
我前段时间调试rtt+lwip+dm9000aep也是,网线直连电脑连续半个月也不会有问题,一旦放到局域网里面,过不了几个小时就收不到数据,后来查dm9000的寄存器发现每次卡死时都是收到多播包时,查了好久才发现是局域网里偶尔会有些特殊的多播包,遇到这个包就卡死了,到现在也没有完美解决。

出0入4汤圆

 楼主| 发表于 2013-3-25 15:02:41 | 显示全部楼层
aozima 发表于 2013-3-25 11:10
重点检查ENC28J60的发送阻塞,以防止发送失败后死锁。
即检查 etx 线程是因什么原因挂起,list_sem()等。 ...

finsh>>list_thread()
thread  pri  status      sp     stack size max used   left tick  error
-------- ---- ------- ---------- ---------- ---------- ---------- ---
wb_gui   0x19 ready   0x000000d8 0x00001000 0x000003f0 0x00000003 000
rtgui    0x0f suspend 0x000000e8 0x00000400 0x000000e8 0x00000005 000
tcpip    0x0c suspend 0x000000d0 0x00000400 0x00000198 0x00000011 000
etx      0x0f suspend 0x00000090 0x00000200 0x00000090 0x00000008 000
erx      0x0f suspend 0x00000090 0x00000200 0x000000c0 0x00000007 000
tidle    0x1f ready   0x00000040 0x00000100 0x00000060 0x00000009 000
tshell   0x14 ready   0x00000088 0x00000800 0x000002f0 0x00000005 000
led      0x14 suspend 0x00000078 0x00000200 0x00000078 0x00000005 000
        0, 0x00000000
finsh>>
以上是正常情况下,etx也是挂起的。

出0入4汤圆

 楼主| 发表于 2013-3-25 17:24:45 | 显示全部楼层
本帖最后由 林州 于 2013-3-25 17:27 编辑

正常情况如下:
finsh>>enc28j60()
-- enc28j60 registers:
HwRevID: 0x06
Cntrl: ECON1 ECON2 ESTAT  EIR  EIE
       0x04  0x80  0x01  0x00  0xc8


finsh>>enc28j60()
-- enc28j60 registers:
HwRevID: 0x06
Cntrl: ECON1 ECON2 ESTAT  EIR  EIE
        0x00   0x80   0x01   0x00   0x00      故障时寄存器被修改了,正在找为什么?

出0入4汤圆

 楼主| 发表于 2013-3-26 09:41:49 | 显示全部楼层
本帖最后由 林州 于 2013-3-26 09:43 编辑

不通时MAC  : MACON1 MACON3 MACON4
                     0x00     0x00       0x00           这3个寄存器只在初始化时进行了操作,为什么会运行中变成0呢!是不是我的28j60硬件坏了?如果拔掉网线运行,这个故障率会提高不少。求解?(用的RT-thread的28j60驱动程序)

出0入4汤圆

 楼主| 发表于 2013-3-26 10:20:07 | 显示全部楼层
jlink
查看,根本不进入中断。这咋回事,寄存器为什么置0呢

出0入4汤圆

 楼主| 发表于 2013-3-26 11:12:26 | 显示全部楼层
问题应该是这样的,28j60用杜邦线供电,接触可能不好,只要拿手晃几下就会出现上面的情况,这次我拿胶枪把线直接粘到板子上了,再运行几天试试。

出0入0汤圆

发表于 2013-3-26 16:38:11 | 显示全部楼层
因为ENC28J60是电平中断,而STM32只支持边沿中断,那么当某次中断错过了,就再也进不了中断了。
当实际项目中有这种情况时,软件上面要做规避。 打胶会好些,但不能保证不会死锁。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 22:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表