APP下载

基于S3C6410的模块化传感网网关设计

2014-07-02刘宁枞

电视技术 2014年13期
关键词:服务器端网关以太网

刘宁枞,张 荣,陆 锋

(1.江南大学物联网工程学院,江苏无锡214122;2.中国电子科技集团公司58所,江苏无锡214035)

基于S3C6410的模块化传感网网关设计

刘宁枞1,2,张 荣2,陆 锋1,2

(1.江南大学物联网工程学院,江苏无锡214122;2.中国电子科技集团公司58所,江苏无锡214035)

设计一种基于ARM11的无线传感器网络嵌入式网关。该网关在软、硬件系统的设计过程中采用了模块化、层次化的设计,同时还支持以太网、CDMA、WiFi、USB等多种接口及网络的接入机制,各通信机制均采用socket机制并利用多线程技术控制,提高了Internet与ZigBee网络之间数据的透明转换的稳定性和效率。

ZigBee;网关;模块化设计;通信机制;socket;多线程

当前基于ZigBee的无线传感器网络(WSN)是新一代的传感器网络。在目标区域内大量微型传感器节点通过无线通信方式形成一个多跳、自组织的网络系统,其低功耗、可组网的特点已被广泛应用于大量的数据采集系统。而无线传感器网络要实现与外部网络异构网络间的远程数据通信,则需要物联网网关来实现。针对传统网关单一的通信方式以及通信机制效率低的问题,本文设计一种不仅能够支持多传感器接入方式、多接口及网络接入机制,并具有可扩展性、可配置性、支持多线程及低功耗等特点的网关,具有良好的实时性、通用性,也可以避免不同应用系统的重复开发成本,具有良好的应用前景。

1 网关总体架构

通过文献[1]提到,传感器网络中ZigBee采集网络负责采集传感器数据和传输数据,ZigBee网络中节点分为终端节点、路由器节点和协调器节点,散布在工作区域内各个角落,通过自组织的方式构成庞大的无线网络以获取感知区域内的数据。其中终端节点和路由节点负责采集传感器值,而且路由节点同时负责多跳路由,允许其他设备加入网络和协助终端节点通信。而协调器节点每个网络只有一个,它负责组织和管理整个网络本文所设计网关将协调器节点同网关主板通过SPI接口集成,以便于管理和控制传感网络。协调器节点将采集的数据与信息进行简单处理后发送至网关,然后对数据信息进行转换处理后通过以太网或者无线通信网络传送至远程终端。网关总体架构见图1。

图1 网关系统结构

本文所设计的嵌入式网关在硬件上是协调器模块、网关主板模块、有线/无线网络接入模块这3个部分来实现模块化的设计方案的[2]。网关软件采用内嵌Linux-2.6.28内核,该操作系统是一个开源、可移植性高、支持网络的多线程任务的系统,包括TCP/IP堆栈、程序集以及无线通信堆栈等。整个Linux系统还包括引导加载程序(Bootloader)、文件系统、驱动应用软件等。本文在系统中内嵌了Web server,充分利用了Linux支持多线程[3]的特性,大大提高了系统资源利用率。

2 网关硬件平台设计

硬件平台设计时遵循的两大原则:

1)将公用模块独立出来,以便将来根据应用需求不断地升级和改造;

2)设计尽量简单,选用集成度高的芯片。

本文采用上述原则设计网关,将网关主板分成了微处理器模块和人机交互接口模块,与ZigBee协调器模块、有线/无线通信模块分开独立设计。4个模块可以分别独立设计并且升级改造。

网关的硬件平台模块化结构如图2所示。

图2 基于S3C6410的网关硬件平台模块化结构

2.1 ZigBee协调器模块

