熟悉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条回答
zl308424
1楼-- · 2020-01-03 06:16
我现在还遇到一个问题就是板子上电后,连接没有问题,但是过一段时间,时间有长有短,就连不上了,ping也不通。
大家有遇到类似问题吗,一起讨论下。
qq302011
2楼-- · 2020-01-03 07:30
sgweilong 发表于 2013-9-28 11:01
回楼上,不是。
这个问题,我找了1个多星期,的确有很多人说内存泄漏的问题。也有人说是移植后驱动的问题。 ...

这个问题我之前也发觉的,但是没有解决,运行一段时间之后还是死机;我是按官方DEMO板子的程序修改如下:
{
  struct pbuf *p;

  for( ;; )
  {
    if(xSemaphoreTake(s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT)==pdTRUE)
    {
TRY_GET_NEXT_FRAGMENT:
      p = low_level_input( s_pxNetIf );
      if (p != NULL)
      {
        if (ERR_OK != s_pxNetIf->input( p, s_pxNetIf))
        {
          pbuf_free(p);
          p=NULL;
        }
        else
        {
          xSemaphoreTake( s_xSemaphore, 0);
          goto TRY_GET_NEXT_FRAGMENT;
        }
      }
    }
  }
}  
chinaboy25
3楼-- · 2020-01-03 13:03
马克
         
昭仁
4楼-- · 2020-01-03 13:40
 精彩回答 2  元偷偷看……
niaojingxin
5楼-- · 2020-01-03 17:21
哥们。能具体说下怎么解决的不。
weidadejang
6楼-- · 2020-01-03 20:16
敢问解决了么?我也碰到一样的问题!

一周热门 更多>