手机端
or

欢迎您加入我爱方案网QQ群

1.智能产品外包服务群(311606115)
2.嵌入式项目开发群(491609563)

基于Lpc2290的智能家庭网关系统的设计及实现

伍艮常| 家庭网关,信息家电,嵌入式Web服务器,uclinux,LPC2290,Boa,CGI| 2010-11-29
1598 收藏
分享到: 
每日精选
热门文章
热门方案

【中心议题】

  • 介绍了家庭网关
  • 设计了基于Lpc2290的智能家庭网关系统

【解决方案】

  • 采用LPC2290芯片作为开发平台
  • 移植linuxTCP/IP协议栈,移植Boa,结合CGI进行应用编程

0 引言

在网络技术飞速发展的今天,各种信息家电如雨后春笋,不断涌现,家庭数字化将是近一段时期发展的方向和主流。很显然,构建家庭网络是一项关键技术,而家庭网络的目标是将一个家庭中各种信息家电(如掌上电脑、数字电视机、游戏机、音响等)及其它控制设备(如电表、水表、煤气表、能源自动控制、保安系统等)通过网络连接成一个袖珍型的局域网,集成控制网和信息网两者的功能和服务。

不久的将来,大部分家庭内部将会有多个信息设备(包括电脑、信息家电和控制设备)同时联入Internet。鉴于以下几个原因:①从技术层面讲,由于现行的IP地址是由IPv4标准决定的,从而也决定了IP地址不可能无限增加,人们对IP地址的需求不断增大与IP地址资源的有限性的矛盾日益凸显,虽然Internet发展迅速,但是可用的IP地址还是越来越少,要想在ISP处申请一个新的IP地址已不是很容易的事了;②传统的信息家电其控制器大多数由8位或16位单片机组成,速度慢且资源有限,实现TCP/IP协议比较困难;这是现状,也属于技术上的原因。③从经济的角度看,单个的信息设备与Internet互连,很不经济;④从管理和维护的角度看,单个的信息设备与Internet互连,增加了其难度;⑤从人们的使用习惯看,普遍希望能用一个控制器对多种设备进行控制。由此可见,在目前没有一种主导的联网解决方案的情况下,为了解决各种信息设备之间的互联和互操作性问题,在构建家庭网络时,通常设置一个家庭网关。

本设计以LPC2290微处理器为中心,设计硬件平台,移植linux作为嵌入式操作系统,移植TCP/IP协议栈作为该系统的协议栈,移植Boa,结合CGI进行应用编程,实现嵌入式Web服务器的基本功能,用软件编程的方法实现用户、嵌入式Web服务器、网关应用程序以及信息家电之间的动态交互,使得外部网络能够访问和控制家庭内部的信息设备。比如:家庭安全系统的实时监控;家庭室内温度、湿度的实时监控;对于三表(水表、电表、煤气表)能够在线读取数据。

1 硬件设计

1·1 微控制器的选定

通常嵌入式系统硬件包括微控制器、存储器、外设接口等,其核心是嵌入式微控制器。LPC2290是一款基于16/32ARM7TDMI-S,并支持实时仿真和跟踪的CPU。对代码规模有严格控制的应用可使用16Thumb模式将代码规模降低30%以上,而性能的损失却很小。由于LPC2290采用144脚封装、极低的功耗、多个32位定时器、810ADC2路高级CAN通道、PWM通道以及多达9个外部中断,这款微控制器特别适合自动化应用,还适用于工业控制、医疗系统、访问控制和故障容限维护总线等应用领域。通过总线的设置, LPC2290拥有76GPIO。由于内置了宽范围的串行通信接口,LPC2290也非常适合于通信网关、协议转换器、嵌入式软件调制解调器以及其它各种类型的应用。鉴于此,我们选用它作为系统的微控制器。

 

1·2 存储器的选定

