你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32407 以太网一段时间后不能通讯

[复制链接]
z19820201 提问时间:2015-3-13 15:00 /
开发环境MDK5.12 ,Keil RTX,MDK-Pro,自产硬件,STM32F407,DP83848
网络部分分为两部分,一部分为MODBUS-TCP,另一部分为UDP实时传送采样数据
现在的问题是,程序跑一段时间之后以太网无法通讯,ping不通,RJ45绿灯常亮,黄灯闪烁。死掉的时间不固定,最短为8个小时,最长15个小时
死掉后程序其它部分正常,也就是程序通过IO能控制,通过CAN通讯也能控制,只有以太网部分死掉。
死掉后寄存器ETH_DMACHTDR,ETH_DMACHTBAR无变化,寄存器ETH_DMACHRDR,ETH_DMACHRBAR有变化,寄存器ETH_MMCTGFCR,ETH_MMCRGUFCR无变化。正常时这些寄存器都会变化。
求助。谢谢
收藏 评论24 发布时间:2015-3-13 15:00

举报

24个回答
z19820201 回答时间:2015-3-18 09:23:55
安 发表于 2015-3-18 08:59
这里标注的说明,楼主看一下是否发生过类似的异常?

库是封装了的嘛,以我的水平看不到,只知道程序运行到这个代码里面了。缓冲区我已经扩大到12000了,至于释放失败我就搞不清楚是什么情况了。昨天的代码已经把发送程序从中断里面移出去了,但是发送缓冲区请求还在中断里面,网上有资料说这个网络库只可以单任务使用,所以今天把udp_get_buf也移出去了,看看还有啥异常出现。
z19820201 回答时间:2015-3-16 10:39:28
本帖最后由 z19820201 于 2015-3-16 11:13 编辑
安 发表于 2015-3-14 11:08
如果死掉以后,重新初始化网络是否可以恢复?相关寄存器的状态是否可以发一下? ...

原因是发送描述符(TX_DESC)一直被DMA占用,如果手动把描述符改为CPU占用,则网络恢复正常。现在还没有找出DMA没有释放描述符的原因。
z19820201 回答时间:2015-3-17 16:02:27
安 发表于 2015-3-17 15:22
楼主发生的数据是否发生了丢失呢?不建议在中断中进行数据传输。

数据丢失暂时没有发现。现在已经把UDP发送从中断中移出来了。新问题又出现了,运行一段时间后要报ERR_MEM_ALLOC或者ERR_MEM_FREE错误
大浪10010 回答时间:2015-3-13 20:10:22
:):)
kqh1120 回答时间:2015-3-13 21:14:07
不会。帮顶 14.gif
拼命三郎 回答时间:2015-3-13 22:25:29
顶顶顶顶顶顶顶顶顶大大大.jpg
拼命三郎 回答时间:2015-3-13 22:26:15
顶顶顶顶顶顶顶顶顶大大大.jpg
拼命三郎 回答时间:2015-3-13 22:31:18
intel_d8751_die_jpg_thumb.jpg
_ilikerome_ 回答时间:2015-3-14 08:46:26

牛,这个都有啊。。
废鱼 回答时间:2015-3-14 11:08:56
如果死掉以后,重新初始化网络是否可以恢复?相关寄存器的状态是否可以发一下?
拼命三郎 回答时间:2015-3-14 15:41:42
顶顶顶顶顶顶顶顶顶大大大.jpg
bit 回答时间:2015-3-14 16:43:07
帮顶帮顶
z19820201 回答时间:2015-3-17 10:27:05
会不会是因为我的UDP数据是放在TIM1中断里发送的,所以造成了这个问题?
废鱼 回答时间:2015-3-17 15:22:58
楼主发生的数据是否发生了丢失呢?不建议在中断中进行数据传输。
z19820201 回答时间:2015-3-17 16:01:52
数据丢失暂时没有发现。现在已经把UDP发送从中断中移出来了。新问题又出现了,运行一段时间后要报ERR_MEM_ALLOC或者ERR_MEM_FREE错误。
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版