ZigBee协调器模块硬件包括MCU电路、时钟、RF匹配电路、天线、相应的对外接口等。在本模块的设计中,为了尽可能地减少电路板上的元件数目,以此来提高电路的可靠性和降低电路的功耗,选用了 FreeScale公司MC13224V[4]作为核心芯片,该芯片集成了ARM7内核、2.4 GHz射频发生器、IEEE802.5.4 MAC硬件加速器和AES硬件加速器,内置Flash、SRAM和ROM、AD转换模块等。该模块使用3个时钟晶振:频率为24 MHz的主晶振,振荡频率32.768 MHz的辅助晶振,振荡频率为2 MHz的内置振荡器。在正常工作模式下,用主晶振时钟;当处理器进入睡眠状态时采用辅助晶振或内置振荡器,以达到降低功耗,模块功耗最低可达0.015 mA。模块对外有UART、SPI、SSI、USB、JTAG仿真接口、2个12 bit ADC(共8路外部输入)等,可以接多种传感器,通过SPI同微处理器以4线方式相连。

2.2 微处理器模块

微处理器模块采用的是三星公司的S3C6410 RISC嵌入式处理器,该处理器采用ARM1176JZF-S[5]作为CPU,它有着集成度高和功耗低的特点。在1.2 V工作电压下,最高的工作频率可达到667 MHz。处理器可以外接Flash和DDR两种存储器,外部存储器选用 NAND Flash K9GAG08U0E-SCB0芯片、MLC存储格式,容量为2 Gbyte,Flash掉电不丢失信息,主要是用来存放软件的目标代码,比如:Bootloder引导程序、操作系统内核、各种驱动程序以及应用程序等。内部存储器上选用K4X1G163PC系列中64×16 bit DDR,且使用2块芯片构成256 Mbyte内存空间,用于存储处理器高速运行时产生的数据。

2.3 人机交互接口模块

主板上这一部分主要完成状态指示、供电、显示、USB通信、I/O扩展等辅助功能。常用外设接口包括多个UART、多个USB、SD卡、LCD屏、按键等,而且为了方便扩展外设,芯片内置了USB OTG,同时S3C6410处理器支持从SD卡启动,只需将Bootloder程序烧写到SD卡高位地址起始处。

2.4 无线/有线网络接入模块

本文所设计网关支持多种接入机制,具有较强的兼容性。主要支持以太网、CDMA、WiFi等机制,既可实现广域通信,也可完成局域互联。以太网接入机制采用DM9000A[5]网卡芯片,它可以自适应10/100 Mbit/s网络,功耗低,可提供8位和16位的内存访问数据。CDMA选用了HUAWEIE1750,带USB接口,通过USB接口与主机通信。WiFi选用体积较小的SD-WiFi模块。

3 系统软件设计

网关是数据传输的中枢节点,网关系统在无线传感器网络与外部网络进行数据通信的过程中起承接作用。系统的工作流程如图3所示。

从图中看出系统工作包括两个方面:一方面是协调器同ZigBee网络互联,一方面是Linux系统与以太网/无线网络(CDMA,WiFi)的命令控制和数据传输。以太网稳定可靠,但是应用条件通常受限,无线通信移动性能良好,但是容易受到网络覆盖面及成本高的问题困扰。本文所设计网关从软件层上实现ZigBee、以太网、CDMA、WiFi多种通信机制[6],解决上述问题。此外,软件层设计还包括网关各模块底层驱动设计、Linux操作系统的搭建和移植、应用层软件开发等多个层次。

3.1 ZigBee协调器模块与网关主板实现通信

ZigBee协调器模块软件主要完成的功能组网、节点识别和数据汇聚。其软件架构分为3层:

硬件适应层:屏蔽硬件差异,向上提供统一的软件接口。

图3 软件系统工作流程

ZigBee协议栈:ZigBee协议的实现,软件的核心,本文协调器节点采用FreeScale公司的BeeStack协议栈,是一个轮转查询式操作系统。

应用层:主要负责组网和数据传递。协调器的软件设计主要是驱动程序设计,任务如下:

1)初始化设备,设置硬件平台上各个连接管脚的工作状态,申请中断等。

2)如果接到发送命令时,则将数据发送到SPI中,MC13224接收到数据后通过中断触发发送程序。

3)当协调器模块芯片处于接收状态时,数据接收到后通过SPI发送到网关主板。

3.2 网关主板与远程终端实现通信

当网关主板上系统接收到协调器模块的数据后,能够将数据进行解析,然后重新打包转换成TCP/IP协议通过以太网或者WiFi、CDMA等上传至远程终端。当数据流反向时,原理相同。于是网关主板同时实现了TCP/IP协议[7]客户端与服务端两种角色,从而完成了两种异构网络间的互联问题。网关主板系统软件也分为三层架构。

