LwIP网络应用开发平台系统设计

2016-05-14 01:12张青青
数字技术与应用 2016年8期
关键词:嵌入式系统

张青青

摘要:LwIP 是一个占用内存比较小的开源 TCP/IP 的协议栈,在嵌入式的平台上如果需要网络通信则会广泛的应用这个协议栈。但是由于在网络中协议栈和通信比较复杂,想要直接调试程序在嵌入式平台上,会非常的麻烦,浪费精力。根据这个思路,依据VisualC++开发环境,我们研究开发了一套该协议栈的开发平台是直接运行在pc的系统上的。

关键词:嵌入式系统 LwIP协议栈 网络驱动

中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2016)08-0191-01

设计了一套基于Windows操作系统的LwIP网络应用开发平台系统。用户可以更方便的开发和调试基于LwIP协议栈的网络程序。

1 系统整体设计

系统包含的四个模块如下:(1)网络应用模块:提供可视化的参数配置和数据统计。(2)LwIP协议栈模块:实现网络通信的核心模块。(3)网络驱动模块:与操作系统驱动适配,实现硬件级别的数据收发控制在图1中所示,居于中间的模块为LwIP 协议栈,是这个软件的核心部位,它通过与windows的系统接口连接,实现该软件在windows系统上的运行;在核心模块之上,是实现了基本的数据发送和接收的网络应用模块;置于最底层的模块是负责让协议栈与windows网络驱动互相适配的数据驱动模块,主要功能是通过windows设备驱动将该LwIP协议栈构造的报文发送到网络,并将WINDOWS设备驱动收到的报文递交给LwIP协议栈处理。

2 网络应用子模块

网络应用模块的设计目标是,基于LwIP协议栈提供的三种调用模式,提供了可视化的网络应用配置和操作界面。通过应用子模块,用户可以直观的配置并查看网络程序的运行状况;通过查看源代码,用户也可以获得直接的可参考的LwIP网络程序代码示例。

主界面使用 MFC 开发,包含参数配置区和数据统计区。参数配置区提供了实现网络通信需要的参数选项;数据统计区则提供数据传输统计,方便进行传输性能测试与对比。

3 LwIP协议栈子模块

这个系统软件是搭建在windows平台上的,这个软件的核心部分就是LwIP协议栈。所以最重要的自然就是如何将该协议栈移植于windows操作系统中。因为嵌入式系统操作系统和windows操作系统是由很大的不同的,所以在移植中,如果想要确保移植后的lwip顺利运行并且执行命令,必须注意以下关键点:(1)内存:因为我们最终目的是将在windows平台上调试好的lwip网络应用移植到嵌入式系统中去运动,但是由于windows操作系统和嵌入式系统的内存配置是不同的,所以如果不考虑内存限制,则会在后面的嵌入式调试中出现各种问题,所以在windows平台下的需要为内存调试预留一定条件,必须对lwip内存的相关接口和参数配置进行强调和注意。(2)线程:进程和线程在windows系统中存在,所以我们要考虑该协议栈在这种多线程运行下的共享变量问题,需要将windows的线程lwip的工作线程来适配的。对于如何记录和管理线程的参数需要专门来定义线程结构。(3)通知与保护:因为该协议栈支持多线程,所以我们必然要考虑线程之间的通信和全局变量的访问保护。而lwip提供了信号量,邮箱和临界区这三种不同的通知和保护机制。

4 网络驱动子模块

4.1 通信模块技术方案

主要内容:这个网络应用的开发最关键的部分就是如何让lwip协议栈网络通信,即解决如何接受和发送报文的这个问题。

该开发平台在网络应用子模块和lwip协议栈子模块完成之后,就表示我们已经实现了该协议和上层应用构造ip或以太网报文的功能。这个平台的核心是网络程序的测试,所以系统联网是必不可少的。主要就是让该协议栈构造的报文调动windows的网卡驱动往网络中传送数据,反之,windows的网卡驱动也能将收到的数据交付给lwip协议栈来处理分析。

winpcap是一个免费的代码可以随时查看的第三方网络操作库,用它来实现在windows网络设备上的操作是很方便的,因为winpcap基于windows平台专门有一组接口用于使用,只要能熟练应用这些接口,就可以轻松的实现对网络数据包的捕获和分析。

WinPcap的层次结构是怎么样的呢?它主要由三部分构成:内核级数据包过滤器,底层的设备动态链接库(packet.dll),对WINDOWS系统的封装库(wpcap.dll)。因为winpcap也有两种难度不同的接口可以编程。一个是功能特别抽象但是庞大的基于libpcap的wpcap.dll,另一个则是功能简单的较底层的packet.dll。

4.2 通信模块设计

首先下载winpcap并且在windows平台上安装winpcap驱动软件,然后直接让winpcap操作网络适配器,完成收发数据包的作用。

由于本文的目的主要是实现以太网数据的收发。因为该平台对于winpcap提供的别的网络功能没用什么特别的要求,基于开发程序的省时省力性考虑,决定使用好用的libpcap接口。

5 结语

全面的对于网络开发平台的设计框架进行了介绍。把各个部分及其主要实现的功能逐个介绍,着重的描述了上层应用开发的特点,及其轻量级协议栈的移植要点。对于winpcap的使用让lwip协议栈和windows驱动之间的数据收发也做了详细说明。使得最后搭建了一个完整的调试环境。

猜你喜欢
嵌入式系统
Teaching Research on IoT and—Embedded System of Software Engineering
面向应用的智能专业嵌入式系统教学
办公自动化系统的设计
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究