熟悉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奉送!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
qq302011
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;
        }
      }
    }
  }
}  

一周热门 更多>