正点原子lwIP学习笔记——裸机移植lwIP

1.移植参考资料

主要就是参考了正点原子他自己的一个开发指南;还有ST的官方例程,对于我手头的电机开发板(f407),固件包的v1.26.x和v1.27.x是不一样的,1.27.x就是新版本,相当于阿波罗北极星板子的移植;1.26.x就是旧版本。

2.lwIP源码库下载

lwIP下载地址
可以通过以上的网址链接,进行lwIP源码包以及contrib包的下载。
下载包

contrib包文件介绍

contrib包内容

lwIP源码包文件介绍

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

3.lwIP移植整体流程——旧版本

  1. 准备基础工程:在Middlewares目录下新建lwip,且在lwip下新建arch和lwip_app文件夹;
  2. 添加lwIP库到工程:把lwIP源码包下的src文件夹复制到Middlewares\lwip目录下;
  3. 添加以太网驱动文件:配置介质接口、初始化IO以及开启ETH中断等操作;
  4. 工程中新建分组:用来添加lwIP配置文件和lwIP核心源码;
  5. 修改配置文件:修改lwIP配置文件。

老版本针对的都是f4的板子,正好就是我手头的电机开发板(f407),所以我相当于新旧版本的移植都过一遍学的彻底一点。

基础工程选择的是内存管理的实验。

准备基础工程

准备基础工程
这一步主要是按照正点原子管理代码的规范,在中间软件的目录下添加lwip的相关文件夹来方便管理。

添加lwIP库到工程

添加lwIP库

添加以太网驱动文件

添加以太网驱动
这一步是吧正点原子已经写好的ethernet.c搬进来用,同时还要添加相应的HAL库驱动以太网所需的头文件。
修改conf.h文件,通过把固件包里面的conf的template中的Ethernet相关的内容全部复制拖进我们自己的conf.h就可以了。

工程中新建分组

工程新建分组
就是把源码全部复制进工程,然后按照正点原子的风格进行代码管理。
arch文件夹中文件的来源
添加头文件路径
这一步很值得注意,如果你都是跟着教程来学,跟着例程源码来搞,你如果自己去CUBEMX配置初始化然后加自己的逻辑代码,就会有这样的找不到头文件的问题,是在年末数帮的C/C++里面Include Path里面去添加,如下图:
添加头文件路径

修改配置文件

  1. 修改cc.h:配置lwIP数据类型;
  2. 修改ethernetif.c:以太网网卡驱动文件;
  3. 修改ethernetif.h:生命ethernetif.c的重要函数,给外部文件一个使用接口;
  4. 修改HAL配置文件:兼容四款PHY芯片。

修改cc.h
主要就是把一个include没有的头文件屏蔽掉,再把一个宏定义屏蔽掉;
修改ethernetif.c
这几个函数是有过改动的,所以直接复制例程中写好的就行,不用对原理深究,之后会逐一学习;
修改ethernetif.h
同理,反正已经直接复制过去了,也就不需要改了;
修改HAL库配置
这个主要是为了兼容四款PHY芯片,价格一个ifdef的宏定义,来选择具体的PHY芯片。

如果是探索者(f429那一款),移植就两个地方不一样:

  1. lwip_comm.c中的MAC地址不一样;
  2. 复位引脚不一样,电机开发板是PI8,探索者是PD4。

4.lwIP移植整体流程——新版本

新旧版本比较

移植对比
旧版本:仅设置双工及网速参数即可;
新版本:还需要手动设置软复位、自动协商以及MDC时钟。

整体流程是相似的,我就把不一样的地方贴出来:

添加以太网驱动

添加以太网驱动
区别就是还需要添加ethernet_chip.c,这个是PHY芯片的驱动文件;还有添加pcf8547.c/.h文件,用来进行IO扩展和PHY复位。

修改配置文件

这一步旧版本是在HAL的conf配置,新版本则是在新的那个PHY芯片驱动文件,也就是ethernet_chip.h中进行更改
修改PHY芯片配置

5.课堂总结

该说不说,这个lwIP的课程讲的是真细,所有的移植过程都做了一个PPT,知识点也都总结好了方便复习;之前看FreeRTOS的时候,老师讲得很好,就是移植的课程中手把手教你怎么改,就是没有知识点的总结步骤,可能是因为太多了,有一丢丢小缺憾。

使用方面的话,自动DHCP分配IP,需要电脑和板子连在同一个路由器上,电脑可以WiFi,然后板子通过网线连起来;不然的话就电脑直接去网线连在板子上,那样就要按照教程设置电脑的IP地址然后静态连接。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 硬件准备 在移植lwip之前,首先需要准备好硬件环境。IMX6ULL是一款基于ARM Cortex-A7内核的嵌入式处理器,具有高性能、低功耗、高集成度等特点,可以广泛应用于物联网、智能家居、工业控制等领域。 在移植lwip时,需要使用IMX6ULL开发板以及一些外设,如网卡、串口等,具体硬件配置如下: - IMX6ULL开发板:可选评估板或自己设计的板子; - 网卡:推荐使用支持TCP/IP协议栈的网卡,如RTL8111、RTL8168等; - 串口:用于调试和输出信息,需要连接到PC机。 2. 软件准备 在移植lwip之前,需要准备好相关的软件环境。这里推荐使用Linux系统进行开发,具体软件环境如下: - Ubuntu14.04或以上版本的Linux系统; - ARM交叉编译工具链:用于编译和链接程序; - IMX6ULL BSP:包含IMX6ULL芯片的底层驱动程序和相关库; - lwip源代码:从官网下载最新版本的lwip源代码。 3. 移植lwip 移植lwip的过程主要包括以下几个步骤: (1)配置lwip 首先需要配置lwip,使其适配IMX6ULL开发板的硬件环境。这里我们可以使用lwip提供的Makefile来进行配置,具体步骤如下: - 在lwip源代码根目录下执行make menuconfig命令; - 进入配置界面,配置网络接口、协议栈、应用程序等选项; - 保存配置文件并退出。 (2)编写驱动程序 接下来需要编写驱动程序,将lwip的网络数据包与底层网卡进行交互。这里我们可以参考IMX6ULL BSP中的网卡驱动程序,将其修改为适配lwip的形式。 (3)编写应用程序 最后需要编写应用程序,通过lwip协议栈进行网络通信。这里我们可以参考lwip官方提供的示例程序,进行相应的修改和适配。 (4)编译和烧录程序 完成以上步骤后,即可使用ARM交叉编译工具链进行编译和链接,生成可执行文件。最后将可执行文件烧录到IMX6ULL开发板中,即可进行测试和调试。 4. 总结 通过以上步骤,我们就可以成功地在IMX6ULL裸机环境下移植lwip协议栈,并实现网络通信功能。在实际应用中,还可以结合其他外设和功能模块,实现更加丰富的应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值