将lwip1.4.1工程移植至lwip2.1.2记录
- 1. ip_addr结构体
- 2. etharp.h
- 3. cc.h与arch.h
- 4. tcp_impl.h
关于二者文件、功能等差异网上已有很多文章介绍,类似这个文档有简单说了下这两个版本间的一些差异: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定义,如下图;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200326214313348.png)
2.1.2版本中需替换为ip_addr_t, 头文件包含#include “lwip/ip_addr.h”
![](https://img-blog.csdnimg.cn/20200326215615125.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dleWNlbjE=,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200326215050494.png)
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;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200326215954331.png)
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里定义均可;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200326222618945.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200326222919861.png)
4. tcp_impl.h
2.1.2中删除了此头文件,并将其实现放在了历史文件夹下
lwip-2.1.2\src\include\lwip\priv\tcp_priv.h。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200326221213645.png)
在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)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020032622315482.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dleWNlbjE=,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200326223241673.png)
暂且想起来这么多,后续想起来再补充。。。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)