关闭

关闭

关闭

封号提示

内容

首页 LwIP协议栈开发嵌入式网络的三种方法分析

LwIP协议栈开发嵌入式网络的三种方法分析.doc

LwIP协议栈开发嵌入式网络的三种方法分析

棒棒不是糖吧
2018-12-03 0人钱柜777手机版登陆 0 0 0 暂无简介 举报

简介:本文档为《LwIP协议栈开发嵌入式网络的三种方法分析doc》,可适用于IT/计算机领域

LwIP协议栈开发嵌入式网络的三种方法分析摘要 轻量级的TCPIP协议栈LwIP提供了三种应用程序设计方法且很容易被移植到多任务的操作系统中。本文结合μCOSII这一实时操作系统以建立TCP服务器端通信为例分析三种方法以及之间的关系着重介绍基于rawAPI的应用程序设计。最后在ST公司STMF微处理器平台上验证并给出了测试结果。关键词 LwIP协议栈μCOSII嵌入式网络STMF随着嵌入式系统功能的多样化以及网络在各个领域的中的广泛应用具备网络功能的嵌入式设备拥有更高的使用价值和更强的通用性。然而大部分嵌入式设备使用经济型处理器受内存和速度限制资源有限不需要也不可能完整实现所有的TCPIP协议有时只需要满足实际需求就行。LwIP是由瑞典计算机科学研究院开发的轻量型TCPIP协议栈其特点是保持了以太网的基本功能通过优化减少了对存储资源的占用。LwIP是免费、开源的任何人可以使用能够在裸机的环境下运行当然设计的时候也考虑了将来的移植问题可以很容易移植到多任务操作系统中。本文介绍了以ARM微处理器STMF和PHY接口DP为平台构建的嵌入式系统中采用LwIP和嵌入式操作系统μCOSII使用协议栈提供的三种应用程序接口实现嵌入式设备的网络通信功能。LwIP和μCOSII介绍LwIP协议栈LwIP协议是瑞士计算机科学院的AdamDunkels等开发的一套用于嵌入式系统的开放源代码TCPIP协议栈。LwIP含义是lightweight(轻型)IP协议在实现时保持了TCP协议的主要功能基础上减少对RAM的占用一般它只需要几十K的RAM和K左右的ROM就可以运行这使LwIP协议栈很适合在低端嵌入式系统中使用。LwIP协议栈的设计才用分层结构的思想每一个协议都作为一个模块来实现提供一些与其它协议的接口函数。所有的TCPIP协议栈都在一个进程当中这样TCPIP协议栈就和操作系统内核分开了。而应用程序既可以是单独的进程也可以驻留在TCPIP进程中它们之间利用ICP机制进行通讯。如果应用程序是单独的线程可以通过操作系统的邮箱、消息队列等与协议栈进程通讯。如果应用程序驻留在协议栈进程中则应用程序可以通过内部回调函数和协议栈进程通讯。μCOSII实时操作系统μCOSII是一个源码公开、可移植、可固化、可裁剪及占先式的实时多任务操作系统是专门为嵌入式应用设计的实时操作系统内核已广泛的应用在各种嵌入式系统中。μCOSII是多任务系统内核负责管理各个任务每个任务都有其优先级μCOSII最多可以管理个任务其每个任务都拥有自己独立的堆栈。μCOSII提供了非常丰富的系统服务功能比如信号量、消息邮箱、消息队列、事件标志、内存管理和时间管理等这些功能可以帮助用户实现非常复杂的应用。LwIP协议栈移植到μCOSIILwIP协议栈在设计的时候就考虑到了将来的移植问题因此把所有与硬件、操作系统、编译器有关的部分都全部独立起来形成了一个操作系统模拟层。操作系统模拟层用进程间的信号量、邮箱机制处理通信问题而μCOSII是一个基于任务调度的嵌入式实时操作系统因此移植LwIP协议栈到μCOSII是很容易实现的。LwIP开发嵌入式网络应用程序LwIP提供了三种应用程序接口:()低水平的基于内核回调函数的API(后面称RAWAPI)()高水平的连续的API(后面称LwIPAPI)()BSD风格的套接字API(后面称BSDsocket)可以在协议栈中通过对宏定义的不同配置来决定使用哪种方式。其中BSDsocket方式不是很成熟RAWAPI需要编写回调函数协议栈推荐使用LwIPAPI这种方式但是三种方式到了底层都是通过回调函数实现的。本文直接从RAWAPI入手以建立TCP服务器端通信为例详述底层的调用然后再讲述后面的两种是如何封装而成的。基于RAWAPI的应用程序设计步骤使用RAWAPI进行TCPIP编程可以使应用程序的代码和协议栈的代码很好地结合起来。程序的执行机制是以回调函数为基础的事件驱动的同时回调函数也是被TCPIP代码直接调用的回调函数、数据发送函数都需要自己编写。这种方式是唯一的一种支持设备裸机运行又可以完成网络通信完成系统功能。裸机运行实际相当于是一个线程而协议栈代码和应用程序代码通过先后次序处理完成数据流转。图是使用RAWAPI方式多任务系统实现TCP服务器端通信的步骤。图RAWAPI方式应用程序设计LwIP协议栈中的tcp块结构有两种TCPPCB和TCPPCBLISTEN前者在内存池中的默认个数是后者是其中listen型的结构占用少量的内存专门用于处理在侦听状态的tcp块结构。tcplisten函数中释放tcpnew创建的块结构而是返回一个listen型的tcp块结构。客户端连接到达TCP层在tcplisteninput函数中重新创建一个TCPPCB块结构专门用于和客户端通信。侦听到客户端连接完成三次握手后回调自己编写的接收函数然后将全局的指针指向与客户端通信的块结构在数据发送时使用这个指针就是在用这个块结构与客户端通信。由上面看出这种方式最大的特点是减少了任务之间的切换只要数据来到协议栈线程通过回调的方式就可以完成数据的处理。基于LwIPAPI的应用程序设计LwIPAPI方式的编程是基于上面的RAWAPI的封装了一个netconn的结构所有操作不在针对TCP块结构而变成了netconn型的结构变量。操作都需要协议栈去处理应用程序与协议栈通信通过发送消息方式进行因此这种方式会造成频繁的任务切换速度相比RAWAPI慢了许多使用步骤如图所示。图LwIPAPI方式应用程序设计基于BSDsocket的应用程序设计BSDsocket相当于对LwIPAPI做了一层封装而netconn结构有一个变量是socket这样两者很容易结合起来。Socket方式很容易被理解编写应用程序也较为容易但是效率低消耗的资源更多使用步骤如图所示。图BSDsocket方式应用程序设计实际应用与验证本次验证中使用的开发板微处理器采用ST公司推出的STMF以太网PHY芯片采用DPSTMF是一款基于ARMCortexM内核的位处理器是面向网络互连型应用的最大工作频率为MHz内置了MAC控制器可以方便地与以太网PHY芯片连接构成以太网接口。以太网PHY芯片DP采用RMII模式与STMF连接。RMII模式可以减少接口之间的引脚连接降低了绘制电路板的复杂性同时空闲的引脚可用作其它用途以太网接口如图所示。图STMFMAC与DP连接图在开发板上移植好LwIP协议栈和μCOSII操作系统应用程序中创建一个Web服务器绑定本地IP地址、端口。在自己编写的数据接收函数中利用两个字符型数据分别保存HTTP响应消息的相关信息和要在客户端网页中显示的信息。侦听到客户端连接后判断接收到数据的前个字节解析HTTP报头如果请求方不是GET请求就中断连接否则将那两个字符型数据的内容一次传送给客户端。在客户端PC机浏览器的地址栏中输入后PC的显示结果如图所示。图开发板web服务器验证图

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续钱柜777手机版登陆或者下载,敬请购买!

评分:

/7

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部

举报
资料

博聚网