熟悉freertos+lwip的坛友进来帮帮忙

2020-01-01 17:39发布

正在做一个STM32F407的项目,调试freertos+lwip的时候,花了好多时间都解决不了长时间ping的问题。
ping 1472bytes的包,运行大概1~2个小时后板子的反应就变慢,比如刚开始是<1ms, 越到后面就越慢,接近1000ms以上。

最开始的现象是ping 1472长度的包,过不了多久就ping不通,但减少ping的长度到900就又可以。后来把系统时钟从100M调到120M,好像可以解决这个问题。

刚刚接触LWIP,目前版本是1.3.2,是借用网上207的源码,目前看来freertos还是比较稳定的。曾尝试改用LWIP1.4.1, 但网络没调通而放弃。
已经为这个问题焦虑了快1个星期了,尝试改了一些参数,但都无果。那位兄弟做过或碰到类似的问题,指教1、2,莫元100奉送!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
sgweilong
1楼-- · 2020-01-02 16:44
回楼上,不是。
这个问题,我找了1个多星期,的确有很多人说内存泄漏的问题。也有人说是移植后驱动的问题。
我相信了后者,的确是移植后的驱动问题。只是没想到是ethernetif_input,这个貌似LWIP自带的函数。

在网上,只有一个回答正确这个问题,反复看才有点明白,
http://lists.gnu.org/archive/htm ... 12-11/msg00013.html
I'm not sure about the LCP demo code, but the ST demo code for LWIP had a poor implementation where the incoming messages were not being read out correctly from the ethernet hardware FIFO. It assumed one interrupt per message, but if you delay servicing the ISR for a brief time, you may have 2 (or more) messages and only 1 interrupt.

然后在atmel的网站上找到源码,修改了我自己的源码,然后就OK了。一句话,还是要仔细理解LWIP,跟作者Adam比起来,很多写程序的和种田的没啥区别,我也是。
http://asf.atmel.com/docs/2.11.1 ... /ethernetif_8c.html

zl308424
2楼-- · 2020-01-02 18:33
楼主你好,请教下你是怎么解决的。我遇到和你一样的问题,环境也是freertos+lwip1.3.2。
3050311118
3楼-- · 2020-01-02 19:21
干嘛不用 rtt呢
lyzhangxiang
4楼-- · 2020-01-02 21:16
这个很专业 http://asf.atmel.com/docs/2.11.1 ... 7ed01a084faa571ed34

之前移植到mb9bf218s上面参考st官方的那个demo 后来用dm9000+stm32f10x也是参考这个 看到rtt的写法感觉都不太一样

现在有参考了,请问楼主是怎么找到这个的  asf还有这么专业的网址啊  手上有个wifi的sdk  atmel的m4也是asf的框架  原来资料网上一大堆  惭愧了

xiaoaa
5楼-- · 2020-01-02 22:48
 精彩回答 2  元偷偷看……
wuzhujian
6楼-- · 2020-01-03 02:53
     LwIP变慢,很大一部分原因是内存分配的原因。
     建议所有与WAITTIME相关的全部代码干掉。在实际应用中,WAITTIME跟应用是没多大关系的。因为,不管是哪一下关闭连接,肯定是不会希望这个连接以后还有什么用的,直接关闭就好,免得它还占有内存。

一周热门 更多>