大家好,又见面了,我是你们的朋友全栈君。
目录
在上篇文章《LWIP初体验-修改ST官方demo》中我们已经在自己的开发板上实现了简单的TCPsever和TCPclient功能。验证完了硬件,接下来的工作就是优化代码,添加应用程序。
有些同学想学习一下,如果下载LWIP的代码,然后移植到自己的代码中,下面我们聊聊移植问题。
我们需要的基础工程是已经实现了10ms定时,led灯1s闪烁,实现了串口打印工程。还需要一份LWIP1.4.1的源码,需要STM32F2系列的以太网驱动。
移植前和移植后源码资料,还有LWIP的源码下载链接
链接:百度网盘 请输入提取码
提取码:4hiw
01、IAR工程移植
首先是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网络开发,还是要动手自己移植,多多研究源码。
点击查看本文所在的专辑,STM32F207网络开发
关注公众号,第一时间收到文章更新。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/162095.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...