嵌入式无线网关(共7篇)
嵌入式无线网关 篇1
构建一个性能完善的智能家居(Smart Home)系统,将用到各种高新技术的综合集成。智能家居的几个关键技术是:家居网络的传输介质、家庭网络的编址、即插即用技术、家庭网关技术[1]。其中,网络传输介质,由于Zigbee技术的兴起,使智能家居掀起了无线热[2]。智能家居系统内的各种设备不但可以相互通信,根据不同的状态互动运行,还可以向外部网络提供家居设备的远程控制能力,帮助家庭网络和外部网络保持信息交流畅通,从而给人们带来更快捷、更舒适的数字家庭体验。功能完备的智能家居系统至少要具备三个特性:①合理高效的家庭网络总线系统;②借助这种网络系统提供各种服务功能;③能与异构网络交互。
智能家居是通过私有网络和家庭网关将家庭中的电器控制功能、灯光管理功能、安全预警功能和智能门禁功能等融为一体[3]。孤立的智能家居网络是没有意义的,而家庭网关可以提供智能家居网络和Internet、GPRS和电话网的接口[4],实现数据和控制信令的在异构网络中的交互,使远程访问和控制智能家居网络变得简单,所以家庭网关是整个智能家居中最核心的部分。
1 家庭网关的发展概述
智能家居是计算机网络技术与通讯技术最人性化的应用,给人们的家居生活带来全新的感受。技术是不断变化的,智能家居的核心家庭网关和家庭网络也发生了很大的变化。家庭网关的发展经过下面三个阶段:(1) 以单片机为核心的家庭网关,这时的家庭网关软硬资源少,只完成三表抄送、安全预警和简单家电控制功能。缺点是功能单一,用户界面简陋;
(2) 多单片机协同的家庭网关,用户界面和家电控制功能有所增强。可实现单片接入以太网的功能[5]。缺点是功能的集成度还不高;
(3)以32位处理器为核心的家庭网关,网关硬件资源丰富,有能力整合安防、对讲、远程控制、家电控制所有功能于一体,并且软件功能丰富。
现在比较典型的智能家居架构,如图1所示。家庭网关采用单片机,网关和智能模块用485总线连接,构成485控制网络。
从图1可见,家庭网络将所有的智能模块连接起来形成一个有机整体接受家庭网关的集中控制。家庭网络可以采用总线制、电力载波、无线方式。现在比较成熟的是总线制和电力载波方式,但是无线方式是现在的趋势。无线控制方式的典型代表是Zigbee,各智能模块形成自组织网络,数据和控制信息以无线方式在网络中传输。
2 无线家庭网关的硬件设计
使用485总线或其他有线方式构建家庭网络不能摆脱连接线的束缚,而无线的组网方式则体现出更多的灵活性和自由度。适合智能家居的无线技术主要包括:红外(IrDA)技术、家庭射频(HomeRF)技术、蓝牙(Biuetooth)技术、Wi-Fi(802.11g)技术、ZigBee技术。采用无线技术,测控基站和家庭网关都要设计无线模块,并需要一个符合智能家居需求的无线通信协议来完成数据和控制指令在家居网络内的传输。
测控基站是智能家居平台的执行单元和控制末端,它必须和家庭网关模块在逻辑上形成一个整体。家庭网关就是通过各个测控基站实现系统信息的采集、信息输入、逻辑处理、信息输出、联动控制等功能。无线测控基站最大的优点是安装非常方便,每一个测控基站都是一个无线接入点彼此互不干扰。下面是采用8位CPU+RF方案的无线测控基站框图,如图2所示。
对测控基站的一般要求是:容易扩展、不受地址限制 、标准化模块组合、铺设简单维修方便。上面AT89S52为CPU,nRF2401为射频模块的测控基站就具有上面的特点。控制适配模块由于被控对象的不同,是有所差异的。EEPROM用来零时保存数据,芯片采用CAT24WC32。由于nRF2401工作在2.4Ghz,设计双面PCB时,尽量多打一些通孔,使接地充分。VDD管脚和滤波电容尽量的近,以期得到较好的高频特性。
家庭网关解决了信息集中、交互控制、提供远程访问等问题。无线家庭网关主要由CPU、、无线模块、GPRS、LCD、电源模块、报警模块等组成。ARM处理器除了ARM内核以外,为降低应用成本,各半导体公司还将常见接口控制器集成在处理器内部。所以选用Philips公司的ARM7处理器LPC2114作为家庭网关的核心处理器,结合无线模块和ucOS-II操作系统,并开发相关的底层程序和应用程序,实现了性能稳定、功能可靠的家庭网关。
(1) 无线模块。
无线芯片采用nRF2401,处理器LPC2114的三个通用IO口连接nRF2401的PWM_UP,CE,CS三个管脚用于设置nRF2401的工作模式。处理器还需要三个通用IO口连接nRF2401的CLK1,DATA,DR1的单个管脚,用于数据的收发。
(2) GPRS模块。
GPRS模块采用的是用西门子公司的MC35模块,该模块支持数据、语音、短消息等多种通信方式可以通过AT命令对其实现控制。采用GPRS模块为手机远程控制家居提供基础。PDA或多功能手机的普及,手机监控比电话监控和以太网监控更适合智能家居的应用。手机是随身携带,固定电话和以太网移动性不好,手机监控更有优势。
(3) LCD模块。
采用7寸夏普LCD显示屏,带有触摸功能。外形尺寸:170.0×104.0×18 mm;像素格式480×234。触摸屏模块提供友好的用户操作界面。
(4) 电源模块。
液晶模块需要12~24V的直流电压,处理器IO口需要3.3V电压,内核需要1.8V电压,所以设计的电源模块主要提够12V,3.3V,1.8V的电压。
3 无线家庭网关软件设计
测控基站和家庭网关通信的无线协议采用自有协议。测控基站的编程思路是:系统上电时配置nRF2401状态字,进入休眠模式。休眠时间到进入激活模式,MCU检测有没有接收命令包,如果有进行相应的包处理。命令包包处理过程是,MCU首先检查地址。如果地址不符,说明命令是发给其它基站的,则丢弃该命令;如果地址符合,则将家庭网关发来的命令分发给控制程序,将数据反馈给家庭网关。没接收到命令包的情况下,检查是否主动发送数据的时间到了,如果到了,主动发送数据给家庭网关,否则进入休眠模式。测控基站软件流程图4所示。
数据帧和命令帧采用统一的格式。帧分成帧头、源设备地址、目标设备地址、帧类型、帧数据、校验和这几个字段,各字段的数据长度定义,如表1所示。
家庭网关端硬件资源比较丰富,集成了多种通信和控制功能,从逻辑功能上看它的软件要具有GPRS通信模块、无线收发控制、触摸屏用户界面。这对软件的设计提出了比较高的要求,比如多任务的调度能力、实时性要求、有好的用户界面、系统的稳定性等。由于家庭网关的硬件资源比较丰富,软件要求的功能多,所以考虑移植一个嵌入式操作系统简化软件开发的难度。ucOS II操作系统是采用C语言编写的,具有构思巧妙、结构简洁、实时性好、开源、移植性好等优点。在计算机领域操作系统技术是很成熟,随着嵌入式硬件功能的不断完善,越来越多的计算机领域的思想可以应用到嵌入式领域,嵌入式操作系统就是一个典型的例子。采用操作系统后,家庭网关的软件结构,如图5所示。
用户应用程序包括智能家居远程控制、触摸屏用户界面、无线控制和收发。远程控制主要解决PDA和主控制模块通过GPRS网络实现交互;触摸屏用户界面提供人性化的操作界面和良好的用户体验;无线控制和收发实现智能测控基站和家庭网关的互通互联、数据传送和命令传送。这三个任务是相互独立的,任务的切换和调度是由操作系统完成的,为了降低模块之间的耦合性,要尽量少使用全局变量。
4 结束语
智能家居就是通过建立一个家庭综合服务与管理集成系统,满足人们对安全、舒适、方便和绿色环保的要求。要实现一个智能家居系统,首先,要在一个家居中建立一个通讯网络,
实现对所有家庭网络上的家电和设备的控制和监测。其次,要有一个与外界通信的通道,特别是异构的公共网络,满足远程监控和交换信息的需求。智能家居系统通过其家庭网关-测控基站来实现家庭智能化的功能。由于智能家居没有形成国际化的标准,这里采用私有协议实现了家居内部的网络互联,设计的家庭网关可以提供家居内部网络控制功能、手机通过GPRS网络实现远程控制、良好的用户操作界面。使用32位处理器设计多种功能集成的家庭网关和无线方式实现家庭网络是必然的趋势。
参考文献
[1]吴巍,吴明光.国内三种智能家居网络协议综述.低压电器,2007,(2):
[2]周经凯,麻信洛等.智能家居控制系统中的无线技术应用与设计.工业控制计算机,2008,21(1):
[3]吕莉,罗杰.智能家居及其发展趋势.计算机与现代化,2007,(11):
[4]李磊,林晓杰.智能家居的标准与协议.数字社区&智能家居,2008,(1):
[5]王平,黄晞等.基于单片机的网络终端的实现.福建师范大学学报,2008,24(4):
嵌入式无线网关 篇2
随着无线通信和网络技术的飞速发展, 使得无线Mesh网络 (Wireless Mesh Network, WMN) 应用于数字化、智能化及微型化的嵌入式系统成为可能。由于墺젂它具备组网迅速、结构灵活、传输速率大、可靠性强、成本젂低等突出的优点, 适应了市场对网络视频监控的新需求, 势젂必拓宽视频监控的应用范围。本文介绍一个在嵌入式Linu碹x젂系统和无线Mesh网上的网络应用, 建立一个基于Linux和S3C2440的嵌入式网关平台, 通过Socket编程使这个平台与计若算젂机建立颓뢓网젂젂络通信, 并给出服务器端和客户端的详细解释。墹颹并젂젂提出一种由多个监控节点、网关和远程监控中心构建的基于无线M茅esh技术的视频监控系统。
(二) 无线mesh网络结构及嵌入式网关
为了将无线监控终端设备接入网络实现远程监控, 根据条件构建了基于S3C2440和嵌入式Linux的无线网关平台。考虑到业务功能的灵活性, 我们实现一种简单通用的视频监控网络平台, 其网络结构如图1所示。基于无线Mesh网络的嵌入式视频监控网络结构由多个无线视频监控终端节点、一个无线网关节点以及客户监控主机组成。视频监控终端节点和无线网关节点都是采用基于Linux的ARM9平台, 将台式电脑作为远程监控主机。
结合业务需求, WMN选择Ad Hoc典型按需距离矢量 (AODV) 路由协议来实现多跳功能。AODV路由协议是一种比较成熟且应用广泛的路由协议, 具有较低的内存和处理开销, 而且源码开放、实现简单。
无线网关具有管理维护整个Mesh网络正常运行以及数据转发到其他网络的功能。视频监控终端完成现场视频流采集压缩、无线路由以及数据收发的功能, 将采集的视频流压缩后经最佳无线路由发送到无线网关, 无线网关通过以太网将压缩的视频流转发到远程监控主机, 远程监控主机对接收到的视频流进行数据处理, 从而完成系统实时监控功能。
1.嵌入式网关硬件方案设计
嵌入式网关硬件结构如图2所示。
本系统采用的嵌入式微处理器是三星公司S3C2440芯片, S3C2440芯片基于ARM920T内核 (16-/32-bit RISC CPU) , 采用五级流水线和哈佛结构, 提供1.1MIPS/MHz的性能, 是高性能和低功耗的硬宏单元, 基于ARM920T内核的S3C2440微处理器是一个多用途的通用芯片, 它内部集成了微处理器和常用外围组件, 可用于各种领域, 特别适用于手持设备。它是应于手持设备的低成本实现, 提供了更高性价比。
根据业务的需要我们还需要在S3C2440为主控芯片的基础上对资源进行扩展, 扩展的主要模块包括电源模块、数据采集模块和网络传输模块。外接电源模块采用了太阳能电池和备用蓄电池双重供电方案。在太阳能电池能量充足的情况下, 使用太阳能电池供电, 否则使用备用蓄电池。数据采集模块用来收集视频监控系统中采集到的音频数据和视频数据, 它对视频进行H.264格式的压缩编码, 将数据流经USB控制器扩展的USB2.0接口输出到RT73模块。再经由DM9000A以太网控制器模块通过连接互联网转发到远程监控主机。其中RT73模块包含一个集成了MAC和基带处理器的芯片和一个集成了功率放大器和天线的芯片, 支持IEEE 802.11b/g无线传输。
嵌入式网关如图1所示:
2.嵌入式网关软件设计
(1) 嵌入式网关软件结构
嵌入式网关软件框图如图3所示。
Linux的网络功能是与其内核紧密相连的, 并且在网络支持方面Linux要优于其他操作系统, 同时其多用户、多任务、低成本、可用于多种硬件平台的特性也使得它在网络开发方面优势明显。本系统设计选择采用成熟稳定的Linux2.6.28内核。系统软件设计主要工作包括底层驱动程序开发和上层应用程序开发。
(2) 主要软件实体
1) Linux操作系统
Linux操作系统采用成熟稳定的2.6.28内核。配置时根据硬件资源选择Flash和SDRAM的大小, 在网络子项中选择对TCP/IP和IEEE 802.1lb/g协议的支持, 除去不需要的选项以缩减内核体积, 执行编译后得到Linux的内核映像文件, 再根据自己的需要定制yaffs文件系统镜像。
2) 驱动程序
Linux操作系统通过调用驱动程序的接口函数实现硬件访问请求。RT73和DM9000的驱动程序分别控制相应芯片完成数据接收和转发, USB接口控制和网络传输控制功能, 采用中断触发/响应机制协调工作。
3) 系统初始化程序
系统初始化即引导加载程序, 初始化硬件设备、建立内存空间的映射图, 将系统的软硬件带到一个合适的状态, 以便为我们最终调用操作系统内核准备好正确的环境。
4) AODV路由协议栈
无线路由是系统的重要组成部分, 移植AODV路由协议是实现系统无线路由的基础。编译AODV路由协议源程序, 对Linux内核进行配置, 编译出支持ARM体系结构的可执行文件并将其烧录到无线网关。
5) 无线传输及网关软件
网络传输部分采用了Linux下的Socket网络编程对接收到的视频数据进行传输。网络传输程序完成视频流数据包的封装, 经以太网传送到客户监控主机。为保证视频流的实时性, 使用IEEE802.11b/g标准完成压缩视频流的无线接收和转发。
(3) 嵌入式Linux下的AODV协议开发
结合Ad hoc网络的路由协议和无线Mesh网络自身的特点, 本网关决定采用AODV (Ad-hoc On-Demand Distance-Vector) 协议作为系统路由协议, AODV路由协议是针对移动Ad hoc网设计的, 它是按需式和表驱动式两者的结合, 同时具备了两种思想的优点。AODV路由算法属于按需路由算法, 即当有源节点需要向某目的节点通信时, 才在节点间建立路由, 路由信息不会一直被保存, 具有一定的生命期 (TTL) , 若这条路由已不需要, 则会被删除。
下面简单描述路由建立的过程, 如图4所示。
当源节点S要给目的节点D发送数据包, 但路由表中没有到达D的路由时, S会发起一个路由发现过程。在路由发现过程中, 将缓冲数据包。AODV路由发现过程如图所示。
源节点S在整个网络中广播路由请求信息 (Route Request, RREQ) 。除了几个标志位之外, RREQ包还包括跳数、RREQ标识符、目的地址和目的序列号、发端地址和发端序列号。跳数区域包括到发起RREQ消息的源节点的距离、源节点S。这时RREQ到当前位置所经过的跳数。RREQ ID是与发端地址相结合, 唯一标识一个路由请求。这用来保证即使节点从它的邻节点多次接收到了RREQ消息, 它都只需要重新广播一次该路由请求消息, 以避免广播引起的拥塞。
当节点接收到RREQ包时, 它执行以下过程。
1) 产生或更新到上一跳节点的路由, RREQ包是从上一跳节点接收的。
2) 核实RREQ ID和源地址, 以确定是否已经接收该RREQ。如果是, 则丢弃该包。
3) 跳数增加1。
4) 产生或更新到源节点S的方向路由。
5) 如果该节点就是请求的目的节点, 则产生一个路由应答 (Route Reply, RREP) , 并将该RREP包沿着产生的到源节点S的方向路径发送给发起者。
6) 如果该节点不是目的节点, 但有到目的节点的确定路径, 它将依赖目的节点的唯一标识给源节点发起一个RREP包。
如果中间节点应答RREQ, 可能是这种情况:目的节点不能听到任何RREQ消息, 因此它没有到源节点的反向路由。如果RREQ设置了无条件的RREP标识, 应答的中间节点将给目的节点发送一个无条件的RREP。这样就在目的节点设置了到RREQ发起者的路径。
7) 如果节点没有产生RREP且TTL≥1, 则更新RREQ并重新广播。
节点接收到RREP消息后, 将产生或更新其到目的节点D的路由。跳数逐跳加1, 最新的RREP将转发给相应的RREQ源发端。最终, 如果存在一条到达目的节点的路径, 源节点S将接收一个RREP消息。这时, 缓冲的数据包就可以通过新发现的路径发送到目的节点D了。
(4) 无线网络传输及网关程序设计
为了网关系统与其他监控节点的建立网络数据连接, 需要用到Linux上的套接口编程, 我们可以启动一个程序来监听客户端的要求, 客户端就可以通过套接字来进行数据通信。Socket是应用层与TCP/IP协议族通信的中间软件抽象层, 它是一组接口。在设计模式中, Socket其实就是一个门面模式, 它把复杂的TCP/IP协议族隐藏在Socket接口后面, 对用户来说, 一组简单的接口就是全部, 让Socket去组织数据, 以符合指定的协议。如图5所示为基于TCP协议的客户端/服务器进程图。
网关服务器端先初始化Socket, 然后与端口绑定 (bind) , 对端口进行监听 (listen) , 调用accept阻塞, 等待客户端连接。在这时如果网络内有个客户端初始化一个Socket, 然后连接服务器 (connect) , 如果连接成功, 这时客户端与服务器端的连接就建立了。客户端发送数据请求, 服务器端接收请求并处理请求, 然后把回应数据发送给客户端, 客户端读取数据, 最后关闭连接, 一次交互结束。
服务器端主要代码如下:
(三) 系统测试
把本系统应用于某景区进行测试, 将3台视频监控终端安置于监控点, 各监控点之间的距离约为200m。与无线网关平台无线连接并组成无线多跳网络。在启动系统后, 各个视频监控终端将采集到的视频流经MPEG-4软件压缩后通过无线网卡经最佳路由发送到无线网关。无线网关对接收到的视频流经以太网转发到远程监控主机。无线网关还具有识别和管理各个视频监控终端的功能。远程监控主机对接收到的视频流进行数据实时处理。实验测试表明, 系统视频流畅、图像清晰、实时性强, 无线网关可以完成连接各无线视频监控终端并且将其监控到的视频转发给远程监控主机的功能。
(四) 结语
无线Mesh网络具有组网的快速灵活性和节点的分布性等优点, 可以提供高速的接入速率, 优于其他的接入方式。此外, 其以少量的基础设施构成覆盖范围广的高速无线网络, 投资较小, 网络建设时间短, 便于升级。随着科学家和工程师对无线Mesh网络的重视程度日益提高和研究的不断深入, 更加成熟的无线Mesh网络系统将很快得到推广和应用。
国内在这方面虽然还处于起步研发阶段, 但已经有了一些成熟的产品。笔者根据无线Mesh网络的路由协议特点, 在嵌入式平台下实现了一个简单实用的无线网状网络下的无线网关系统。实验证明, 该无线网关系统可以和外网连接, 实现真正意义上的无缝连接。
参考文献
[1]KEITH R.Mesh wireless networking[J].IEEE Communications Engineering, 2003 (10/11) :44-47.
[2]邹思轶.嵌入式Linux设计与应用[M].北京:清华大学出版社, 2002, (2) .
[3]任智, 郭伟.多跳无线网路由协议研究进展[J].电信科学, 2003, 19 (8) :10-16.
基于UDP转发的嵌入式通信网关 篇3
随着网络和微电子技术的发展, 各种各样的网络终端设备已经应用到了各行各业中。这些网络终端设备给我们的生活带来了巨大的改变, 我们可以通过这些网络终端设备进行消费、购物, 也可以采集数据和进行远程监控。传统的通信网关的功能都是通过PC机来实现的, 虽然实现起来简单, 但是存在体积大、成本高、功耗大、安装不便等缺点。因此, 开发一种功能专业的嵌入式通信网关来代替传统的通信网关有一定的必要性。
本文所阐述的嵌入式通信网关具有低成本、体积小、功耗小、安装方便、易于控制和便于维护的优点, 完全可以满足大部分测控数据通信的需要。而且使用嵌入式通信网关可以使得设备子网和主干网络隔离开来, 从而节约了主干网络的IP地址。
1 网络结构设计
如图1所示, 嵌入式通信网关是设备子网和上层主干网络的中间环节, 实际上相当于一个UDP数据包中继器, 由于很多测控设备数据通信的量并不是很大, 频率也不是非常的频繁, 所以这种通信网关完全可胜任数据包中继任务。而且可以达到通过UDP来控制通信网关黑名单的目的。为了得到UDP数据包转发和设置黑名单的结果, 软件还设计了一个简单的应答机制来弥补UDP数据包传输结果的不可知性。
此系统中管理网采用1 0 0 M的以太网, 设备子网采用10M以太网, 终端设备通过嵌入式通信网关和管理服务器进行通信。
2 硬件设计
如图2, MCU主控芯片主要完成程序控制和数据通信;系统接收到的配置参数和数据存放在EEPROM中, 让主程序每次启动的时候从中读取;网卡芯片1负责与上位机通讯, 作为系统上联接口;网卡芯片2负责与下位机通讯, 作为系统下联接口;HUB用来负责下位机的数据交换;SRAM是用来扩展M C U数据存储区。
3 软件系统分析和设计
3.1 软件结构设计
嵌入式通信网关软件结构如图3所示, 在系统中实现了两个传输层相通的协议栈, 其中一个协议栈的底层连接设备子网, 另一个协议栈的底层连接主干网络。在传输层实现设备子网和主干网之间的双向转发。
3.2 软件分析和实现
为了能让嵌入式通信网关能在传输层进行正确的数据转发, 就必须让它能够得到要转发的目的IP地址。因此, 可以规定UDP数据包的数据部分为一个固定的数据分组格式, 让嵌入式通信网关可以根据接收到的UDP数据包中的内容, 计算出要转发的目的地址。并且因为UDP数据包的发送接收都不需要保持链接和长时间占用端口, 所以可以将服务器端和终端设备的接收和发送端口都指定为某个固定的端口。
由于UDP是不可靠的传输服务, 所以我们无法确定发送出的数据包是否到达了终端设备。而如果接收方在收到一个数据包后返回一个应答, 来确认发送方数据包已经到达并校验正确, 那么发送方就可以确认发送出的数据包已经正确到达。如果接收方在规定的时间内没有应答该数据包或者收到错误应答, 则发送方重发失败的数据包。
在通信过程中, 每个数据包的重要程度是不一样的, 所以并不是每个数据都需要应答。只需要在比较重要的数据, 例如控制命令等数据中指定应答需求字节为0x0e来要求接收方返回应答。测控数据一般都比较短小, 发送和接收不会遇到数据包拆分合并的问题。因此, 每个包的数据相对独立, 数据包序列号可以采用定时器来生成, 应答针对序列号。
从而, 制定UDP包数据帧格式为:开始标志 (1byte) +序列号 (2byte) +数据长度 (1byte) +转发ip地址 (4byte) +应答需求 (1byte) +数据类型 (1byte) +数据内容+校验和 (1byte) +结束标志 (1byte) 。其中, “数据长度”值为“转发ip地址”、“数据类型”和“数据内容”的总长度。
例如, UDP数据部分为0a 10 20 09 c0 a8 02 03 0e 01 00 0000 00 83 0b, 其中:
0x0a代表开始标志;
0x10 0x20代表该数据包的序列号;
0x09代表数据长度为9个字节;
0xc0 0xa8 0x02 0x03表示要转发到达设备子网的IP地址“192.168.2.3”;
0x0e表示应答需求标志, 0x0e表示需要应答, 0x0f表示无需应答;
0x01代表内容类别, 0x01表示控制命令, 0x02则代表数据, 0x03则代表应答;
0x00 0x00 0x00 0x00代表控制命令、数据或应答内容, 类别不同长度不同;
0x83为校验和 (校验计算方法是把从开始到校验和的所有字节相加, 使其结果为0xFF) ;
0x0b代表结束标志。
3.3 主干网到设备子网转发的实现
首先, 嵌入式通信网关从链路层接收数据包, 经过网络层到达传输层。
然后, 在传输层分析计算目标ip地址并实现转发:
最后由终端设备接收并根据内容类别对具体数据进行分类处理, 并返回应答。
3.4 设备子网到主干网的转发
网络终端设备上传数据的过程和向主干网络下传数据过程类似, 可以使用同样的数据帧格式来实现转发。如果终端设备的数据都是发往主干网里的某台特定的服务器, 就不需要计算IP, 直接在传输层指定主干网中的目的IP就可以了。
4 总结
嵌入式通信网关提出了在单片机上构建协议栈, 并且通过定义一种数据帧格式来实现两个网段之间的数据包转发, 实现了测控子网络和上层管理网络之间的数据通信。避免通过NAT等方式实现跨网段传输的复杂性, 降低了软件实现的难度。虽然, 这种方法不能完全实现数据传输的可靠性, 但是相比可靠传输协议TCP的运行机制要简单很多也很容易实现, 所以在普通的测控网络中是可以实施的。
参考文献
[1]林瑶, 蒋慧, 杜蔚轩等译.Douglas E.Comer.用TCP/IP进行网际互联第一卷:原理、协议与结构 (第四版) .北京:电子工业出版社.2001.
基于ARM9嵌入式网关的设计 篇4
在工业控制和通讯设备中, 更多的是符合RS-232标准的串行口设备。因此这些设备都是通过RS-232或RS-485总线与PC机进行数据通行和数据管理的。这种方式不仅需要很大的人力和物力, 而且传输的距离有限, 不能实现远程控制, 可以在设备中嵌人TCP/IP协议栈, 通过工业网关自动分配IP地址, 实现对各个设备的远程监视和远程控制。
近些年, 互联网以其便捷、高速传输数据的特点越来越受到人们的青睐。以太网/互联网等网络架构逐渐在通信、自动化控制领域被广泛的采用, 以TCP/IP网络传输通信协议为代表, 成熟度较高的开放式网络通信技术, 正向各种自动化系统进行渗透, 连接并控制所有设备。而32位处理器ARM的出现, 使得嵌入式监控设备实现TCP/IP协议成为现实。
LINUX作为一种开源免费的操作系统由于它集成了TCP/IP协议栈, 所以网络编程模块就变的很容易了, 用SOCKET编程就变的灵活容易了。而LINUX又能很好的在ARM上进行移植, 所以本设计用了LINUX操作系统。
本设计就是通过移植了LINUX操作系统的ARM9来读取串口、并口、USB等传送过来的数据, 并且通过移植Boa web服务器使ARM上的数据可以通过以太网很好的传送到任何地方的宿主机上。这样就可以通过一台宿主机控制多太工业设备, 并且能过在很远的地方对设备进行控制, 大大的减轻了在工业领域中人力和物力的消耗。
(二) 系统硬件平台设计
1. 系统总体结构的设计
系统的工作原理是就是通过移植了LINUX操作系统的ARM9来读取串口、并口、USB等传送过来的数据, 并且通过移植Boa web服务器使ARM上的数据可以通过以太网很好的传送到任何地方的宿主机上。这样就可以通过一台宿主机控制多太工业设备, 并且能过在很远的地方对设备进行控制, 大大的减轻了在工业领域中人力和物力的消耗。, 系统的结构框图1所示。
2. 通信模块的设计
用RTL8019芯片设计的以太网控制器, 可以通过RJ-45连上以太网, 从而实现把工业设备上的数据传送到远程监控端得浏览器上。如图2所示为网络通信部分的结构框图。
RTL8019AS芯片的引脚SA0~SA19为地址总线;SD0~SD15为数据总线;引脚INT0接S32C410芯片的外部中断信号;引脚AEN是地址使能脚, 作为芯片的选通信信号, 将中断接到CPU的n GCS3地址映射到bank3。
引脚TPIN+, TPIN-、TPOUT+, TPOUT-作为媒体接口管脚, 是接收IP数据报所需要用到的管脚, 在设计网卡芯片电路时通过一个隔离变压器和RJ-45的网络外接口相连, 外部主机通过以太网网线与RJ-45接口进行连接, 实现数据交换。
隔离变压器的TD+管脚连接网卡芯片的TPOUT+引脚;TD-连接TPOUT-;RD+连接TPIN+;RD-连接TPIN-。8019通过隔离变压器与RJ-45连接, 实现与主机进行接收和发送IP数据报等工作。
3. 串口部分的设计
串口部分设计使用了2路UART, 其中, 一路通过电平转换芯片MAX232, 把3.3V的逻辑电平转换为RS-232-C的逻辑电平进行传输, 实现ARM与PC机之间的通信, 通过超级终端可在PC机上进行调试;另一路串行接口使用MAX1485进行电平转换, 实现从RS-485上接收现场总线发送的信息。
(三) 系统软件部分设计
1. 操作系统的移植
Linux操作系统可应用于多种硬件平台, 具有良好的移植性、高的可靠性、优秀的网络功能、完备的文件系统以及丰富的API, 为嵌入式网关提供了强大的软件支持。因此, 本文选择Linux作为嵌入式网关的操作系统。操作系统的移植过程如下:
制作Linux映像文件
(1) 在linux系统下安装arm-linux-gcc交叉编译软件, 这里采用cross-2.95.3.tar.gz工具包。
(2) 将linux-jx2410.tar.gz拷贝到/home/cvtech/目录下, 执行下面命令
(3) 将生成的内核映像文件z Image复制到/tftpboot目录下
往ARM9上移植linux操作系统
(1) 配置linux系统的tftp服务。
(2) 将文件系统映像文件拷贝到/tftpboot下。
(3) 将硬件电路连接好, 下载ramdiak.gz和z Image映像文件通过网线下载到ARM9中。 (tftp 30800000 ramdiak.gz, tftp 30008000 z Image) 。
(4) go 30008000, 就进入了arm9的linux系统。这样就将linux内核下载到了ARM9上了, 通过LCD可以看到linux操作系统的界面。
2. Boa Web服务器的移植
Boa Webserver是一个运行在类UNIX系统中的高性能网络服务器。可以接收来自客户机的POST和GET方法, 支持CGI后台服务程序。移植过程如下:
4. 动态Web页面的CGI技术
通用网关接口 (CGI) 是Web服务器与外部应用扩展程序交互的一种标准接口, 规定了Web服务器调用调用其它可执行程序的接口标准, 提供了WEB服务器执行外部程序的通道。CGI程序是独立于Web Server的一个外部程序, 经编译成可执行文件在服务端运行。
本系统中, CGI程序主要是将以太网传送过来的数据动态的显示在浏览器上, 并且具有, 配置设备的IP地址、网关地址、子网掩码等设置。
5. 串口通信模块的设计
在linux下, 串口被当做文件对待, 每个串口都赋予了一个文件描述符。因此, 从串口读写数据, 就像读写文件一样简单。在linux中打开和预置一个串行设备的基本步骤:
(1) 用open打开设备文件。此时需要使用O_NONBLOCK和O_NOCTTY打开标志。O_NONBLOCK标志使得open不等待并立即返回, O_NOCTTY指明串行设备不是控制终端。
(2) 使用tcgetattr获取当前设备方式。
(3) 设置termios成员c_iflag、c_oflag、c_cflag、c_lflag。
(4) 使用cfsetispeed和sfserospeed通信设置波特率。
(5) 使用tcsetattr设置设备工作方式。
(6) 使用read和write读写串口终端。
(7) 输入输出处理完毕, 用close关闭串口。
串口通信的流程图如图3所示。
(四) 结束语
本文介绍了以S3C2410处理器为核心、用RTL8019AS作为网络接口芯片的嵌入式网关的软、硬件设计方法。本系统可用于对工业设备的远程监控控制, 具有很好的应用前景。
摘要:系统是一种以S3C2410处理器为核心, 结合RTL8019AS网络接口芯片开发硬件系统, 并在此系统上移植了Linux操作系统和Boa Web服务器的嵌入式工业网关, 实现了对工业设备的远程监控和控制。
关键词:ARM9,Linux,Boa Web服务器,CGI
参考文献
[1]王进德.嵌入式Linux程序设计与应用案例[M].北京:中国电力出版社, 2007.
[2]郑慕德.嵌入式微型计算机系统实例教程——ARM与Linux[M].北京:科学出版社, 2006.
[3]张思民.嵌入式系统设计与应用[M].清华大学出版社, 2008.
[4]刘洪涛, 孙天泽.嵌入式系统技术与设计[M].北京:人民邮电出版社, 2009.
嵌入式无线网关 篇5
关键词:物联网,嵌入式智能网,研究
事物之间是互相联系的, 世界经济不断的融合, 在这个大环境下, 物联网应运而生。与互联网技术等相比较而言, 目前物联网技术应用更为广泛, 因此, 物联网技术也得到了业界的广泛关注, 其不仅具有极其重要的价值, 而且也具有广阔的发展前景。
1 物联网网关的介绍
物联网的结构主要分为三个方向:即感知层、网络层以及应用层。感知层就是通过人体的皮肤等, 并借助传感器设备去识别和采集信息;网络层则是位于感知层与应用层二者之间, 主要是通过人体神经系统, 协助对信息的处理, 综合功能较强;应用层处于顶层, 能够完成物联网技术与其他技术进行融合, 为不同行业提供各种服务。
在传感设备数量不足的情况下, 将单一的设备接入公共网络当中就能够发挥功效。但是这种方式对资源造成了一定的浪费, 因此, 将设备汇集到一起并统一发送到网络层, 能够在节约资源的同时, 完成数据的传送, 所以, 就要在感知层与网络层之间加一个汇聚层, 这样能够成为二者之间提供良好沟通的纽带, 促进物联网网关的顺利发展。
1.1 物联网系统的分析
物联网网关作为物联网的基础, 其作用不容忽视, 具备感知网络接入、互通不同网络、远程监控三种能力。
感知网络, 感知网络是由多个功能传感器网络组成, 比如:摄像头、读卡器等, 由于这些传感器所获得的信息不同, 导致它们没有固定的方式接入, 目前主要有有线与无线的区别。就目前的情况来看, 有线接入相对比无线接入速度慢, 无线接入目前使用的蓝牙、无线网络都能够进行快速的传送, 特别是无线网络已经广泛的用于手机等设备中, 应用范围十分广阔, 因此, 随着无线网络发展的越来越好, 日后也必将能成为主要的接入方式。
异构网络互通, 由于传感器的不同, 感知的信息也不同, 那么就造成了数据之间的分离, 交流数据就会相对麻烦, 因此, 就要求设置一个协议网络在中间发挥作用, 目前比较常用的协议网络主要是Mod bus协议网络, 在许多领域都得到了有效的利用。
检测控制管理, 物联网当中的检测控制管理主要是对数据信息进行监控和管理, 首先是网关中的不同功能模块, 能够进行更加灵活的控制, 实现操作简单、人机友好;其次是对网络连接的集中管理。因此, 检测控制管理不仅仅是对自身的监控, 还能够对来自外来的网络进行控制和管理。
1.2 物联网系统的整体设计策略
随着科学技术的不断发展, 为物联网网关提供了运行平台, 一种是传统的PC平台, 另一种则是嵌入式平台。由于近年来人们对系统的要求越来越高, 嵌入式系统以其独特的优势, 内核小、专用性强等优势, 占据许多领域的主导地位, 比如:交通、环境等领域。本文介绍对物联网网关的设计方案主要有六种, 通过实验证明, ARM+Linux具有一定的优越性, 兼容性强, 是物联网网关软硬件重要的发展的平台。
2 物联网网关硬件的设计
物联网网关的运行环境相对较差, 但要求却很高, 要求其在降低成本和能源消耗的同时, 加快处理速度。因此, AT9LSAM9260作为硬件的重要平台就成为了首选, 其具有处理速度快, 存储量大, 兼容性强等多个优点能够胜任物联网网关对硬件的要求。
物联网的硬件需要对无线网络的接入提供技术支持, 以此来满足足够的存储空间, 例如:256M N and Flash等。硬件的主控制器电路是整个物联网网关当中最重要的部件, 对于整个系统的数据转换等方面都具有非常重要的意义, 因此, 要注意主控制器电路涉及的严谨性;网络接口电路主要有两种接口模式, 一个是MII, 另一个是RMII, 这两种模式可以通过对应硬件引脚配置来达到目的;串行接口电路, 对于物联网中的串口设计, 主要选择RS232和RS485这两种, 这样不仅仅能够节约能源, 而且还能够完成异构网络的互通, 从而优化物联网的工作效率。当然, 这些电路设计是不够的, 对于微处理器来说, 带需要增加许多模块, 例如:内储存器等。
3 物联网网关软件的设计
物联网网关需要对通信接口的数据进行采集、处理等, 因此, 要严格的对整个框架进行分层。底层设备驱动层要收集数据信息, 中间层则对数据进行处理, 然后将数据向各个接口传送, 这期间要加入一个监控模块对数据流动的过程进行监控和管理。除此之外, 为了加强系统的灵活性, 设计时要加强各个模块之间的灵活性, 最后在顶层设计一个人机交互界面, 控制系统的运行方向。目前多使用嵌入式系统开发, 为了优化其工作效率, 主要采取在PC平台上进行代码开发等, 并进行调试等。
4 结论
根据上文所述, 通过对物联网网关进行的深入研究发现, 实现无线网络的嵌入式网关是必要的。在日后物联网网关的发展过程中, 其要求也会越来越高, 虽然目前物联网网关没有一个统一的标准, 但是随着科学技术的发展, 物联网网关必然会越来越完善。
参考文献
[1]肖巍, 文大化.基于abase-Ⅲ嵌入式程序设计的研究[J].长春理工大学学报 (自然科学版) , 2010, 18 (03) :259-261.
[2]李传峰, 孙宏伟, 肖秀芬.膜反应器中Ni-Cu催化剂上CO加氢合成乙烯的研究[J].催化学报, 2012, 20 (05) :12-14.
[3]温阳东, 毕锐, 周松林.基于Internet的嵌入式分布式远程测控系统的设计[J].自动化与仪器仪表, 2011, 10 (8) :158-159.
[4]王睿智.基于TC35i的远程监控报警系统的设计与实现[J].吉林工程技术师范学院学报, 2013, 14 (01) :265-267.
嵌入式无线网关 篇6
近年来,随着以太网技术的进一步发展和完善,特别是通信速率的提高和交互技术的应用,使得以太网技术应用于现场控制领域成为可能,这对工业控制网络产生了新的影响。从目前的趋势来看,以太网己经进入了现场控制级,但是已有的现场总线仍将继续存在,工业以太网只能占领一定的市场[1]。
从现实来看,以太网扩展了现有的系统,但是现场总线不可能完全被工业以太网替代,后者的潜力巨大,其应用领域一定会不断扩大。所以,将现场总线与以太网结合,从而实现底层生产与上层管理的紧密集成,已经成为一种趋势。CAN总线作为国际上应用最广泛的现场总线之一,在我国也得到了很广泛的应用[2],该设计以CAN总线作为工业现场总线,实现其与以太网的互联。
1 硬件结构
目前,对于CAN和以太网相连的嵌入式网关设计主要有两种方法[3,4]:一种是低档MCU加接口芯片的设计方法,另一种是高档MCU加EOS(实时多任务操作系统)再加接口芯片的设计方法。因CAN只采用了ISO/OSI参考模型的一、二层,协议相对简单,比较适合用于低成本、速率要求不高的离散控制系统。从合理的成本和有效利用处理能力这两方面考虑,该设计采用低档MCU加接口芯片的方法,其硬件框图见图1。
1.1 主控芯片及以太网接口模块
根据要求,该系统选择了性能价格比较高的Atmel公司生产的AT89C55单片机。它是面向测控对象和嵌入式应用的,所以它的体系结构以及CPU、指令系统、外围单元电路都是按照这种要求专门设计的[5]。它内部带高达20 KB的FLASH程序存储器,AT89C55完全兼容8051指令集,片上FLASH方便了使用者进行在线编程,工作速率最高可达33 MHz,256 B的内部RAM,32个可编程的I/O口,3个16位的定时/计数器,8个中断源,支持低功耗的空闲工作模式。
以太网接口选用的是RTL8019AS芯片[6,7],它是由Realtek公司生产的一种高度集成的以太网控制器,能实现以太网媒介访问层(MAC)和物理层(PHY)的全部功能。RTL8019AS内部有两个RAM区域:一是16 KB,地址为0x4000~0x7fff,要接收和发送数据包必须通过DMA读写RTL8019AS内部的16 KB的RAM,它实际上是双端口RAM,即有两条总线与其连接,一条总线用于RTL8019AS读/写或写/读该RAM,即本地DMA;另一条总线用于单片机读或写该RAM,即远程DMA;二是32个字节,地址为0x0000~0x001F,用于存储以太网物理地址。主控芯片和以太网接口芯片的硬件接口原理图见图2。值得注意的是由于以太网的包最大可以超过1 500个字节,AT89C55的片内RAM只有256个字节,因此无法存储这么大的包,所以这里扩展了一个32 KB的外部RAM,这样同时也能提高单片机的数据传输速度。
1.2 CAN接口模块
组成CAN系统的主要器件是CAN控制器和收发器。该设计中,CAN接口模块选用SJA1000芯片和PCA82C250芯片。SJA1000 是一个独立的CAN 控制器,它是Philips 公司另一个CAN 控制器PCA82C200 的替代产品,且增加了一种新的工作模式(Peli CAN),这种模式支持CAN 2.0B协议。SJA1000主要完成CAN的通信协议,实现报文的装配和拆分、接收信息的过滤和校验等。PCA82C250是CAN 控制器与物理总线之间的接口,主要用于增强系统的驱动能力。采用收发器的系统中,节点数至少可以达到110个,同时还具有降低射频干扰(RFI) 和很强的抗电磁干扰(EMI) 能力。在处理这部分电路时,有几个地方要特别注意:
(1) 晶振电路的问题。89C55和SJA1000都应该有各自独立的晶振电路,不能够用SJA1000的时钟输出信号CLKOUT来驱动单片机。
(2) 复位引脚的问题。虽然SJA1000的复位是低电平,但不能通过一个非门直接连接单片机的复位引脚。一般对解决复位引脚问题有两种方式[8,9]:第一种是使用单片机的I/O引脚控制SJA的复位引脚,其好处是单片机可以完全控制SJA的复位过程;第二种是采用适当的复位芯片,为了降低成本,该设计采取的是第一种方法。
(3) RX1引脚的电位必须维持在约0.5 VCC上,否则将不能形成CAN 协议所要求的逻辑电平。
(4) 一定要注意电缆的终端阻抗匹配,它直接影响CAN总线是否能正常工作和网络性能。CAN接口模块的硬件电路图见图3,在PCA82C250的RS脚上接有一个斜率电阻R,可根据总线通信速度适当调整电阻的大小。
2 通信模块软件设计
2.1 SJA1000驱动程序的实现
SJA1000驱动程序是由SJA的初始化函数、发送函数、接收函数组成的,图4所示为其流程图。
(1) SJA1000的初始化。
SJA1000在系统上电、硬件复位或主控制器发出复位命令后需要进行初始化,以设定它的工作模式、通信速率、输出控制方式和标识符屏蔽格式等重要参数。CAN控制器SJA1000的初始化只能在复位模式下才能完成。程序的流程图如图4所示。
首先程序检测CAN接口是否正常工作,即向SJA1000的测试寄存器写入并读出,校验其结果是否一致,如果结果一致则进入复位模式进行初始化设置。在初始化的过程中,如果对某个寄存器的设置超过规定的时间还未完成,则认为初始化失败,初始化程序自动发送错误信号。
(2) 数据的发送与接收。
SJA1000芯片有一个报文发送缓冲区和两个报文接收缓冲区,用于CAN报文传送。数据从CAN控制器SJA1000发送到CAN总线首先是由CAN控制器自动完成的,发送数据程序把数据存储区中待发送的数据取出,组成信息帧,并将主机的ID地址填入帧头;然后将信息帧发送到CAN控制器的发送缓冲区;最后启动发送命令即可。信息从CAN总线到CAN接收缓冲区也是由CAN控制器自动完成的。接收程序只需从接收缓冲区读取要接收的信息,并将其存储在数据存储区即可。
2.2 RTL8019AS驱动程序的实现
RTL8019AS的驱动程序和SJA的驱动程序一样,有3种功能:芯片初始化、收包、发包。
(1) RTL8019AS的初始化。
RTL8019AS的初始化过程比较复杂,但十分重要,它决定了通信过程中的一些重要参数。如设置相关工作模式的寄存器,分配和初始化接收及发送缓冲区,初始化网卡接收地址等,其流程图见图5所示。
(2) 数据的发送与接收。
因为在RTL8019AS的初始化程序中已经完成了以太网的物理地址设置,并指定了发送缓冲区起始页面地址寄存器TPSR。此外,RTL8019AS的CRC校验自动生成器也被使能,所以RTL8019AS的数据包发送程序相对要简单。在数据包的发送过程中,AT89C55只要通过远程DMA将待发送的数据包写至RTL8019AS片内SRAM的发送缓冲区,并启动发送过程即可。
在接收数据包时,有查询和中断两种方式,鉴于AT89C55的处理能力有限,在该设计中采用查询方式,根据判断CURB==BNRY+1,可以判断是否收到新的数据包,如果有则通过DMA读操作从网卡芯片RAM读出数据。
2.3 网关协议转换流程
嵌入式网络接口实现两种网络的互连[10]。当以太网应用层有数据要发送到CAN节点时,首先将数据发送到网关,由以太网控制器协议转换模块解析完整的CAN协议数据包,通过CAN控制器发送到CAN总线。反之,当CAN设备有数据要发送到用户层时,首先将数据发送到透明网关,由CAN控制器协议模块将完整的CAN协议数据包存放在缓冲区,再通知主控芯片,由它调用以太网控制协议转换模块,将完整的CAN协议数据包作为应用层数据封装起来,再发送到以太网的应用层。
3 结 语
这里介绍的是一种低成本、高可靠性、快捷的CAN以太网网关的硬件、软件设计方案,通过实际应用证明,该设计可以作为CAN总线节点的一个模块,能够与仪器仪表等设备相结合,使其具有网络通信的能力,比较同类产品的设计[2],该设计能大大提高其性价比。
摘要:提出一种工业现场总线与以太网互联方法,介绍以太网与CAN现场总线之间协议转换网关的设计与实现,采用AT89C55作为主处理器,通过两个接口芯片实现CAN总线与以太网的互连,分别给出其硬件结构和软件设计思想。经实际验证,该设计比同类产品,具有更高的性价比,为企业信息网络与控制网络集成提供一种可行的方法。
关键词:CAN总线,以太网,互连,网关
参考文献
[1]林士兵,袁众,杨姐普.TCP/IP网络与CAN网络网关的设计与实现[J].计算机工程,2007,33(3):243-244.
[2]刘晓莉,高军,赵延明.基于ARM的以太网与CAN总线互联网关的设计[J].工业控制计算机,2007,20(4):15-16.
[3]阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,1999.
[4]饶运涛,邹继军,郑勇芸.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2003.
[5]江海峰,张剑英,孔明坤.基于S3C4510B的CAN-Ethernet网关的设计[J].微计算机信息,2008,24(2):107-109.
[6]REALTEK Scmiconductor Corp.RTL8019AS Datasheet[Z].2001.
[7]SJA1000独立CAN控制器[EB/OL].http://www.zlgm-cu.com,2007.
[8]江海峰,张剑英,孔明坤.基于Vxworks的CAN-Ethernet嵌入式网关的设计与实现[J].计算机工程与应用,2007,43(29):107-109.
[9]陈峰,李滨涛,戈志华.基于S3C2410的嵌入式Linux系统构建[J].现代电子技术,2007,30(24):55-57.
嵌入式无线网关 篇7
本文中所要设计实现的嵌入式网关需要完成的功能就是连接两个不同协议的无线网络, 实现数据的转发。基于ZigBee网络协议的无线传感器节点采集有用数据, 并通过ZigBee网络将数据准确传输至ZigBee协调器, 网关通过读串口操作将协调器的数据写入缓冲区, 最后将缓冲区的数据通过与网关相连的usb无线网卡打包送入无线局域网。网关本质上是一个RS232协议转换为802.11g协议的协议转换器。
2 开发平台配置
2.1 硬件平台介绍
我们选用了联智公司基于EP9301处理器的开发板DG9301。DG9301开发板的主要组件包括:EP9301 ARM9处理器, 16M的FLASH和32M的SDRAM, 两个RS232串行接口, 一个自适应的10M/100M以太网接口, 24个引出的GPIO引脚, 支持用户外接, 标准的JTAG接口, 2个USB host, 5路12bit的模拟输入等等。
2.2 软件平台搭建
2.2.1 开发方式介绍
由于目标板不具备一定的处理器能力和存储空间, 所以只有在宿主机上对即将在目标机上运行的应用程序进行编译, 生成可以在目标机上运行的代码格式, 然后移植到目标板上, 才可以完成程序开发, 即目前嵌入式程序开发的Host/Target模式。宿主机采用的是运行redhat9.0系统的x86通用PC机平台, 并安装交叉编译环境。
2.2.2 搭建交叉编译环境
所谓交叉编译, 简单地说就是在一个平台上生成在另一个平台上执行的代码, 即在宿主机上对应用程序进行交叉编译, 生成可以在目标板上执行的代码。制作交叉编译器可行性较高的方法是采用现成的、有专门的机构维护的交叉工具链, 出现问题容易得到技术支持。在这里, 我们仍以面向DG9301的开发为例:
首先, 将资料光盘中的arm-linux-gcc-3.3.tar拷贝到开发机的根目录, 并将文件解压缩。
然后, 再把资料光盘中的arm-elf-gcc-3.2.1-full.tar.bz2拷贝到开发主机的根目录, 并将文件解压缩。
最后, 为了不每次设置PATH, 将下面这行加到开发主机的.bash_profile文件中:
至此, PC机的交叉编译环境就已经建立起来了, 可以用arm-linux-gcc命令编译在PC机上编辑好的程序, 然后下载到目标板上测试执行。
2.2.3 搭建NFS环境
首先, 在装有redhat9.0的PC主机上执行setup命令, 弹出菜单界面后选中System services进入系统服务选项菜单, 在其中选中[*]nfs, 然后退出setup界面返回到命令提示符下。
编辑/etc/exports文件, 将这个默认的空文件修改为只有一行内容:/ (rw) , 保存退出后执行如下命令以启动NFS服务:service nfs restart, 如果每个启动项的结果都显示为OK, 则说明配置成功。
2.2.4 配置TFTP服务
进入System services菜单界面, 选中tftp一项, 并去掉ipchains和iptables两项服务。
然后, 退出setup界面, 执行service xinetd restart命令以启动TFTP服务。
3 Linux下读串口程序的开发设计
前面已经介绍过, 嵌入式网关的功能在本质上是实现RS232串口到无线局域网的数据转发, 所以应用层软件实际上就是读串口数据, 借助于公共缓冲区, 打成标准的TCP数据包, 利用无线网卡实现数据的发送。
在Linux系统中, 串口的驱动由Linux内核的drivers文件夹内的serial.c来实现。在Linux下, /dev是提供给应用层的接口, Linux通过识别/dev下串口设备的主设备号和次设备号, 配合找到底层的串口驱动, 并进行调用。而我们需要做的就是在应用层借助read () 和write () 函数进行读串口程序的开发。
读串口程序设计大致可以分为打开串口、配置串口、读串口三个步骤。其中, 打开串口可以使用open_port函数来实现。配置串口可以使用set_opt函数来实现。读串口操作可以使用read () 函数来实现。
4 嵌入式Linux下的网络编程
4.1 Linux网络编程基础
Linux中的网络编程是通过socket接口来进行的。系统在pc机与ARM开发板之间通过一个可靠的面向连接的网络套接字服务, 使得嵌入式网关可以通过连有无线网卡的usb口与连有无线ap的pc机进行数据交换。
4.2 Linux网络编程模型
在客户端/服务器模式中, 一个服务程序通常在一个指定的地址监听对服务的请求, 当一个客户对这个服务的地址提出了连接请求。此时, 服务程序被激活, 它创建一个子进程为客户提供服务, 而父进程继续在原地址监听。在子进程完成了相应的操作后, 服务器关闭此连接套接字, 并结束此子进程。
4.3 Linux下socket与读串口程序的综合编程
在这里, 我们的嵌入式网关被看作是客户端, 无线局域网的pc节点被看作是服务器端。通过socket编程和读串口程序的综合, 可以在实现服务器和客户端网络连接的基础上, 完成读串口写网口的操作以及数据的转发、传输和接收。
在client.c程序编辑完成后, 使用Linux下ARM的交叉编译工具arm-linux-gcc将其编译成ARM芯片上可运行的应用程序client:arm-linux-gcc-o client client.c
然后再将client通过网口下载到ARM开发板上。同时在服务器端编辑编译server程序, 配置好双方的ip地址之后就可以执行应用程序实现开发板和主机之间的通讯。实验证明, 我们可以在服务器端接收到来自ZigBee协调点的数据信息。
测试成功后我们还需要将客户端应用程序client添加到ramdisk文件系统中, 然后再将其压缩的映像文件ramdisk.gz下载烧写到开发板的flash上。同时, 我们还需要修改系统脚本/etc/rc.sysinit, 使开发板能够在系统启动后自动加载无线网卡驱动和客户端应用程序client。
5 结束语
和通用计算机不同, 嵌入式系统是面向应用、产品和用户的。本文就是结合实际需求, 以应用为基础, 详细介绍了嵌入式设备--网关开发设计和实现的整体过程, 并在实际项目中得到了检验, 希望能对其他嵌入式系统产品的开发有一定的借鉴意义。
参考文献
[1]许先斌, 熊慧军, 李洲, 等.基于ARM9的嵌入式Linux开发流程的研究[J].微计算机信息, 2006:87-89.
[2]尤盈盈, 孟利民.构建嵌入式Linux交叉编译环境[J].计算机与数字工程, 2006:30-32.
[3]李驹光, 郑耿, 江泽明.嵌入式Linux系统开发详解[M].清华大学出版社, 2006:166-182.
[4]王丹, 祝跃飞, 李勤, 等.基于Linux2.6内核的嵌入式VPN网关实现[J].微电子学与计算机, 2006:137-140.
[5]孙琼.嵌入式Linux应用程序开发详解[M].人民邮电出版社, 2006.