搜索
bottom↓
回复: 18

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

[复制链接]

出0入0汤圆

发表于 2013-9-21 15:37:31 | 显示全部楼层 |阅读模式
正在做一个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奉送!

出0入0汤圆

 楼主| 发表于 2013-9-27 17:11:00 | 显示全部楼层
找到原因了,是ethernetif.c里面的ethernetif_input没有处理好

出100入101汤圆

发表于 2013-9-27 17:22:56 | 显示全部楼层
LZ用freertos的哪个版本?Lwip比较占内存。

出0入0汤圆

 楼主| 发表于 2013-9-27 17:51:58 | 显示全部楼层
6.1.0, 手头有7.3.0还没测试。
感觉lwip相对于uip完全不是一个级别的,太复杂了。也不敢随便改里面的东西。
还没考虑内存问题,我有192K的RAM。

出0入0汤圆

发表于 2013-9-27 20:04:43 | 显示全部楼层
sgweilong 发表于 2013-9-27 17:51
6.1.0, 手头有7.3.0还没测试。
感觉lwip相对于uip完全不是一个级别的,太复杂了。也不敢随便改里面的东西。 ...

Lwip中有个snmp,这个很关键。

出0入0汤圆

 楼主| 发表于 2013-9-28 09:00:22 | 显示全部楼层
LWIP里面的函数,看着比RTOS更晕。
楼上说的SNMP,在我的LWIP中没有打开啊!
#ifndef LWIP_SNMP
#define LWIP_SNMP                       0
#endif

啥也不说,少看娱乐新闻,埋头学习中
Simple Network Management Protocol (SNMP) is an "Internet-standard protocol for managing devices on IP networks". Devices that typically support SNMP include routers, switches, servers, workstations, printers, modem racks and more.

出0入0汤圆

发表于 2013-9-28 09:21:54 | 显示全部楼层
sgweilong 发表于 2013-9-27 17:11
找到原因了,是ethernetif.c里面的ethernetif_input没有处理好

是不是说在ethernetif_input里面,你原来的做法,在某些错误分支上,可能出现内存泄漏?

出0入0汤圆

 楼主| 发表于 2013-9-28 11:01:06 | 显示全部楼层
回楼上,不是。
这个问题,我找了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

出0入0汤圆

发表于 2013-11-8 00:03:41 | 显示全部楼层
楼主你好,请教下你是怎么解决的。我遇到和你一样的问题,环境也是freertos+lwip1.3.2。

出0入0汤圆

发表于 2013-11-8 00:21:04 来自手机 | 显示全部楼层
干嘛不用 rtt呢

出0入0汤圆

发表于 2013-11-8 16:48:34 | 显示全部楼层
这个很专业 http://asf.atmel.com/docs/2.11.1 ... 7ed01a084faa571ed34

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

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

出0入0汤圆

发表于 2013-11-11 08:30:06 | 显示全部楼层
http://item.taobao.com/item.htm?id=27112872219这块板子网络例程很多

出0入0汤圆

发表于 2013-11-11 09:36:32 | 显示全部楼层
     LwIP变慢,很大一部分原因是内存分配的原因。
     建议所有与WAITTIME相关的全部代码干掉。在实际应用中,WAITTIME跟应用是没多大关系的。因为,不管是哪一下关闭连接,肯定是不会希望这个连接以后还有什么用的,直接关闭就好,免得它还占有内存。

出0入0汤圆

发表于 2013-11-11 17:10:25 | 显示全部楼层
我现在还遇到一个问题就是板子上电后,连接没有问题,但是过一段时间,时间有长有短,就连不上了,ping也不通。
大家有遇到类似问题吗,一起讨论下。

出0入0汤圆

发表于 2013-11-21 13:24:29 | 显示全部楼层
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;
        }
      }
    }
  }
}  

出0入0汤圆

发表于 2013-12-20 15:06:14 | 显示全部楼层
马克
         

出0入0汤圆

发表于 2015-11-16 16:05:39 | 显示全部楼层
sgweilong 发表于 2013-9-28 11:01
回楼上,不是。
这个问题,我找了1个多星期,的确有很多人说内存泄漏的问题。也有人说是移植后驱动的问题。 ...

你好 我有看到你之前有一篇文章"熟悉freertos+lwip的坛友进来帮帮忙"
看到你已经解决此问题
想请教你如何修改ethernetif_input这函数之后
让Ping 可以正常运作
如果方便的话 是否可以提供ethernetif_input的SOURCE吗?
不好意思 麻烦您了

出0入0汤圆

发表于 2016-3-21 09:49:54 | 显示全部楼层
哥们。能具体说下怎么解决的不。

出0入0汤圆

发表于 2017-1-16 17:03:08 | 显示全部楼层
敢问解决了么?我也碰到一样的问题!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 09:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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