MC68VZ328的智能家庭网关的解决方案
摘要:本文给出Motorola VZ328芯片实现的智能家庭网关的解决方案。该方案中给出智能家庭网关的硬件体系结构和软件体系结构。该方案可以实现通过Internet网和智能家庭网关对家庭内部网络上的家电设备进行控制,并且实现远程自动报警功能。也对智能家庭网在系统中,实现网络功能的TCP/IP协议开发作出说明。
关键词:智能家庭网关 硬件体系结构 软件体系结构 PPSM TCP/IP
引言
智能家庭网络是信息时代带给人们的又一个高科技产物。它借助现有的计算机网络技术,将家庭内部的各种家电和设备连网,通过网络为人们提供各种丰富、多样、个性、方便、舒适、安全和高效的服务。家庭网络化也是整个社会信息化的一个重要的部分。智能家庭网络系统的基本结构如图1所示。javascript:window.open(this.src);" style="cursor:pointer;"/>
家实现家庭内部信息与家庭外部信息的交换,无疑是家庭连网的目的所在,其实现需要设计一个理想的家庭网关。
1 家庭网关
家庭网关作为家庭网络与Internet间的接口,如图2所示。家庭网关应具有以下的基本功能:
①作为所有外部接入网连接到家庭内部,同时将家庭内部网络连接到外部的一种物理接口;
②使住宅用户可以获得各种家庭服务(包括现有的和未来可能出现的服务)的平台;
③为家庭内部网络中的设备分配IP地址,每个家庭网络中的设备必须拥有唯一的IP地址(仅限于家庭网络内部使用),对于这种仅限于家庭内部使用的IP只能由家庭网关来配置;
④路由功能,家庭网络的复杂性使得内部可能存在多个具有不同物理协议的子协议,家庭网关必须具有路由的功能,将来自Internet的带宽 信息发送给相应的设备,同时也可实现设备间通信及分工合作;
⑤共享宽带连接,使家庭内部的多个PC及其它信息设备有效地共享宽带接入。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2 智能家庭网关的实现
2.1 智能家庭网关的硬件体系结构
智能家庭网关的硬件体系结构如图3所示。
智能家庭网关硬件系统选用Motorola公司的68VZ328处理器芯片,配合4MB的Flash和2MB的SDRAM存储器,对外提供RS232/RS485、USB、I/O和以太网接口,并可以方便地扩展多种智能家庭网络物理接口。
2.2 智能家庭网关的软件体系结构
javascript:window.open(this.src);" style="cursor:pointer;"/>
软件体系结构如图4所示。
在家庭网关的软件系统中,选用Motorola提供的PPSM系统。由于PPSM系统没有提供窗口系统,因此根据家庭网关系统中的实际需要作出适当的修改后,设计出一套窗口操作系统;又由于PPSM系统中没有实现网络功能,因此在对PPSM系统进行修改时添加了TCP/IP协议栈,这样就可以在这个操作系统中实现网络功能了。
3 嵌入式TCP/IP协议栈开发
嵌入式系统中对TCP/IP协议栈的实现方式有硬件固化和软件实现两种。硬件方式是指TCP/IP协议栈用硬件的方式实现,嵌入式系统中直接与TCP/IP协议栈硬件芯片连接,由它实现协议的转换,从而使之与互联网相连接。但这无疑增加了硬件成本,对一些功能单一的嵌入式设备,连接一个完整的TCP/IP硬件议栈,是一个极大的浪费,而且所增加的成本费用是难以议栈,是个极大的浪费,而且所增加的成本费用是难以接受的。因此在该系统中,选用软件方式实现嵌入式TCP/IP协议具有更大的优势。
高级的操作系统可支持TCP/IP协议族,但我们选用的PPSM系统是不支持的,因此必须根据该系统的实际需要添加对TCP/IP协议族的支持功能。在添加TCP/IP协议族时,根据系统的特点和功能设计出独特的TCP/IP协议族,实现与需要有关的部分,对不需要的协议则不予支持;其次,对于使用的协议根据具体应用作出了必要修改。
javascript:window.open(this.src);" style="cursor:pointer;"/>
在该系统中,嵌入式TCP/IP协议栈实现ARP、IP、ICMP、TCP、UDP、HTTP等协议。基本的协议处理程序如力所示。
结合该系统的实际情况,构建嵌入式TCP用于控制动作的有限机模型如图6所示。在一些对于嵌入式系统不必要的地方做了修改、简化,但仍保持与标准TCP协议的一致性。
在设计嵌入式Web服务器,时系统中TCP中上只支持HTTP协议,嵌入式系统把数据采集、运行参数等当前实时数据存入存储器中网页的相关位置。对任何TC连接,每次只是支持HTTP协议发送风页服务,并且把每个网页大小限制在一个数据包内,而不会出现IP包的分拆。作为嵌入式Web服务器,TCP连接时只处于被动服务的状态,所以可以将标准TCP有限状态机主动创建连接的SYN-ENT状态、主动关闭连接的FIN-AIT1、FIN-AIT2、CLOSING、TIME-AIT状态省去。在设计中,还去掉了CLOSED状态,让它一开始就处于LISTEN状态,来监听客户端的连接请求,避免了主动或被动打开的操作,对此嵌入式场合,更加高效。
在三次握手建立连接的过程中,嵌入式系统作为监听状态的服务器端,始终为被动方,相当于被动打开后的LISTEN状态,等对方发起连接。当它接收到SYN数据片,它发出SYN+ACK数据片并确认它已接收到对方的SYN,此时变为SYN+RECIVED状态。再接收到对方返回的一个仅含ACK的空数据片,则三次握手完成,进入ESTABLISHED状态,之后可以进行TCP数据通信。
javascript:window.open(this.src);" style="cursor:pointer;"/>
在操作系统中,为防止旧的重复连接请求引起混乱,可以用复位RESET控制摄文对这种情况进行处理。收到复位RESET信号后,若处于非同步状态(SYNRECIVED、SYN-SEND),则回到LISTEN状态;若处于任意一种同步状态,它就异常终止连接并通知它的用户在该系统中取消了CLOSE状态,所以收到复位RESET控制报文时,回到LISTEN状态。实际处理时并没有记忆当前的状态,所以不需要作任何操作,并因为始终处于被动状态而从不发复位RESET报文。
在操作系统中,将端口号、IP地址、序列号、窗口尺寸等和响应的传输控制块TCB结构表示不同的连接,为不同的客户请求建立多个连接,一一对应,并发执行。而在嵌入式TC宫实现如此复杂的操作并不现实,故设计中没有记录TCP连接所处的当前状态,也没有分开建立多个TCP连接。分析如下:每从下层协议传来一个报文后,并不能比较报文段中的信息和TCP中的信息来进行处理,因为并没有记忆过去所建连接的有关信息,所以并不知道此连接是否存在及所处状态等,仅仅根据接收包内的有关信息(控制位和有无数据),来判断所处连接状态来进行回应。连接的概述在一定程度上,只是对客户端PC来说的,给它维持一个连接存在的假象。而嵌入式报务器端因为不存储连接的信息,相当于没有连接的存在,对所有连接都响应,才可以在有限系统资源的条件下实现了多连接。
在TCP的连接中,一方由于崩溃等原因造成异常终止或关闭一个连接,会产生半开连接的问题,由于异常的一方丢失了存储的信息,若任一方发数据去,对方会回复复位信号,连接复位。对嵌入式系统来说,当客户机异常且嵌入式系统发数据时,会被回复复位信号;当嵌入式系统异常后,又重新开始时,由于它本来就无存储信息,故没有什么影响。
当网络出现超时、丢失包时,一般用超时重传机制间来重发,而嵌入式系统发包之后,并未保存此包,此不考虑重发问题。当丢包后,绎方接不到确认包,为自己的所发的包丢失,超时重发,而嵌入式系统此时再响应并发包,仍可保证可靠性。
嵌入式系统不记忆TCP连接的序列号,除了第一次建立连接时初始化序列号外,是根据对方发包中的值来确定序列号,因此它不能识别重复报文,而照常回应。把此重复报文的处理工作交给对方处理,仍可满足基本工作要求。对依靠TCP连接的HTTP服务来说,嵌入式服务器仅仅在服务器端响应客户端请求,所接收的一个报文数据报即可传输完成,故不需要考虑失序问题。
javascript:window.open(this.src);" style="cursor:pointer;"/>