加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

物联网高手必备:网络协议栈LwIP(一)

发布时间:2019-06-26 16:35:16 所属栏目:教程 来源:物联网电子世界
导读:上节我们对LwIp的目次布局已经有了相识,我们这篇文件迁就LwIp协议栈做更深一步的研究。 重要源文件表明 LwIp的源码源文件多达几百个,我们去读源码的时辰不能一下子所有读完,我们在读源码时辰必要有所重点的去读,才气快速的掌握LwIp的精华。 API目次是

上节我们对LwIp的目次布局已经有了相识,我们这篇文件迁就LwIp协议栈做更深一步的研究。

物联网好手必备:收集协议栈LwIP(一)

重要源文件表明

LwIp的源码源文件多达几百个,我们去读源码的时辰不能一下子所有读完,我们在读源码时辰必要有所重点的去读,才气快速的掌握LwIp的精华。

API目次是提供了Socket接口和Sequential API的接口,Socket.c实现了BSD socket的接口封装,tcpip.c文件并没有实现tcpip协议,现实上是Sequential API 主线程模块的的实现。api_lib.c是Sequential API的接口的实现。

core目次则是协议栈的焦点,个中tcp.c ip.c,udp.c 则是整个tcp/ip协议栈的焦点实现,ip层还分为ipv4和ipv6两个目次,内里有ipv4 ipv6层的的详细实现。mem.c 和memp.c是内存打点的焦点实现。

netif目次是接口部门,最新的2.0版本和原本的1.4版本对以太网部门做了较大窜改,ethernetif.c是以太网驱动文件,必要按照详细硬件来举办移植。ethernetif.c文件在1.4版本的是在本目次下,2.0版本则放到用户的目次下。本目次尚有其他的接口文件如ppp协议的等。ethernet.c是对以太网报文的抽象进出口函数接口。

无操纵体系移植和初始化

把LwIp移植到详细的网卡上和操纵体系上必要必然的事变量,移植LwIp分操纵体系移植和非操纵体系移植,操纵体系移植较为繁琐,我们先接头非操纵体系移植。

非操纵体系移植首要是必要移植ethernetif.c文件。网卡的初始化要放在low_level_init函数内执行。low_level_init函数是设置MAC地点,物理网卡的初始化函数。挪用流程如下

物联网好手必备---收集协议栈LwIP(三)

网卡初始化流程

low_level_init配置好物理网卡芯片的参数(mac地点,phy型号,mac接口范例,吸取模式,自协商等等),把这些参数写入到网卡芯片的寄存器中。

物联网好手必备---收集协议栈LwIP(三)

物理网卡芯片初始化

物理芯片配置好了后就可以吸取和发送数据了,但吸取和发送数据函数必要由LwIp的函数来举办封装,不然无法被LwIp处理赏罚。

数据吸取流程

无操纵体系和有操纵体系的数据吸取方法有所差异,无操纵体系的吸取进口函数是ethernetif_input,把网卡吸取到数据送到LwIp协议栈

物联网好手必备---收集协议栈LwIP(三)

数据吸取流程

数据发送流程

物联网好手必备---收集协议栈LwIP(三)

注册发送函数

物联网好手必备---收集协议栈LwIP(三)

发送流程

在low_level_output函数内要实现本身的网卡发送成果。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读