驱动层:驱动层主要包含网关主板的各个接口的驱动,主要包括以太网卡、3G网卡、WiFi网卡以及各感知网模块的驱动,它的功能主要是为应用层提供操作接口。

OS层:OS层为Linux操作系统,负责组织和协调资源。嵌入式Linux系统的开发包括了BootLoader程序的编写、系统的剪裁和移植。

应用层:应用层主要包括数据采集、协议转换、业务和管理功能。其中Linux系统带有TCP/IP协议栈,还编写了协议转换程序。

在本文中,网关与远程终端之间的数据传输程序采用的是面向连接的客户机—服务器模型。在数据从Zig-Bee网至WiFi/CDMA/以太网网络的上行链路中,网关作为客户端,远程终端作为服务器端。当数据流反向,从以太网/CDMA/WiFi网络至ZigBee网络的下行链路时,网关又作为服务器端,远程终端作为客户端。而网关无论是通过以太网通信还是CDMA/WiFi无线通信,都可以采用这种服务器端-客户端通信模式,为了方便,下文讨论,均以无线WiFi为例。这种通信模式采用了socket[8]通信机制,对数据传输具有较高的可靠性。同时这种模式下网关可以同时与多个远程终端连接。

3.2.1 嵌入式网关作为客户端应用程序开发

本文Linux系统实现了串口驱动程序,串口通信时在编程上调用open()、read()、write()、accept()等函数来对相应的设备文件完成操作。当网关作为客户端,建立与服务器端的连接,对SPI串口调用读操作来完成对协调器模块数据的接收,然后对无线网卡USB接口写操作完成数据传输和转发。

客户端client应用程序实现流程如图4,其步骤如下:

1)创建一个套接字(socket),初始化相关网络参数。

2)调用connect()向服务器端套接字申请连接,连接成功后用open()打开ZigBee协调器模块设备文件。

3)将程序设置为死循环,调用read()和write()函数与服务器端新进程建立双向通信,协调器模块不断接受ZigBee网络的数据,然后通过USB无线网卡将数据打包成WiFi协议格式发送出去。调用close()关闭套接字从而中断连接。

3.2.2 嵌入式网关作为服务器端应用程序开发

为了网络的稳定性,网关将作为服务器端的server程序与client程序分开,作为两个独立的应用进程来实现。

服务器端的server程序实现如图5,步骤如下:

1)创建一个套接字(scoket),并初始化相关网络参数;调用blind()将所创建套接字与其地址(数据结构中的IP地址和特定的端口号)绑定。

2)调用listen()使套接字监听客户端连接请求。当有多个客户端发出连接请求时,将客户请求排列并取出队列中排在最前面的一个,调用accept()接受连接并且创建一个新的套接字来与客户套接字创建连接通道,并返回与新套接字相关的文件描述符。

图4 网关作为客户端

3)同样将程序设置进入死循环,服务器端创建新进程,调用read()、write()与客户端进行双向通信,USB无线网卡不断接受WiFi网络的数据,然后写入SPI接口,MC13224V协调器模块将数据封装后加上ZigBee短地址发送出去。调用close()关闭套接字,中断连接。

图5 网关作务器端

3.3 应用软件设计

在对网关软件进行总体设计时,利用了Linux系统多线程技术来提高系统运行效率。本文所设计网关将应用软件划分为网关主板—协调器通信线程、以太网通信线程、CDMA通信线程、WiFi通信线程等多个并行的线程实现。应用软件在Linux下利用C语言开发。其中网关主板与协调器通信线程是整个系统的数据源,因此设计为主线程,在初始化后第一个调用,其他线程依赖于本线程的实现。总体设计框架如图6所示。

图6 应用软件设计框架

在Linux下进行多线程编程时要充分利用互斥机制,这样可以避免不同线程同时对数据进行操作,而通过互斥锁可以保证在一段时间内只有一个线程在执行某段代码,从而避免异常。这种处理方式不但改善了程序结构,还提高了系统的运行效率。

4 系统测试及验证