由于伪静态存储器(PSRAM)使用了更小的存储单元结构,除了将裸片尺寸减小20% (这意味着更低的生产成本),较小的单元尺寸还能缩短存储器的信号线长度,降低电容并提高性能。它还具有高密度存储器阵列和类似SRAM的特性,以及成本低的特点。

MT45W4MW16这种型号的伪静态存储器(PSRAM)价格适中、性价比高、采购方便。

FLASH存储器又称闪存,是一种可在线多次擦除的非易失性存储器,即掉电后数据不会丢失。FLASH存储器还具有体积小、功耗低、抗振性强等优点,是嵌入式系统的首选存储设备。它已经逐步取代其他半导体存储元件,成为嵌入式系统中主要数据和程序载体。

NANDNOR FLASH是现在市场上两种主要的非易失闪存芯片,这两种类型的FLASH区别在于:NOR类型FLASH可以按照字节访问,所以存放在FLASH里的程序可以直接执行,NAND类型FLASH是串行访问的,需要先把程序读取到内存然后再从内存中运行。

NOR型相比,NAND型闪存的优点是容量大,但是NAND型的速度比较慢,因为他的I/O端口只有8(16),要完成地址和数据的传输就必需让这些信号轮流传送。NANDFLASH具有极高的单元密度,容量可以比较大,价格相对便宜。鉴于以上理由:本设计采用SAMSUNG公司的NANDFLASH存储设备K9F2808U0C

1·3 以太网控制芯片的选定

由台湾Realtek公司生产的RTL8019AS以太网控制器,由于其优良的性能、低廉的价格,使其在市场上10Mbps网卡中占有相当的比例。

RTL8019AS主要性能(1)符合Ethernet IIIEEE802·3 ( 10Base510Base210BaseT)标准;

(2)全双工,收发可同时达到10Mbps的速率;

(3)内置16KBSRAM,用于收发缓冲,降低对主处理器的速度要求;

(4)支持8/16位数据总线, 8个中断申请线以及16I/O口地址选择;

(5)支持UTPAUIBNCPNP自动检测模式,还支持对10BaseT拓扑结构的自动极性修正;

(6)允许4个诊断LED引脚可编程输出;

(7)100脚的PQFP封装,缩小了PCB尺寸。

(8)支持外接闪烁存储器读写操作,支持I/O口地址的完全解码,具有LED指示功能

(9)同时还具有接口简单不用转换芯片,价格便宜,带宽充裕,软件移植性好,易于采购。

 

(10)兼容RTL8019控制软件和NE2000

鉴于上述原因,选用RTL8019AS作为本设计的以太网控制器芯片。

1·4 接口的选定

选用比较通用的RJ45RS232接口:

2 软件设计

2·1 uclinux的移植

uclinuxu(开头的u)表示Micro,C表示Contro,luclinux就是Micro-Control-Linux的缩写,也就是“微控制器领域中的linux系统”。uclinuxLineo公司的主打产品,linux的一个变种,是一种优秀的嵌入式linux版本,同时也是开放源码的嵌入式linux的典范之作, uclinuxlinux主要的区别在于两者的内存管理机制和进程调度管理机制。同时,为了适应嵌入式应用的需求,它采用了romfs文件系统, romfs是一种相对简单、占用空间较小的、只读的文件系统,禁止写操作,并对linux上的C语言库glibc做了简化。但uclinux仍然保留了linux的大多数的优点:开放性、稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持和标准丰富的APIuClinux经过了多方面的小型化改造,形成了一个高度优化的、代码紧凑的嵌入式linux,并已成功地移植到很多平台上,支持的硬件系统达10余种,ARM7TDMI便是其支持的硬件平台之一。

Fedora5·0的特点就是更新快、易学易用、非常适合新手使用。同时,每半年一版的更新速度,则能适应最新硬件的发展,还可以整合各开源软件的最新版本,也使得老手们对fedora5·0爱不释手。鉴于此,我们选用Fedora5·0系统。

先在fedora5·0系统下对uclinux源代码进行交叉编译,然后将生成的镜像文件image. rom下载到系统中。

 

