首页 » 智能 » 物联网高手必备---收集协议栈LwIP(三)_网卡_函数

物联网高手必备---收集协议栈LwIP(三)_网卡_函数

萌界大人物 2024-12-07 08:52:19 0

扫一扫用手机浏览

文章目录 [+]

上节我们对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地址,物理网卡的初始化函数。
调用流程如下

网卡初始化流程

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

物理网卡芯片初始化

物理芯片设置好了后就可以吸收和发送数据了,但吸收和发送数据函数须要由LwIp的函数来进行封装,否则无法被LwIp处理。

数据吸收流程

无操作系统和有操作系统的数据吸收办法有所不同,无操作系统的吸收入口函数是ethernetif_input,把网卡吸收到数据送到LwIp协议栈

数据吸收流程

数据发送流程

注册发送函数

发送流程

在low_level_output函数内要实现自己的网卡发送功能。

郑重声明:本文作品为原创,如转载须注明出处“头条号:物联网电子天下”。

标签:

相关文章