在基于网关的原型机设计完成后,对系统进行了测试以及验证,主要测试了网关的组网能力及外网的接入能力。根据测试要求布置了传感器节点,顺序启动网关设备、路由节点、终端节点,将PC机分别通过以太网、CDMA、WiFi与网关连接。设置网关的IP地址为192.168.1.230。启动PC端软件,刷新连接状态,软件显示接入网络设备状态,设置PC软件,进行湿度传感器数据采集,仍以WiFi网络为例,通过人手握住湿度传感器再放开,PC软件实时准确地更新了采集数据,如图7所示。

图7 WiFi接入PC端软件显示(截图)

图中实时地反应了传感器节点湿度变化,与实际相符,验证传感网组网成功,同时多种网络接入机制均可实现测试并且数据传输效率较高。系统连续工作两天并未出现问题。

5 小结

本文主要基于模块化方法完成多协议网关设计,其特点是:基于模块化设计能够更容易实现各模块升级与改良。该平台具有多种接口使其有良好的扩展性;同时网关采用多种接入机制,能够采用多种通信方式实现多种异构网络之间的无缝连接,结合了Linux系统的多线程的优势,使得通过现有网络能够对传感网进行远程管理和控制,大大提高了数据传输的稳定性和效率,具有较强的实用性和通用性,对物联网产业的发展具有良好的促进作用。

[1]陈学文.基于OSGi的传感器网络服务网关设计与实现[D].西安:西北大学,2009.

[2]孟勇涛.基于嵌入式系统的物联网网关研究与实现[D].北京:北京邮电大学,2012.

[3]白瑞林,吴广霖.嵌入式TCP/IP协议栈多线程应用的实现[J].计算机工程,2006,32(18):84-86.

[4]MC1322xRM,Rev.0.0[EB/OL].[2014-02-23].http://www.freescale.com.

[5]S3C6410X RISCMicroprocessor user’smanual,Revision1.10[EB/OL].[2014-02-23].http://www.samsungsemi.com.

[6]DM9000A-17-DS-P04[EB/OL].[2014-02-23].http://pan.baidu.com/share/link?shareid =2113399983&uk =3003459330&fid = 1024813647373207.

[7]金纯,任涛,王晓.基于ARM处理器的ZigBee/TD-SCDMA网关设计[J].电视技术,2011,36(1):59-62.

[8]陈立定,吕盛林.嵌入式Linux监控终端的多线程控制[J].自动化仪表,2011,32(1):13-15.

Design of Modular Sensor Network Gateway Based on S3C6410

LIU Ningzong1,2,ZHANG Rong2,LU Feng1,2
(1.IoT Engineering,Jiangnan University,Jiangsu Wuxi214122,China; 2.China Electronic Technology Group Corporation,No.58 Research Institute,Jiangsu Wuxi214035,China)

A wireless sensor networks based on the ARM11 embedded gateway is designed.The described gateway uses amodular,hierarchical design in the software and hardware system design process,and also supports a variety of interfaces and network accessmechanism to implements a communication protocol conversion of Ethernet,CMDA,WIFI,USB and so on.Each communicationmechanisms uses socketmechanism and utilizesmulti-threading technology to control,all of those improve the stability and efficiency of the transparent conversion of data between ZigBee and Internet.

ZigBee;gateway;modular design;communication mechanism;socket;multithreading

TP393

A

刘宁枞(1988— ),硕士生,主要研究方向为嵌入式系统的开发;

�� 雯

2014-03-05

【本文献信息】刘宁枞,张荣,陆锋.基于S3C6410的模块化传感网网关设计[J].电视技术,2014,38(13).

张 荣(1983— ),硕士生,研究方向为系统设计与验证;

陆 锋,研究员,研究方向为集成电路设计。

猜你喜欢

服务器端网关以太网
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
Linux环境下基于Socket的数据传输软件设计
信号系统网关设备的优化
基于Qt的安全即时通讯软件服务器端设计
谈实时以太网EtherCAT技术在变电站自动化中的应用
基于Qt的网络聊天软件服务器端设计
LTE Small Cell网关及虚拟网关技术研究
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
浅谈EPON与工业以太网在贵遵高速公路中的应用
应对气候变化需要打通“网关”