APP下载
报价宝  ›  科技  › 

物联网高手必备---网络协议栈LwIP(三)

报价宝 来源:baojiabao.com 发布时间:2019-10-27 16:57:00 11月14日更新
报价宝综合消息物联网高手必备---网络协议栈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函式内要实现自己的网络卡传送功能。

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

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 报价宝 笔记本电脑价格 小米手机价格 华为手机价格 红米手机价格