STM32标准库移植LWIP

1 介绍        

        这里移植的是lwip1.4.1版本,高版本建议直接用stm32cubeide配置,或者使用hal库。里面好多改的东西不好移植到标准库上了,改起来很麻烦。(而且也不要对HAL库和标准库有太大的差异感,都是官方出的,个人使用没啥差别,区别是可以用ide生成代码,这个才是差异。对于项目而言无所吊谓。有兴趣可以自己搭几套用不同编译器的HAL库项目。)

        写这个文章的目的是记忆一下操作过程。因为用的单片机的官方库资料的lwip包官网上都找不到了,所以配置起来巨麻烦,正点原子和野火的教程又没有对应的单片机,所以从头开发就要对lwip有一定了解。接下来将从架构原理等梳理一下。这里使用的图片来源于野火的教程。野火和正点原子区别就是正点原子把教程从ST那边的官方教程拉的比较开,脱离已有单片机想要做写东西就要重头研究一下,需要配置汇编等等;野火相对来说改动较小,而且代码注释很清楚,对我比较友好。(但是我买的都是正点原子的东西😂)

        一定先看思维导图。

2 LWIP协议栈

2.1 介绍

        我对于这个分层的弄的不太明白,肯定有错误,我就按照自己理解画个脑图,图到时候传上去。

        按照野火的介绍,大致分成下图这样的结构。感觉已经很清楚了,到时候点开看就行。

2.2 文件夹构成

        文件夹构成就是这个样子,像是2.2.0的文件夹构成比这个复杂好多。而且有的功能都没听过。毕竟做的能跑百兆就已经ok了。

3 ST的ETH

        这些图看不清,大约指明都是说啥的,具体看附件。ETH的几个功能就在下边,一般就使用MII和RMII,这里有一个要注意的就是需要有晶振的,要不就自己配一个,RMII用25Mhz,MII用50MHz,要不用MCO输出,注意配置引脚。据说有的PHY自己带,没见过。

4 实现ping功能的文件构成

        看这些例程最烦的就是文件构成,里面好多用不到的、不匹配的,还有不知道开不开的功能(功能需要自己查,我不懂)。因为连接lwip和st的eth的中间部分是st写的,版本迭代、换库等等操作就让小白(我)手足无措。整理了一下文件构成,对于1.4.1版本以下的lwip都差不多,高版本说啥我都用HAL库。

        ST主要有4个部分的文件用来实现ping。第一个是port文件夹。这个文件夹里面的arch文件夹不需要改动的,另外有用os的还有裸奔的,里面有对应的文件。目前是裸奔,所以挂裸奔的文件夹。里面有ethernetif.c和.h,这两个看情况改个include就行,也不需要动(这个文件在lwip/ne

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值