当前位置: 首页 > news >正文

lwIP学习记录4——裸机移植lwIP工程

1、工程准备

本文参考学习正点原子进行移植学习,并做此记录!

我使用的是STM32F407探索者开发板,HAL库版本是STM32Cube_FW_F4_V1.26.0。

复制例程:实验37 内存管理实验

二、下载LWIP源码包

Index of /releases/lwip/http://download.savannah.nongnu.org/releases/lwip/可以通过以上的网址链接,进行lwIP源码包以及contrib包的下载。 

我下载的最新源码包:V2.2.1,而原子使用的是V2.1.3

 contrib包文件介绍

 lwIP源码包文件介绍

源码包主要就是看src文件夹里面的各种文件,实现了对TCP/IP协议的应用层、传输层和网络层的实现

三、移植流程

1、添加lwIP源码添加到工程

在工程的Middlewares目录下新建lwip,且在lwip下新建arch和lwip_app文件夹;

把lwIP源码包下的src文件夹复制到Middlewares\lwip目录下;

2、添加以太网驱动文件

打开原子写好 的lwip例程复制以太网驱动文件,然后粘贴到我们工程的BSP文件夹下(这里很多同学会有疑问,怎么没讲怎么写驱动?确实没有讲,后续只能我们自己研究学习了)

3、打开工程添加网卡与库文件

4、添加stm32f4xx_hal_conf.h到USER文件夹下并修改

为什么要修改?是因为原子 的内存实验这个例程没用到以太网功能,所以在库里面删除了以太网 的函数,所以现在要修改

1)以太网宏注释取消

2)下载HALV1.26版本

3)打开这个stm32f4xx_hal_conf_template.h文件,找到以太网相关的配置

复制200-264行代码

粘贴到工程的conf.h的188行

 5、工程添加lwip分组文件

1)添加分组

2)往分组添加文件 

添加到arch文件时候,需要找寻其他文件来添加,如下图

lwipopts.h:这个文件是配置网络层的内存空间大小,我们参考ST的lwip历程把它复制过来

etherneif.c与etherneif.h ,我们参考ST的lwip历程把它复制过来

cc.h  

lwip_comm.c与lwip_comm.h从原子例程复制过来,后续在研究如何写

最后复制完,如下图

6、arch添加刚才复制的所有.c文件添加进来

7、添加lwip头文件路经

8、编译工程,然后修改配置文件

1)修改cc.h:配置lwIP数据类型;

2)修改ethernetif.c:以太网网卡驱动文件;

直接复制例程中写好的就行,不用对原理深究,之后会逐一学习;

3)修改ethernetif.h:给外部文件一个使用接口;

4)修改HAL配置文件:兼容四款PHY芯片。

先屏蔽

后添加

这个主要是为了兼容四款PHY芯片,价格一个ifdef的宏定义,来选择具体的PHY芯片。

8、 主函数修改代码,复制例程的主函数代码过来

编译无错误

9、注意事项

1)如果网络的灯不闪烁,可能没做硬件的复位

2)如果不使用DHCP请求,就把他写0

然后我们在这里设置IP等等

 3)测试,电脑ping一下开发板的IP地址,看通不通

4)开发板不同区别在与PHY芯片不同,或者RMII引脚不同、或者MAC地址不同,裸机移植到这里完成。

http://www.dtcms.com/a/295096.html

相关文章:

  • HCIP一二章笔记
  • Linux运维新手的修炼手扎之第24天
  • 仰望星空:DIY国际空间站(ISS)过境提醒天线
  • Pig Cloud使用Debezium实时监听数据变更
  • pandas库
  • 18-设备虚拟化IRF
  • 题单【函数与结构体】
  • c++--面向对象封装--实践
  • window下c++共享内存,进程互斥锁。
  • 前端跨域请求原理及实践
  • 一二章笔记总结
  • CSP-J系列【2024】P11229 [CSP-J 2024] 小木棍题解
  • 1688官方跨境寻源通API接口调用实战
  • LLM指纹底层技术——混合专家模型
  • CSP-J系列【2023】P9750 [CSP-J 2023] 一元二次方程题解
  • SSH 一键互信配置脚本 V2.0 使用指南
  • 卡尔曼滤波数据融合
  • AI 及开发领域动态与资源汇总(2025年7月23日)
  • 【LeetCode】算法详解#9 ---旋转图像
  • QT开发---基础介绍及环境搭建
  • STM32中SystemCoreClockUpdate函数解读
  • 双写缓冲区 Redo Log
  • 基于GitHub的Terraform自动化管理最佳实践
  • 多服务器批量发布软件
  • Linux编程:9、线程编程-互斥锁与条件变量
  • 扫地机产品的电池CQC认证遵循哪个标准?
  • 1. 一份“从 0 到 1” 的 WSL(Windows Subsystem for Linux)速查手册
  • J2EE模式---视图助手模式
  • ospf多区域
  • git的使用,推送仓库github