打印
[STM32F2]

关于stm32的lwip-1.4.1 ping不通的问题

[复制链接]
5836|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
maiweiqi|  楼主 | 2016-2-10 18:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天在学习lwip,由于stm32f2的官方默认的lwip的版本是1.3.2的,于是就想把它换成1.4.1的,在官网下载了相应的库,移植后发现功能正常,但是ping超时,通过一番追踪发现,在icmp_input函数里面
#if CHECKSUM_GEN_ICMP
    /* adjust the checksum */
    if (iecho->chksum >= PP_HTONS(0xffffU - (ICMP_ECHO << 8))) {
      iecho->chksum += PP_HTONS(ICMP_ECHO << 8) + 1;
    } else {
      iecho->chksum += PP_HTONS(ICMP_ECHO << 8);
    }
#else /* CHECKSUM_GEN_ICMP */
    iecho->chksum = 0;
#endif /* CHECKSUM_GEN_ICMP */
由于这个编译时默认编译了软件的校验,但是st又使用了硬件校验,导致了重复校验,所以返回的ping包出错了。
所以我们只需要在lwipopts.h里把
#define CHECKSUM_GEN_ICMP                    0
加上就屏得通了。
沙发
zchong| | 2016-2-13 08:17 | 只看该作者
GOOD,好帖分享,赞~~~

使用特权

评论回复
板凳
Brand2| | 2016-2-13 20:02 | 只看该作者
编译时默认编译了软件的校验,但是st又使用了硬件校验,导致了重复校验

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

86

帖子

3

粉丝