你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32移植LWIP

[复制链接]
STMCU小助手 发布时间:2022-4-19 23:00
01、IAR工程移植
首先是IAR工程的移植操作。

添加以太网驱动库,注意,以太网驱动库并不在标准外设库中,需要大家自行到网上或ST官网下载。

1f745e440429f0a1526ee6277bd4550a.png

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

e06f1a4cc73e19e45ccdb1fdc5615089.png

增加新库的头文件路径

498b8adcea87056902c059ceb5630f13.png

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

1573040b0c5c201ebc0882663befe66d.png

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

5c9591ce998030988e98bf72d9fa4f0e.png

修改文件名称

a9fcc3bd84adc1f24cfb5b2a33ddb410.png

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

eb951db551193af8ea4d626d43ab5238.png

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

d0c4e72946d9d4e935b863ea93e994a0.png

添加以太网RTL8201EL的驱动程序

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

6fbd62d3810b14e629450745ade7efb0.png

放入对应的位置

d83f76234671dbd2644b84d028a60a6f.png

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

8ed88da43af541d3e346f6881b1f143b.png

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

84f7110defc436c4293dd5a2daec1f9b.png

添加API相关文件

c231e625e6d0348009cf745252d42878.png

添加Netif相关文件

3700e2e7e3057c45e4276c2297d1b126.png

添加IPV4相关文件

a2f0ae98516f3c257d7a21f860a32311.png

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

d296d76ae070d69fe8e5ea4e11b4dd8e.png

添加中间文件

c3c1200d2304b8fa42f9be7b1c2c2a21.png

添加lwipopts.h

a83f4e00ad9ff4c0cfc65aa9abec13b6.png

编译出错

1b67b5bbe3f5431ed62cfea838fc1da3.png

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

c5245b4632cf8253b64b85a1f369a960.png

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

6fc6f77d999f69d55ade059ae941a3dd.png

修改之后,编译没有问题

273984ff1a8415cd93de4861cc782b6f.png

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

185f015cda2796d2a076ee4ebe7b3b19.png

拷贝ethernetif.c文件

165ca8c819c9037f3b4393f9d9f2a556.png

拷贝lwipopts.h文件。

0f50205657669bd081d30e2291f7962f.png

把原来的文件删除掉

21c613ac9c41e4b2103e6e2aa1b2fe28.png

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

修改文件

be0b35ad77e375d5bd5b109c919e2ee1.png

新建lwip_app.c和lwip_app.h文件

3f586d71809f026978175e1e446177c4.png

添加LwIP_Init函数接口。

bfa259382a8ea9061f645462296c234e.png

增加LwIP_Pkt_Handle函数。

a6d7942ffd68fbd2633b88356c1e761f.png

定义一下宏

6d484f1e20d8f0ff17cadfa2b002d610.png

包头文件包含一下

70d45e0f9c96c5a0c50c28ef8764edfc.png

修改函数

b0de1f1dae287878d35d84f7d3c62ed5.png

修改主函数

7f04b4d65b01f88b096a2af402faafe4.png

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

8dd280abfb557714d82826495f754b4b.png

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

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

02、修改Keil工程
添加文件,这些基本和IAR一样。

9b14231f1cf035928c9fff35be819087.png

添加头文件路径

08172af71a169d889a3c1b0a60a0f4e1.png

编译代码,有1个错误

a49ecf6b8053ce2d52e4c3aacc267906.png

在timers.c添加

4078634d9185ccc0429afabc42ad47c1.png

代码如下

  1. #if defined   (__CC_ARM) /*!< ARM Compiler */
  2.     u32_tsys_now(void){}
  3. #endif
复制代码

​​​​编译下载,发现ping会死机
修改代码优化等级就好了

950c66fd285bb7fd33ce38e653edd704.png

测试成功

fcafdab9111c71433555efa050145a68.png

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


收藏 评论0 发布时间:2022-4-19 23:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版