OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6183|回复: 8

STM32F407+LWIP+UCOS II稳定性问题

[复制链接]

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2280
金钱
2280
注册时间
2013-12-16
在线时间
448 小时
发表于 2016-4-18 08:33:46 | 显示全部楼层 |阅读模式
10金钱
我自制PCB,STM32F407+4M SRAM+DP83848,运行LWIP+UCOS II,没有见面操作,只运行MODBusTCP+TCP Server,MODBusTCP PC客户端每200ms刷新一次数据,TCPServer每2S发送4880字节,TCPServer PC客户端每秒发送一次确认数据"ACK",运行20小时左右出现以下错误,但还能继续运行.数据刷新正常.


Assertion "tcp_write: valid queue length" failed at line 683 in ..\LWIP\lwip-1.4.1\src\core\tcp_out.c
Assertion "pcb->snd_queuelen >= pbuf_clen(next->p)" failed at line 1020 in ..\LWIP\lwip-1.4.1\src\core\tcp_in.c
Assertion "pbuf_free: p->ref > 0" failed at line 650 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c
Assertion "pbuf_free: p->ref > 0" failed at line 650 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c
Assertion "pbuf_free: p->ref > 0" failed at line 650 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c
Assertion "pbuf_free: p->ref > 0" failed at line 650 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c
Assertion "pbuf_free: p->ref > 0" failed at line 650 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c

运行4天左右出现以下错误,LWIP挂掉了,看门狗进行重启了

Assertion "pcb->snd_queuelen >= pbuf_clen(next->p)" failed at line 1020 in ..\LWIP\lwip-1.4.1\src\core\tcp_in.c
Assertion "pbuf_free: p->ref > 0" failed at line 650 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c
Assertion "tcp_input: pcb->next != pcb (before cache)" failed at line 182 in ..\LWIP\lwip-1.4.1\src\core\tcp_in.c
Assertion "tcp_input: pcb->next != pcb (after cache)" failed at line 188 in ..\LWIP\lwip-1.4.1\src\core\tcp_in.c


检查LWIP代码其中对pcb->snd_queuelen >= pbuf_clen(next->p)和 pcb->next != pcb (after cache)虽然有报错提示,但代码中并未对该异常进行纠错处理,仍然按照正常情况执行,这种情况下势必会最终导致崩溃,不知道为什么?
测试多次,历时一个月了,最长不超过5天,最短3天就出现重启,不知道问题在哪里?请大侠提供一点思路,谢谢了.


最佳答案

查看完整内容[请看2#楼]

我现在放弃UCOS+LWIP组合了,因为没有时间去一点点调试了,我采用RTX + RL-TCPnet组合实现了,MDK提供很多RL-TCPnet中间件,目前已经很稳定了,连续1个月不会掉线,不会重启
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2280
金钱
2280
注册时间
2013-12-16
在线时间
448 小时
 楼主| 发表于 2016-4-18 08:33:47 | 显示全部楼层
佚名流浪 发表于 2016-9-18 18:47
不知楼主问题解决没有?

我现在放弃UCOS+LWIP组合了,因为没有时间去一点点调试了,我采用RTX + RL-TCPnet组合实现了,MDK提供很多RL-TCPnet中间件,目前已经很稳定了,连续1个月不会掉线,不会重启
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-4-23 19:35:56 | 显示全部楼层
在malloc和free的时候,禁止中断试试
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2280
金钱
2280
注册时间
2013-12-16
在线时间
448 小时
 楼主| 发表于 2016-4-27 07:45:53 | 显示全部楼层
谢谢,我试一下
回复

使用道具 举报

5

主题

62

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
425
金钱
425
注册时间
2016-3-9
在线时间
74 小时
发表于 2016-8-13 22:52:15 | 显示全部楼层
mark!!!
回复

使用道具 举报

1

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-1-5
在线时间
50 小时
发表于 2016-9-18 18:47:59 | 显示全部楼层
不知楼主问题解决没有?
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2016-9-18 19:01:00 | 显示全部楼层
再次向你推荐Microchip TCPIP协议栈,我在项目中用,从来没有出过问题.
我在测试的时候,写了一个TCP回环测试助手,实现服务器,终端作为客户端,收到什么回什么.
终端上线后,服务器一次发送10K+的随机数,分段CRC效验,终端接收后原样回复,服务器效验数据,一直重复,连续测试超过一周,无数据错误,无掉线,无死机重启.
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2280
金钱
2280
注册时间
2013-12-16
在线时间
448 小时
 楼主| 发表于 2016-9-18 19:30:41 | 显示全部楼层
本帖最后由 zdfwyh 于 2016-9-18 20:05 编辑
zmingwang 发表于 2016-9-18 19:01
再次向你推荐Microchip TCPIP协议栈,我在项目中用,从来没有出过问题.
我在测试的时候,写了一个TCP回环测试 ...

谢谢,我学习学习,另外你用的什么系统我找了一下Microchip TCPIP协议栈应用资料,太少了,我这种水平很难移植,同时也没有时间用在项目上了
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2016-9-18 21:58:29 | 显示全部楼层
zdfwyh 发表于 2016-9-18 19:30
谢谢,我学习学习,另外你用的什么系统我找了一下Microchip TCPIP协议栈应用资料,太少了,我这种水平很难移 ...

我用RTX,其实也不是很靠谱,4.7x版的有BUG,KEIL5中的是CMSIS-OS接口,但是时间片轮转的算法太槽了.
但是有一个好处,就是KEIL对RTX提供运行时监视支持,可以很方便的查看调用栈和线程状态,以及栈空间使用情况.
小心使用还是不错的.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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