




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司 LwIP LwIP相关知识介绍相关知识介绍浙江省浙江省国家大学科技园国家大学科技园B B座座2 2楼(九堡九环路楼(九堡九环路9 9号号)1部门:嵌入式软件 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司123LwIP源码组织架构与移植42LwIP介绍与源码获取常见的嵌入式TCP/IP协议栈背景介绍5简单RAW接口编程实例 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司3 随着社会的快速发展
2、,在数据采集领域,针对一些小型监测设备通过网络功能来实现远程数据传输显得异常重要。而现存的 IP 网诸如全球 Internet 网的趋势愈演愈烈,只要那些设备上实现了 TCP/IP 协议栈并增加一个网络接口,就可以方便的接入到现有的网络中,所以小型化嵌入式设备的网络接入技术是未来物联网实现的关键。背景介绍背景介绍TCP/IP协议栈网络接入网络接口 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司4背景介绍背景介绍TCP/IP 协议栈是一种四层的结构模型,如图所示: 对于一些低端的嵌入式产品,受到本身硬件资源的限制,几乎没办法支持完整的TCP/I
3、P协议栈,而且一些情况也不需要支持! 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司5常见的嵌入式TCP/IP协议栈uC/IP uC/IP是由Guy Lancaster编写的一套基于uC/OS且开放源码的TCP/IP协议栈,亦可移植到操作系统,是一套完全免费的、可供研究的TCP/IP协议栈,uC/IP大部分源码是从公开源码BSD发布站点和KA9Q(一个基于DOS单任务环境运行的TCP/IP协议栈)移植过来。uC/IP具有如下一些特点:带身份验证和报头压缩支持的PPP协议,优化的单一请求/回复交互过程,支持IP/TCP/UDP协议,可实现的网络
4、功能较为强大,并可裁减。uC/IP协议栈被为一个带最小化用户接口及可应用串行链路网络模块。根据采用CPU、编译器和系统所需实现协议的多少,协议栈需要的代码容量空间在30-60KB之间。 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司6uIP uIP 由瑞典计算机科学学院(网络嵌入式系统小组)的Adam Dunkels 开发。其源代码由C 语言编写,并完全公开。uIP 协议栈去掉了完整的 TCP/IP 中不常用的功能,简化了通讯流程,但保留了网络通信必须使用的协议,设计重点放在了 IP/TCP/ICMP/UDP/ARP 这些网络层和传输层协议上
5、,保证了其代码的通用性和结构的稳定性。1)代码非常少,其协议栈代码不到 6K,很方便阅读和移植。2)占用的内存数非常少,RAM 占用仅几百字节。3)对数据的处理采用轮循机制,不需要操作系统的支持。4)支持多个主动连接和被动连接并发。5)其硬件处理层、协议栈层和应用层共用一个全局缓存区,不存在数据的拷贝,且发送和接收都是依靠这个缓存区,极大的节省空间和时间。常见的嵌入式TCP/IP协议栈 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司7LwIP LwIP是瑞士计算机科学院(Swedish Institute of Computer Scienc
6、e)的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。LwIP的含义是Light Weight(轻型)IP协议。LwIP可以移植到操作系统上,也可以在无操作系统的情况下独立运行。LwIP TCP/IP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,一般它只需要几十K的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端嵌入式系统中使用。常见的嵌入式TCP/IP协议栈 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司8常见的嵌入式TCP/IP协议栈三种TCP/IP协议栈的比较 LwI
7、P和uC/IP是同量级别的两个开源协议栈,两者代码容量和实现功能相似,LwIP没有操作系统针对性。而uC/IP协议最初是针对uC/OS设计,依赖于操作系统。 从应用和开发的角度看,选择LWIP更有优势,网上可供参考的文档资料较多;而uC/IP在文档支持与软件升级管理上有很多不足,但是它最初是针对UC/OS而设计,如果选用UC/OS作为软件基础的话,在系统函数构造方面有优势。 uIP代码容量小巧,实现功能精简,但也限制了在一些稍高要求场合下的应用,如大容量数据传输。 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司LwIP介绍与源码获取LwIP介
8、绍9 lwIP is a small independent implementation of the TCP/IP protocol suite that has been developed by Adam Dunkels at the Computer and Networks Architectures (CNA) lab at the Swedish Institute of Computer Science (SICS). The focus of the lwIP TCP/IP implementation is to reduce the RAM usage while st
9、ill having a full scale TCP. This making lwIP suitable for use in embedded systems with tens of kilobytes of free RAM and room for around 40 kilobytes of code ROM. 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司LwIP介绍与源码获取10LwIP主要特性 LwIP的版本较多,新的版本通常是对LwIP的功能进行完善。 LwIP主要特性如下:ARP 协议,以太网地址解析协议;UDP 协议
10、,用户数据报协议;TCP 协议,支持 TCP 拥塞控制,RTT 估计,快速恢复与重传等;IP 协议,包括 IPv4 和 IPv6,支持 IP 分片与重装,支持多网络接口下数据转发; ICMP 协议,用于网络调试与维护;IGMP 协议,用于网络组管理,可以实现多播数据的接收;提供三种用户编程接口方式:raw/callback API、sequential API、BSD-style socket API; DNS,域名解析;DHCP,动态主机配置协议;SNMP,简单网络管理协议;AUTOIP,IP 地址自动配置;PPP,点对点协议,支持 PPPoE 。 云 端 物 联 比 你 想 象 的 更 多
11、杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司LwIP介绍与源码获取11源码获取访问:/releases/lwip/LwIP源码获取 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司12LwIP源码组织架构与移植LwIP源码文件组织LwIP文件目录的组织结构如下图所示:其中,doc文件夹中为LwIP介绍、移植与编程说明文档; test文件夹中为LwIP提供的一些测试程序; src文件夹中包含了LwIP的源码。 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有
12、限公司杭州义益钛迪信息技术有限公司13doc文件目录解析LwIP |doc |contrib.txt:开发者如何为LwIP做贡献; |rawapi.txt:RAW接口编程介绍; |savannah.txt:获取最新源码说明; |sys_arch.txt:系统抽象层说明文档(包含移植说明);LwIP源码组织架构与移植 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司14src文件目录解析LwIP |src |api:LwIP为用户提供的两种高级API接口; |core: LwIP内核源码,包含IP、ICMP、IGMP、TCP、UDP等核心协议以及
13、建立在它们基础上的DNS、DHCP、SNMP等上层应用协议; |include: LwIP使用到的相关头文件; |netif:主要包含了与底层网络接口相关的文件;LwIP源码组织架构与移植 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司15LwIP源码组织架构与移植LwIP裸机移植LwIP移植准备工作:1、Keil基础工程;2、LwIP源码的下载,文中的移植版本为v1.3.2;3、STM32F207以太网库的下载,在ST官网下载; LwIP裸机移植:1、STM32F207以太网库添加到基础工程;(由于官方以太网库中配有stm32f2x7_et
14、h_conf_template.h,且是针对DP83848编写的,直接用就可以了);2、LwIP源码添加到基础工程;3、DP83848网口芯片的驱动程序的编写(根据板子的实际情况);4、添加中间文件arch文件以连接LwIP和以太网驱动; 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司16修改文件说明LwIP源码组织架构与RAW接口编程LwIP提供的ethernetif.c文件给出了网络接口驱动的整体框架,用户需要自己完成的函数主要有3个,分别是:底层初始化函数low_level_init( )该函数用来对网络接口进行初始化,任何与初始化网络
15、接口有关的操作都可以在该函数内实,如MAC地址配置;底层输入函数low_level_input( )该函数为到达的数据包分配pbuf(通常是一个pbuf链),并将数据包从网络接口传入至pbuf链中;底层输出函数low_level_output( )该函数负责将数据包发送至指定的网络接口中。 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司17 在 LWIP 的源码中有个 opt.h 的文件,这个文件是裁剪和配置 LWIP 的,但最好不要直接在里面修改。这里参照网上资料,在lwipopts.h中对功能和性能进行裁剪和配置。LwIP源码组织架构与R
16、AW接口编程修改文件说明 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司18RAW接口编程 LwIP为用户提供三种编程接口方式:raw/callback API、sequential API、BSD-style socket API。 而后两种编程接口是需要操作系统支持的,根据我们的实际应用情况出发,采用 RAW API 编程。 使用 RAW API 进行 TCP/IP 编程,可以使应用程序的代码和 TCP/IP 协议栈的代码很好地结合起来。程序的执行机制是以回调函数为基础的事件驱动的,同时回调函数也是被TCP/IP 代码直接调用的。TCP/
17、IP 代码和应用程序的代码运行在同一个线程里面,在程序代码的执行时间上更快,而且在运行中它也占用更少的内存资源。简单RAW接口编程实例 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司19回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 程序的执行是靠回调函数来驱动的。每一个回调函数也只不过是一个能够直接被TCP/IP
18、代码调用的普通的 C 语言函数。每一个回调函数的调用都是传递一个当前连接 UDP或 TCP 的状态。另外,为了使应用程序有一个明确的执行状态,回调函数的指定是可编程的,并且是独立于 TCP/IP 状态之外的。简单RAW接口编程实例 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司20RAW接口编程UDP服务器简单RAW接口编程实例 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司21简单RAW接口编程实例 云 端 物 联 比 你 想 象 的 更 多杭州义益钛迪信息技术有限公司杭州义益钛迪信息技术有限公司22RAW接口编程UDP客户端简单RA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五年级上册数学教学设计-第三单元第1课时 因数与倍数 北师大版
- 一年级下册数学教案-综合实践 趣味拼摆| 青岛版(五四学制)
- 学习2025年雷锋精神六十二周年主题活动实施方案 (3份)-54
- 2025年河南测绘职业学院单招职业适应性测试题库带答案
- 2025年广西安全工程职业技术学院单招职业技能测试题库含答案
- 2025年广东金融学院单招职业适应性测试题库完整
- 2025年贵州航天职业技术学院单招职业技能测试题库一套
- 2025福建省安全员考试题库及答案
- 2025年度幼儿园教职工被辞退劳动权益保护合同
- 2025年度幼儿园实习教师培养与就业服务协议
- 二年级下册计算小能手带答案
- 2024年临沧市工业产业发展集团限公司招聘2名公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 2023年3月云南专升本大模考《旅游学概论》试题及答案
- 一年级趣味数学几和第几
- 2024年西安电力高等专科学校单招职业技能测试题库及答案解析
- 2024年中国科学技术大学创新班物理试题答案详解
- 方案优缺点对比表模板
- 中职数学基础模块上册学业水平考试第四章三角函数单元测试及参考答案
- 数据真实性承诺书
- 山东信息职业技术学院单招职业技能测试参考试题库(含答案)
- 充电站风险管理的法律法规研究
评论
0/150
提交评论