基于嵌入式TCP/IP协议栈的信息家电连接Internet单芯片解决方案
2009-02-05
作者:牟英峰 徐殿国 张东来
摘 要: 以分析和实验为基础,研究了嵌入式TCP/IP协议栈SX-Stack的结构及运行原理,提出了使用SX-Stack构造单芯片嵌入式网络服务器,将信息家电接入Internet的新方案。该服务器的组成、构造方法和工作原理,并比较现有的使用PC/网关设备的接入方案,分析了该方案的优点。单芯片嵌入式网络服务器中SX-Stack与用户应用程序的接口方法,用户登录软件及信息家电监测软件的设计方法。
关键词: 嵌入式TCP/IP 单芯片 嵌入式网络服务器 信息家电 Internet
SX52BD是Ubicom公司推出的RISC结构的8位高性能CMOS微处理器,可以进行高速运算、灵活的I/O口控制和高效的数据操作。SX52BD具有4KB的EE/FLASH ROM和262字节的SRAM。与现有的8位微处理器相比,其运算速度可达50MIPS,加上优化的多数为单时钟周期的指令集,SX52BD吞吐量大为提高。SX52BD比常规MCU快20倍的运算速度、可靠的性能和可重复编程的结构,使得精简的TCP/IP能够在其中可靠运行。
SX-Stack运行在以SX52BD为基础的硬件平台上,是一组可配置的多种Internet协议的组合。这些协议按照分层协议栈的方式精心组织,包括应用层的HTTP、DHCP、SMTP,传输层的TCP、UDP,网络层的IP/ICMP、ARP,通过链路层和物理层(如Ethernet)进行Internet数据的交互。SX-Stack的结构如图1所示。SX-Stack利用SX52BD的高速处理能力,按每次1字节的方式处理TCP/IP数据包。这样,避免了在有限数量的RAM中缓存大量数据,使得控制器可以处理比其内部RAM总数更多的数据包。
利用嵌入的SX-Stack,Webserver能够通过Hypertext Transfer Protocol(HTTP)与任何浏览器通讯,能够提供各种类型的资源,如HTML、图片、PDF文件等。这些资源使用一种特殊的文件系统URI,被存放在容量为32KB的外部EEPROM中。这种文件系统可包含任意多的子目录,对URL的长度也没有限制。
1 信息家电单芯片服务器方案的提出
从信息家电的远程在线访问的角度考虑,对信息家电监测和控制时存在两种情况:(1)远程访问时,信息家电的通信数据量不大,56Kbps的通信速率即可满足要求;(2)信息家电对时实性的要求不高,其时延可以在1秒以上。所以,SX-Stack提供的功能和SX52BD的处理速度能够满足上述条件下信息家电对接入Internet微处理器的要求。
在这种情况下,构造了家电网络服务器XWebServer,其结构如图2所示。XWebServer主要由三部分组成,即SX52BD微处理器、RTL8019AS以太网控制器、24LC256(E2PROM)。在SX52BD中运行用户程序和SX-Stack;在E2PROM中存放XWebServer的各种Web资源;RTL8019AS是Ethernet控制器,负责SX52BD和Ethernet的数据传递。在家电已具备SPI(Serial Peripheral Interface)接口的条件下,使用家庭自动化总线HAB(Home Automation Bus)作为XWebServer与家电的接口,在HAB上使用的通
信协议为自主开发的简单家庭网络协议SHNP(Simple Home Networks Protocol)。
图3是使用XWebServer的接入方法与常规接入方法的比较。使用XWebServer的接入方案省却了PC机或网关设备,在数据量不大的情况下,完全可以取代PC或网关设备。家电通过SPI接口与XWebServer连接,经由Ethernet接入住宅小区的信息服务中心。通过XWebServer,家电具备了连接Internet的能力。
用户自己开发的服务器应用程序需要放在应用层上才能运行。服务器应用程序是靠位于传输层TCP的Application Program Interface(API)来与下面各层进行数据交换的。在SX-Stack中存在若干个实质为子程序模块的API函数,应用程序必须通过这些函数将数据组合成符合TCP/IP格式的数据包。为了提供给用户登录程序和家庭电气设备监测控制软件模块更充分的程序空间,移除了与HTTP服务无关的软件功能模块和函数,保留了HTTP、TCP、IP/ICMP。这些程序模块足以使服务器运行,响应浏览器的请求。XWebServer的协议栈结构如图4所示。
2 用户登录和家庭电气设备监测控制软件模块的设计
远程浏览器完成TCP链接的初始化。服务器等待远程浏览器的请求,是一个被动的设备。当接收到建立TCP链接的请求后,服务器建立一个由远程TCP端口号和远程IP地址组成的套接字,并使用TCP/IP栈中的API和这个套接字,来识别随后收到的来自远程客户机浏览器的数据包。
在用户登录前,远程浏览器必须获得XWebServer中的Web资源home.html,由此才能进行登录和控制。GET为其请求数据包中的第一个词,表示这个请求是用来接收Web资源的。XWebServer仅对HTTP请求的第一行Get/home.html/HTTP1.0进行检查和解释。因为除了数据外,所有的响应信息数据都是常量。服务器的响应数据包已经由程序定制好,存放在XWebServer中。响应的HTTP数据头和资源一起存放在E2PROM中。服务器与浏览器的链接建立后,服务器检查接收的请求数据,然后调用E2PROM的程序模块,将home.html的内容发送给远程浏览器。Web页的存储范围为0000H~7FF0H,大约32KB,而8字节的用户名和8字节的密码可以存放在外围E2PROM存储区末端(7FF0H~8000H)。E2PROM的资源分布如图5所示。
在处理浏览器提交的数据信息时,按照以下两个步骤进行程序设计:首先,服务器要根据远程浏览器传送过来的数据信息,决定服务器的HTTP服务的方式;其次,将Web资源发送给远程浏览器或使用ProcessPostData函数来处理浏览器提交的数据。
在TCP连接的初始化完成后,在应用层的用户登录程序使用函数TCPAppRxData()来接收传输层的数据。这个函数对数据包中收到的字节都调用一次。用户程序首先检查ASCII码是P还是G以确定XWebServer对HTTP服务的方式。在服务器接收的数据包中,P表示以Post 开始的用户提交的数据信息第一个ASCII码;G表示以Get开始的用户请求Web资源的第一个ASCII码,缺省的HTTP服务的方式是Get,即XWebServer响应远程浏览器对Web资源的请求。程序通过设定标志位HTTP_METHOD来确定HTTP服务的方式。确定HTTP服务方式的流程如图6所示。
图6中的ProcessPostData是处理提交数据的子程序。ProcessPostData主要由两部分组成:一部分为登录信息校验和登录标志的设定;另一部分为监控数据的获得并发送到SPI接口。登录流程如图7所示。程序必须在确认用户成功登录后才能对提交的控制数据进行处理,否则将错误指示信息err.htm发送给远程浏览器。程序通过判断数据包中提交数据区的name属性来确定是登录数据还是监控数据。例如,在index.htm中,对于Username文本框,name=“u”;对于Password文本框,name=“p”。
用户在登录和密码文本框中输入用户名和密码后提交登录信息。校验用户登录信息可通过两种途径:第一种途径,系统上电复位后,先从E2PROM中取出用户名和密码存放在RAM中,当用户程序接收到来自TCP数据包中的登录数据后,采用逐个字节比较的方法进行用户信息的校验;第二种途径,当用户程序接收到来自TCP数据包中的登录数据后,再按字节从E2PROM中取出用户名和密码进行校验。与第二种方法相比,第一种方法能够满足XWebServer对实时性的要求。为提高RAM资源的利用率,在校验结束后,用户程序释放16个字节的RAM资源。
处理监控信息的流程如图8所示。如果用户成功登录,就从数据区中取出监控用的数据,直接送到SPI接口,否则给出错误信息err.htm。用户服务程序并不对数据区中的数据进行解释,只是将其按原始的排列方式从SPI接口输出。在整体数据流动的过程中,XWebServer起到了从以太网数据流到SPI接口数据流的转换作用。
以太网作为接口,以SX52BD为硬件平台,利用软件化的嵌入式TCP/IP,能够实现HTTP服务。SX-Stack在家电网络接入Internet中的应用,为其接入Internet提供了一种无需额外的PC或网关设备的解决方案。这种低成本、高性能的方案,具有可靠、灵活的特点,适用于通讯速率不大于56Kbps、允许时延大于1秒、需要连接Internet的家庭自动化设备。用户可以根据需要,按照本文提供的方法,构造自己的网络服务器,可为普通的电气设备或系统如公共服务设备、家庭医疗保健设备、工业自动化系统等,赋予接入Internet的能力。
参考文献
1 Ubicom, Inc. SX48BD/SX52BD Datasheet. 2000,3
2 Ubicom,Inc.Ethernet SX-Stack Internet Connectivity User's Manual. 2000,11
3 Ubicom, Inc. Christopher Waters.HTTP Virtual Peripheral Implementation. 2000.9
4 郭 旭.Home.Net 模型/架构研究.单片机与嵌入式系统应用, 2001;(6)