移植LWIP到STM32F207
在上篇文章《LWIP初体验-修改ST官方demo》中我们已经在自己的开发板上实现了简单的TCPsever和TCPclient功能。验证完了硬件,接下来的工作就是优化代码,添加应用程序。
有些同学想学习一下,如果下载LWIP的代码,然后移植到自己的代码中,下面我们聊聊移植问题。
链接:https://pan.baidu.com/s/1u-QZye_HB1PAiBOykFlNqQ
提取码:4hiw
(提示:公众号不支持外链接,请复制链接到浏览器下载)
把以太网驱动库添加进工程
增加新库的头文件路径
将LWIP源码放入目录中,我的个人习惯放到了Third_Party文件夹中,属于第三方库,以后用到其他类似FATFS这样的第三方库,都会放入次文件夹内。
我们把stm32f2x7_eth_conf_template.h文件剪切到文件夹中,并重命名为stm32f2x7_eth_conf.h
修改文件名称
当然新加的头文件,要添加新的头文件路径。
注意:这个文件是只读文件,要把对勾去掉,不然的话在IDE中无法修改代码。
添加以太网RTL8201EL的驱动程序
放入对应的位置
然后把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。
添加头文件路径
编译代码,有1个错误
在timers.c添加
代码如下
#if defined (__CC_ARM) /*!< ARM Compiler */
u32_tsys_now(void){}
#endif
编译下载,发现ping会死机
测试成功
总结:这是一篇流水账的移植记录,深入了解LWIP网络开发,还是要动手自己移植,多多研究源码。
☛MCU内部为什么不集成晶振 必读