Lwip与底层的接口
Lwip有三套api,分别是:
raw api:使用方法为使用回调函数,即先注册一个函数,当接受到数据之后调用这个函数。缺点是对于数据连续处理不好。
Lwip api:把接收与处理放在一个线程里面。因为需要线程的概念,故需要操作系统,当然,ucos虽然只有进程的概念,但是也可以用。
BSD api:与unix兼容,移植容易,效率低。
附完整叙述大图
咳,好了说正题,就是lwip与硬件的接口,lwip与硬件的接口为一个netif结构体数据类型,每一个这样的结构体代表一个网卡。下面就是这个结构体的详细结构:
其中next是指向下个网卡的数据结构,如果是单网卡,那next就为空。
Input是一个函数指针,指向我们写的函数,这个函数的作用是接受底层硬件输入的数据包
注:野火的接受数据方法为不断执行ethernetif_input函数,此函数实现如下:
其中low_level_input为从底层接受数据并将其转化为pbuf,netif->input做的工作则是将其传给上层的协议进行处理。
Output也是一个指针函数,指向用于向ip层输出的函数
Linkoutput函数指向最底层网卡发送数据包的函数
此外,其他属性为ip地址,子网掩码,网关,MAC地址,最大传输单元,网卡允许使用的功能,网络接口的名字和编号等。
Lwip与底层的接口的更多相关文章
- LWIP的底层结构(物理层)
LWIP的底层结构(物理层) 转自:http://bluefish.blog.51cto.com/214870/158418 我们前面讲到说是ip层的发送和接收都是直接调用了底层,也就是设备驱动层的函 ...
- 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-13 emWin底层驱动接口介绍
视频简介:该视频介绍emWin底层驱动接口. 源视频包下载地址:链接:http://pan.baidu.com/s/1nvPpC2d 密码:cbb7 银杏科技优酷视频发布区:http://i.youk ...
- 从底层获取接口url携带的数据
从底层获取接口url携带的数据 //实例化HttpServletRequest HttpServletRequest request = ServletHolderFilter.getContext( ...
- SIM800/SIM900/SIM7000/SIM7600底层操作接口_句柄方式完全分离通信底层
使用SIMCOM公司通信模块将底层的通信与应用完全进行了分离,便于移植. SIMCOM.h //定义了相关的结构体与类型. SIMCOM_AT.c//定义了底层的AT接口 SIMCOM_GSM.c// ...
- 【lwip】06-网络接口层分析
目录 前言 6.1 概念引入 6.2 网络接口层数据概念流图 6.3 网卡收包程序流图 6.4 网卡数据结构 6.4.1 struct netif源码 6.4.2 字段分析 6.4.2.1 网卡链表 ...
- 底层restful接口修改分析
记录接口调用次数,接口调用时间需求. 需要修改公共的类,就是restful接口,可以认为是底层的代码,具体的实现有哪些?插入数据库肯定不能影响性能.
- LWIP network interface 即 LWIP 的 硬件 数据 接口 移植 详解 STM32 以太网数据 到达 的第二站: void ethernetif_input( void * pvParameters )
根据 上一篇 文章 , ETH DMA 数据中断 会 发送 一个信号量 ,我使用 全局 搜索 这个信号量 s_xSemaphore 得到 一下 几个 值 根据 这个 分析 我们找到了 数据 的 ...
- LWIP network interface 即 LWIP 的 硬件 数据 接口 移植 首先 详解 STM32 以太网数据 到达 的第一站: ETH DMA 中断函数
要 运行 LWIP 不光 要实现 OS 的 一些 接口 ,还要 有 硬件 数据 接口 移植 ,即 网线上 来的 数据 怎么个形式 传递给 LWIP ,去解析 做出相应的 应答 ,2017 ...
- hibernate核心接口,和扩展接口。回顾笔记,以前没记,现在补上,纯手工敲的。
hibernate核心接口: 所有的hibernate应用都会访问hibernate的5个核心接口 1,Configuration接口 Configuration用于配置并且根启动Hibernate. ...
随机推荐
- python3-sql解析库——sqlparse
1.官方文档 https://sqlparse.readthedocs.io/en/latest/ 2.快速开始 使用pip或者conda安装: conda install sqlparse 使用官网 ...
- 零基础学Python-第二章 :Python基础语法-04.Python程序的书写规则
#号后面的都是注释 import是导入一个模块 结束
- 函数和宏实现打印的增强myprintf
函数和宏实现打印的增强
- 【问题解决】Flasgger mapping values are not allowed here?
参考来源:https://stackoverflow.com/questions/9055371/python-and-pyaml-yaml-scanner-scannererror-mapping- ...
- delphi中我用定时器每隔一段时间执行操作
delphi中,我用定时器每隔一段时间执行数据库插入及更新工作!adoquery.close;adoquery.sql.cleare;adoquery.connection:=con1;adoquer ...
- 【物联网】esp8266+LCD
https://blog.csdn.net/qq_40531588/article/details/89515149
- redis添加到linux系统服务
http://blog.csdn.net/justfor3l/article/details/53187795
- LODOP打印table表格宽度固定-超宽隐藏
之前有博文介绍关于超出div隐藏内容的:LODOP打印超过后隐藏内容样式里面提到了overflow:hidden;控制超出后隐藏,但是前面那篇用的是div,如果是在table中,由于table默认的t ...
- Socket测试工具(客户端、服务端)
Socket是什么? SOCKET用于在两个基于TCP/IP协议的应用程序之间相互通信.最早出现在UNIX系统中,是UNIX系统主要的信息传递方式.在WINDOWS系统中,SOCKET称为WINSOC ...
- docker里安装kali linux
docker里安装kali linux 官网镜像 docker search kali docker pull kalilinux/kali-linux-docker vi /etc/apt/sour ...