2·2 TCP/IP协议栈的移植

在以太网中,数据传递靠的是MAC,而并不是IP地址,也就是靠MAC地址来识别。在局域网中,网络中实际传输的是“帧”,帧里面包含有目标主机的MAC地址。在以太网中,一台主机和另一台主机进行直接通信,必须要知道目标主机的MAC地址,而这个目标MAC地址的获得是通过ARP(地址解析协议)获得的。

“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。由此可见,为了保证系统在以太网的通信,首先要实现ARP协议。又由于嵌入式Web服务器要能在Internet上通信,在网络层一定要实现IP协议,还要实现能报告数据传送差错等情况的ICMP协议。在应用层主要实现远端主机通过浏览器的访问控制方式,所以要实现HTTP协议。而HTTP协议是基于TCP协议实现传输的,所以还需要TCP协议。其他的常用协议由于考虑硬件资源受限,在本系统中被忽略。

2·3 驱动程序的设计

程序流程图如图2所示。

 

在这里主要介绍RTL8019AS网卡驱动程序的编写。

RTL8019AS有三种配置模式:跳线方式、即插即用方式(P&P)、串行Flash配置方式, P&P模式用于PC机中、在此我们选用跳线方式。RTL8019AS实现了基于Ethernet协议的MAC层的全部功能,内置16KBSRAM、双DMA通道和FIFO完成数据包的接收和发送功能。首先要对RTL8019AS进行复位,并将其设置为跳线模式;然后对RTL8019AS的工作参数进行设置,以使其开始工作;接下来读写RTL8019ASRAM,以完成数据包的接收和发送。

2·4 嵌入式web服务器的设计

对于嵌入式家庭网关而言,设计嵌入式web服务器是其应用的核心。从功能上讲Web服务器监听客户端的服务请求,并根据客户请求的类型提供相应服务。我们所设计的嵌入式Web服务器,是指将Web服务器引入到家庭网关lpc2290芯片中,并驻留其中有限的代码空间内。与传统的Web应用相比,简化了系统结构,并将家庭内部信息采集和信息发布都集成到lpc2290芯片中。它可以向任何访问它的internet上的合法用户提供统一的基于浏览器方式的操作和控制界面。

2·4·1 HTTP协议

HTTP是一个应用层协议,使用TCP作为传输层协议。HTTP服务器端口是TCP80端口。HTTP.l 0不支持持续连接,由客户进程发起建立一条同服务器进程的TCP连接,然后发出请求并读取服务器进程的响应,服务器进程关闭连接表示本次响应结束。这样,对每一次请求和响应,都要通过TCP3次握手建立连接,造成对网络资源的浪费。HTTP1·1HTTP1·0最大的改进就是支持了持续连接,客户端和服务器使用协议的Connection头相互协商,在完成一次或数次请求和响应后,文明地切断TCP连接。

2·4·2 公共网关接口CGI

CGI的全称是“公共网关接口”(Common Gateway Interface),同时CGI又是一个用于定义WEB服务器与外部程序之间通信方式的标准,使得外部程序能生成HTML、图象或者其他内容,而服务器处理的方式与那些非外部程序生成的HTML、图象或者其他内容的处理方式是相同的。因此, CGI程序不仅使你能生成静态内容,而且能生成动态内容。使用CGI的原因在于它是一个定义良好并被广泛支持的标准。虽然, JavaActiveX等可以完成CGI程序的功能,但并不是所有浏览器都支持它们。相反,所有浏览器都支持CGI,:LynxIENetscape等。CGI程序的最大特点是可以用任何一种语言编制,可运行在任何一种平台上,只要它符合CGI的规范即可。有许多任务, CGI是最佳的也是唯一的选择,:后端数据库操作等。在此CGI被用作在HTTP服务器上运行外部程序的接口,它允许将其输出结果经HTTP服务器传送给Web浏览器。如果没有CGI,Web服务器就只能提供静态的文档和到其它页面或服务器的链接;有了CGI,程序就可以在后台进行各种动态的操作。根据CGI接口规范,应用程序与Web服务器之间的通讯方法有4,即环境变量、命令行、标准输入与标准输出。环境变量是由Web服务器执行CGI应用程序时设置的与系统相关的变量,CGI1·1规范规定的标准环境变量共有17个。CGI命令行很少涉及,只在进行ISINDEX查询时才用到。当HTTP客户端使用了POST方法时,Web服务器使用标准输入向CGI程序传送信息。CGI程序会将执行结果送到标准输出,此输出可能直接送给用户的浏览器或送给Web服务器请求解释。在各种通讯方法中,使用最广泛的是环境变量。

 

