查看原文
其他

移植LWIP到STM32F207

Firefly 知晓编程 2022-10-21

在上篇文章《LWIP初体验-修改ST官方demo》中我们已经在自己的开发板上实现了简单的TCPsever和TCPclient功能。验证完了硬件,接下来的工作就是优化代码,添加应用程序。

有些同学想学习一下,如果下载LWIP的代码,然后移植到自己的代码中,下面我们聊聊移植问题。

我们需要的基础工程是已经实现了10ms定时,led灯1s闪烁,实现了串口打印工程。还需要一份LWIP1.4.1的源码,需要STM32F2系列的以太网驱动。
移植前和移植后源码资料,还有LWIP的源码下载链接

链接:https://pan.baidu.com/s/1u-QZye_HB1PAiBOykFlNqQ

提取码:4hiw

(提示:公众号不支持外链接,请复制链接到浏览器下载)


01IAR工程移植
首先是IAR工程的移植操作。
添加以太网驱动库,注意,以太网驱动库并不在标准外设库中,需要大家自行到网上或ST官网下载。

把以太网驱动库添加进工程

增加新库的头文件路径

将LWIP源码放入目录中,我的个人习惯放到了Third_Party文件夹中,属于第三方库,以后用到其他类似FATFS这样的第三方库,都会放入次文件夹内。

我们把stm32f2x7_eth_conf_template.h文件剪切到文件夹中,并重命名为stm32f2x7_eth_conf.h

修改文件名称

当然新加的头文件,要添加新的头文件路径。

注意:这个文件是只读文件,要把对勾去掉,不然的话在IDE中无法修改代码。

添加以太网RTL8201EL的驱动程序

我们首先拷贝官方历程驱动,这部分主要是硬件层的初始化,在《LWIP初体验-修改ST官方demo》中,我们已经修改完代码,直接拷贝过来就行。

放入对应的位置

然后把BSP硬件驱动添加进入工程

添加lwip源代码,直接按照LWIP源码目录结构添加即可,不用全部添加,按下图所示接口

添加API相关文件

添加Netif相关文件

添加IPV4相关文件

当然,还要添加头文件路径,这是必不可少的

添加中间文件

添加lwipopts.h

编译出错

这些文件主要是官方开发板的lcd相关文件,把他们屏蔽掉

再编译,出新的错误,再次屏蔽这些现实部分的代码。

修改之后,编译没有问题

复制驱动,直接使用官方demo的文件,

拷贝ethernetif.c文件

拷贝lwipopts.h文件。

把原来的文件删除掉

重新添加我们新添加的文件(注意解除只读属性)

修改文件

新建lwip_app.c和lwip_app.h文件

添加LwIP_Init函数接口。

增加LwIP_Pkt_Handle函数。

定义一下宏

包头文件包含一下

修改函数

修改主函数

使用PC端ping一下开发板的IP

移植成功,可以正常响应ping。

这只是个简单的移植,就是个流水账,想看具体修改内容的,可以到文章开头下载工程代码,对比修改前和修改后的区别。网络部分有很多知识,想深入了解,还需要自己多看看代码。
02修改Keil工程
添加文件,这些基本和IAR一样。

添加头文件路径

编译代码,有1个错误

在timers.c添加

代码如下

#if defined (__CC_ARM) /*!< ARM Compiler */ u32_tsys_now(void){} #endif

编译下载,发现ping会死机

修改代码优化等级就好了

测试成功

总结:这是一篇流水账的移植记录,深入了解LWIP网络开发,还是要动手自己移植多多研究源码

END

晶振原理解析

STM32驱动LCD实战

MCU内部为什么不集成晶振 必读

链表在STM32单片机中的应用

电子工程师你真的了解Type-C吗? 必读

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存