将lwip1.4.1工程移植至lwip2.1.2记录

将lwip1.4.1工程移植至lwip2.1.2记录

关于二者文件、功能等差异网上已有很多文章介绍,类似这个文档有简单说了下这两个版本间的一些差异:lwip 1.4.1到lwip2.1.2升级之路

本文要记录在将基于lwip1.4.1版本例程:STM32F4x7_ETH_LwIP_V1.1.1\Project
Standalone\udp_echo_server移植至lwip2.1.2平台过程中遇到的一些问题,例如头文件的包含,结构体的差异,某些函数的实现差异等;

1. ip_addr结构体

1.4.1版本中使用 struct ip_addr定义地址,此结构体在lwip-1.4.1\ src\include\ipv4\lwip\ ip_addr.h定义,如下图;
在这里插入图片描述 在这里插入图片描述
2.1.2版本中需替换为ip_addr_t, 头文件包含#include “lwip/ip_addr.h”

在这里插入图片描述

2. etharp.h

二者位于不同文件下,1.4.1位于lwip-1.4.1\src\include\netif|etharp.h, 2.1.2位于lwip-2.1.2\src\include\lwip\etharp.h主要为函数声明, lwip-2.1.2\src\include\lwip\prot\etharp.h主要为ARP protocol definitions;
在这里插入图片描述

3. cc.h与arch.h

arch.h(lwip-2.1.2\src\include\lwip\arch.h)中u8_t、u32_t等类型定义已在cc.h(STM32F4x7_ETH_LwIP_V1.1.1\Utilities\ Third_Party\lwip-1.4.1\port\STM32F4x7\arch\cc.h)中定义,需定义宏LWIP_NO_STDINT_H以避免arch中重复定义,可在程序中定义
#ifndef LWIP_NO_STDINT_H
#define LWIP_NO_STDINT_H 1
#endif, 或在keil里定义均可;
在这里插入图片描述
在这里插入图片描述

4. tcp_impl.h

2.1.2中删除了此头文件,并将其实现放在了历史文件夹下
lwip-2.1.2\src\include\lwip\priv\tcp_priv.h。
在这里插入图片描述
在2.1.2版本不应再使用此文件,像lwip-1.4.1\src\include\lwip\tcp_impl.h里的TCP_TMR_INTERVAL参数,1.4.1中经常见到像下面这样使用该参数:
在这里插入图片描述

2.1.2中TCP_TMR_INTERVAL参数在lwip-2.1.2\src\core\timeouts.c中定义,tcp_tmr()、etharp_tmr()等函数的周期调用已在sys_check_timeouts()中采用链表的方式实现,用户只需循环调用此函数即可,使用TIMERS需修改lwipopts.h中NO_SYS为1,NO_SYS_NO_TIMERS为0,以定义LWIP_TIMERS宏,用户还应实现u32_t sys_now(void)函数,返回系统时间;关于times想了解更多可以看下这篇文章:LwIP 之四 超时处理/定时器(timeouts.c/h)
在这里插入图片描述
在这里插入图片描述
暂且想起来这么多,后续想起来再补充。。。





  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值