tcp-ip协议栈lwip在stm上的移植和应用详解.docVIP

  • 73
  • 0
  • 约1.33万字
  • 约 25页
  • 2018-06-05 发布于江西
  • 举报

tcp-ip协议栈lwip在stm上的移植和应用详解.doc

tcp-ip协议栈lwip在stm上的移植和应用详解.doc

tcp/ip协议栈lwip在stm32上的移植和应用详解 篇一:LwIP协议栈开发嵌入式网络的三种方法分析 LwIP协议栈开发嵌入式网络的三种方法分析 摘要 轻量级的TCP/IP协议栈LwIP,提供了三种应用程序设计方法,且很容易被移植到多任务的操作系统中。本文结合μC/OS-II这一实时操作系统,以建立TCP服务器端通信为例,分析三种方法以及之间的关系,着重介绍基于raw API的应用程序设计。最后在ST公司STM32F107微处理器平台上验证,并给出了测试结果。 关键词 LwIP协议栈;μC/OS-II;嵌入式网络;STM32F107; 随着嵌入式系统功能的多样化以及网络在各个领域的中的广泛应用,具备网络功能的嵌入式设备拥有更高的使用价值和更强的通用性。然而大部分嵌入式设备使用经济型处理器,受内存和速度限制,资源有限,不需要也不可能完整实现所有的TCP/IP协议,有时只需要满足实际需求就行。LwIP是由瑞典计算机科学研究院开发的轻量型TCP/IP协议栈,其特点是保持了以太网的基本功能,通过优化减少了对存储资源的占用。LwIP是免费、开源的,任何人可以使用,能够在裸机的环境下运行,当然设计的时候也考虑了将来的移植问题,可以很容易移植到多任务操作系统中。本文介绍了以ARM微处理器STM32F107和PHY接口DP83848为平台,构建的嵌入式系统中,采用LwIP和嵌入式操作系统μC/OS-II,使用协议栈提供的三种应用程序接口,实现嵌入式设备的网络通信功能。 1 LwIP和μC/OS-II介绍 1.1 LwIP协议栈 LwIP协议是瑞士计算机科学院的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。LwIP含义是light weight(轻型)IP协议,在实现时保持了TCP协议的主要功能基础上减少对RAM的占用,一般它只需要几十K的RAM和40K左右的ROM就可以运行,这使LwIP协议栈很适合在低端嵌入式系统中使用。 LwIP协议栈的设计才用分层结构的思想,每一个协议都作为一个模块来实现,提供一些与其它协议的接口函数。所有的TCP/IP协议栈都在一个进程当中,这样TCP/IP协议栈就和操作系统内核分开了。而应用程序既可以是单独的进程也可以驻留在TCP/IP进程中,它们之间利用ICP机制进行通讯。如果应用程序是单独的线程可以通过操作系统的邮箱、消息队列等,与协议栈进程通讯。如果应用程序驻留在协议栈进程中,则应用程序可以通过内部回调函数和协议栈进程通讯。 1.2 μC/OS-II实时操作系统 μC/OS-II是一个源码公开、可移植、可固化、可裁剪及占先式的实时多任务操作系统,是专门为嵌入式应用设计的实时操作系统内核,已广泛的应用在各种嵌入式系统中。 μC/OS-II是多任务系统,内核负责管理各个任务,每个任务都有其优先级,μC/OS-II最多可以管理64个任务,其每个任务都拥有自己独立的堆栈。μC/OS-II提供了非常丰富的系统服务功能,比如信号量、消息邮箱、消息队列、事件标志、内存管理和时间管理等,这些功能可以帮助用户实现非常复杂的应用。 1.3 LwIP协议栈移植到μC/OS-II LwIP协议栈在设计的时候就考虑到了将来的移植问题,因此把所有与硬件、操作系统、编译器有关的部分都全部独立起来,形成了一个操作系统模拟层。操作系统模拟层用进程间的信号量、邮箱机制处理通信问题,而μC/OS-II是一个基于任务调度的嵌入式实时操作系 统,因此移植LwIP协议栈到μC/OS-II,是很容易实现的。 2 LwIP开发嵌入式网络应用程序 LwIP提供了三种应用程序接口: (1) 低水平的,基于内核/回调函数的API(后面称 RAW API) (2) 高水平的,连续的API(后面称LwIP API) (3) BSD风格的套接字API(后面称BSD socket) 可以在协议栈中通过对宏定义的不同配置,来决定使用哪种方式。其中BSD socket方式不是很成熟,RAW API需要编写回调函数,协议栈推荐使用LwIP API这种方式,但是三种方式到了底层都是通过回调函数实现的。本文直接从RAW API入手,以建立TCP服务器端通信为例,详述底层的调用,然后再讲述后面的两种是如何封装而成的。 2.1基于RAW API的应用程序设计步骤 使用RAW API进行TCP/IP编程,可以使应用程序的代码和协议栈的代码很好地结合起来。程序的执行机制是以回调函数为基础的事件驱动的,同时回调函数也是被TCP/IP代码直接调用的,回调函数、数据发送函数都需要自己编写。这种方式是唯一的一种支持设备裸机运行,又可以完成网络通信完成系统功能。裸机运行实际相当于是一个线程,而协议栈代码和应用程

文档评论(0)

1亿VIP精品文档

相关文档