正点原子lwIP学习笔记——裸机移植lwIP_linux移植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地址然后静态连接。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xhj12138/article/details/132854396

智能推荐

详解冬奥冠军背后的AI黑科技-程序员宅基地

文章浏览阅读3.6k次。用人工智能普惠体育发展。

form表单提交的几种方式_提交表单-程序员宅基地

文章浏览阅读10w+次,点赞92次,收藏495次。表单提交方式一:直接利用form表单提交html页面代码:<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>Insert title here</title></head><body><form action="h..._提交表单

Unity Spine SkeletonGraphic 动画重复播放 过度残影透明渐变Bug 解决方案_unity skeletongraphic-程序员宅基地

文章浏览阅读5.1k次。Unity Spine SkeletonGraphic 重复播放 过度残影Bug 解决方案不推荐使用SetToSetupPose和Setup Pose相关,代码直接贴上/// <summary>/// Spine播放设置/// </summary>/// <param name="trackIndex">填写0</param>/// <param name="animationName">动画名</param>/// &l_unity skeletongraphic

高斯分布3——边缘概率与条件概率_高斯分布的条件概率-程序员宅基地

文章浏览阅读3.5k次。一、推导过程:二、结果:边缘分布x1,x2 各自依然服从 μi,写反差矩阵 Σii 的多元高斯分布;条件概率分布给定 xj 求 xi 的分布:μi|j=μi+ΣijΣ−1jj(xj−μj)Σi|j=Σjj−ΣTijΣ−1iiΣij..._高斯分布的条件概率

Ratelimitcache: Python缓存库,支持速率限制-程序员宅基地

文章浏览阅读339次,点赞8次,收藏8次。Ratelimitcache: Python缓存库,支持速率限制项目链接: https://gitcode.com/simonw/ratelimitcache?utm_source=artical_gitcode如果你正在寻找一个Python缓存库,并且希望对缓存操作进行速率限制,那么Ratelimitcache可能是你的理想选择。什么是Ratelimitcache?Ratelimitca..._python ratelimit基于什么

【爬虫】Xpath和CSS信息提取的方法异同点_xpath 获取css-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏8次。Xpath和CSS信息提取的方法异同点_xpath 获取css

随便推点

基于OFDM+64QAM系统的载波同步matlab仿真,输出误码率,星座图,鉴相器,锁相环频率响应以及NCO等-程序员宅基地

文章浏览阅读454次。正交频分复用(OFDM)是一种在现代通信系统中广泛使用的调制技术,它具有高效的频谱利用和抗多径衰落等特点。64QAM(64-ary Quadrature Amplitude Modulation)是一种调制方式,可以在每个符号中传输更多的位信息。在OFDM系统中,保持载波同步对确保数据传输的可靠性至关重要。_基于ofdm+64qam系统的载波同步matlab仿真,

Springboot毕设项目超市商品销售管理系统37x2w(java+VUE+Mybatis+Maven+Mysql)_vue+springboot+mybatis商品管理系统-程序员宅基地

文章浏览阅读67次。Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。若包含,则为maven项目,否则为非maven项目。Springboot毕设项目超市商品销售管理系统37x2w(java+VUE+Mybatis+Maven+Mysql)Springboot + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。其他版本理论上也可以。_vue+springboot+mybatis商品管理系统

关掉\禁用win7自动配置ipv4地址的方法 默认网关自动消失的解决办法_禁止修改网关命令-程序员宅基地

文章浏览阅读3w次,点赞2次,收藏4次。转载自: http://blog.csdn.net/zouqin369/article/details/6913692 今天去公司设置好IP后,无论怎么样都上不了internet,再次打开本地后发现默认网关自动消失,cmd下输入ipconfig后的现象如下: 物理地址. . . . . . . . . . . . . : 00-22-64-55-76-8F DHCP 已启用_禁止修改网关命令

Extjs4.2 window加载HTML,父子页面html传参_extjs中打开网页怎么传参-程序员宅基地

文章浏览阅读482次。Extjs的窗口是可以加载自己的HTML的,但这样两个页面就相当独立了,传参是个问题 ,网上也没有很好的解答清楚,猫猫今天就说清楚这个模式的传参要点。_extjs中打开网页怎么传参

计算机网络复习——Ch3点到点数据链路层_hdlc go-back-n-程序员宅基地

文章浏览阅读1.2k次。Ch3点到点数据链路层知识点1. 点到点数据链路层要解决的主要问题2. 常见的帧管理(帧定界)方法3. CRC的计算4. 流量控制的基本原理5. 常见错误及其处理机制6. 滑动窗口的概念、形式及工作原理7. ARQ(Automatic Repeat reQuest)协议工作原理:8. 连续ARQ(Go-back-N ARQ)工作原理(特别注意累计确认):9. 选择重传ARQ工作原理10. 了解(高..._hdlc go-back-n

推荐文章

热门文章

相关标签