板子接上路由器后反复重启调试记录

背景:STM32F207 freeRTOS lwip(socket编程方式)

现象:板子RJ45接口不接路由器时能正常使用,接上路由器之后,每运行一段时间就重启一次。

调试:
首先发现造成重启的原因是,喂狗函数放在网络任务(优先级为倒数第二)中,网络任务阻塞不能喂狗导致看门狗触发。

在网络任务中寻找阻塞位置,发现socket函数返回0,在connect -> lwip_connect -> netconn_connect 中阻塞。调试信息显示为:在这里插入图片描述
更改使用RAW编程方式,则网络任务不会阻塞,程序也不会重启。调试信息如下:在这里插入图片描述
可以看到有明显区别是:socket编程方式中出现两次processing active pcb才出现一次polling application。(没有时间深究原因…)

解决:
目前解决办法是使用RAW编程代替socket编程。

另:将看门狗放在优先级最低的任务中,程序能正常运行不重启,且网络任务阻塞时长到一定程度之后又可以继续运行,可见其原因是网络任务阻塞时间大于看门狗设定时间,而不是网络任务死掉了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值