2·4·3 Boa的移植

Boa是一款单任务的HTTP服务器,其特点是:

(1)具有自动生成目录、自动解压文件的功能。

(2)当有多个请求到来时,它并不为每个请求创建进程,也不通过复制自身进程来处理多链接,而是通过建立HTTP请求列表来处理多路HTTP链接请求。

(3)它只为CGI程序创建新的进程。

(4)系统资源利用率高。

嵌入式Web服务器Boa响应请求的方法:如果请求方法为HEAD,则直接向浏览器返回响应首部;如果请求方法为GET,则在返回响应首部的同时,将客户端请求的URL目标文件从服务器上读出,并且发送给客户端浏览器;如果请求方法为POST,则将客户发送过来的表单信息传送给相应的CGI程序,作为CGI的参数来执行CGI程序,并将执行结果发送给客户端浏览器。

fedora5·0系统下对Boa源代码进行交叉编译,便可以生成elf格式的可执行文件boa. uclinux,系统采用的romfs文件系统相对于一般的ext2文件系统需要的空间较少,因此需要采用elf2flt工具将生成的boa的可执行文件由elf格式转换成flat格式,并将其添加到FLASH中。

2·4·4 服务器守护进程的实现

本设计中嵌入式Web服务器要实现的功能主要是家庭内部实时数据和非实时数据的发布。实时数据包括温度、湿度,以及通过视频采集的图像数据。非实时数据包括水表、电表、煤气表等三表的数据。嵌入式Web服务器对这些数据以网页形式发布到Internet,远方客户通过接入Interne,t浏览该服务器发布实时和非实时信息。

采用B/S开发模式,用这种方式开发嵌入式Web服务器应用程序具有很多优点,比如降低客户端的要求,方便客户端的分布使用,客户端的开发和维护费用降低等。

随着网络技术的发展,C/S(客户机/服务器)结构已无法完全满足人们的需要,而且静态网页也无法提供充分的交互功能,动态信息发布相对较困难,B/S结构,Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScriptJavaScript)ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着W indows 98/W indows 2000将浏览器技术植入操作系统内部,这种B/S结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。基于此我们采用B/S方式访问Web服务器上的静态网页,在这个网页中嵌有Java applet文件。

 

客户端的IE浏览器浏览到这个网页时,会自动把网页中标识的Java applet源程序下载到客户端执行。在Java applet源程序中,创建了一个套接字来完成与服务器的通信,获取实时数据。而在服务器上,必须有一个相应的监听程序,负责处理客户端发来的各种请求。

我们采用套接字编程,首先创建一个监听套接字,在与客户端建立新的连接以后,创建一个新的套接字,在子进程中完成具体的操作,最后将数据返回给客户端的浏览器。其流程图如图3所示。

3 结束语

本设计采用LPC2290芯片,移植uclinuxTCP/IP协议栈,实现嵌入式Web服务器的基本功能。能很好地实现实时和非实时数据的发布,并接受远端网络上的监控。该设计为信息家电的推广、普及奠定了良好的基础,具有较高的理论研究价值和实用价值。

点赞

深圳市中电网络技术有限公司 Copyright© www.52solution.com 粤ICP备10202284号