Java在基于WEB的嵌入式系统中的应用[作者:柯宗武陈年生汪自云转贴自:微计算机信息点击数:106更新时间:2008-12-10【字体:A】TheApplicationofEmbeddedSystemBasedonJavaAbstract:ThispaperdiscusstheapplicationofJavalanguageinembeddedsystemthatbasedonuClinux,andimplementthedatadisplayedwithgraphics.ThisprojectresolvetheproblemthatuClinuxdidnotsupportJava,andimplementthedatadynamicdisplayedwithWeb.Keyword:EmbeddedSystem,uClinux,WEB,Java摘要:该文提出了一种基于uClinux嵌入式操作系统的嵌入式系统中,使用Java实现嵌入式实时数据采集系统中数据在WEB中实时图形化显示的方案。该方案弥补uClinux不支持java的缺憾,实现了嵌入式数据采集系统数据的动态WEB显示。关键字:嵌入式系统、uClinux、WEB、Java1.引言嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式系统已广泛应用于移动通信、医疗电子设备、信息家电、无线网络、工业控制和国防军事等社会生活的各个领域。为适应嵌入式分布处理结构和应用上网需求,面向21世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。针对外部联网要求,嵌入设备必需配有通信接口,相应需要TCP/IP协议簇软件支持;由于家用电器相互关联(如防盗报警、灯光能源控制、影视设备和信息终端交换信息)及实验现场仪器的协调工作等要求,新一代嵌入式设备还需具备IEEE1394、USB、CAN、Bluetooth或IrDA通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。而WEB浏览器是一种很自然的用来控制嵌入式设备的途径,无论是通过Internet还是直接和嵌入式设备连接。嵌入式操作系统是嵌入式系统的灵魂,目前有很多流行的嵌入式操作系统如Nucleus、VxWorks、uClinux等操作系统。由于嵌入式uClinux操作系统的内核定制高度灵活性,开发者可以很容易地对其进行按需配置,来满足实际应用需要。又由于uClinux是源代码公开,因此uClinux操作系统被广泛应用于嵌入式系统的开发。在嵌入式系统应用中,通常需要将信息以图形或图像的方式进行显示,以提高系统使用界面的友好度。而uClinux只支持基于C语言的CGI方式编写动态网页,很难实现复杂的动态图形显示。Java语言是第一个从根本上以网络化观念设计的语言。随着Internet的持续发展Java是一种适合创建新一代网络应用程序的语言。它为许多Internet应用程序的关键问题---其中平台独立性、安全性和国际字符集最为重要---提供了解决方案,这些问题在其它语言中是很难解决的。特别是Java支持多线程编程,使编写动态图形显示程序变得非常简单。本文论述了基于uClinux的嵌入式系统中应用Java技术将信息以图形或图像的方式在WEB中进行动态显示的解决方案。2.问题的提出及其解决方案嵌入式系统在工业控制系统的应用中,经常会遇到这样的需求,嵌入式系统负责数据的采集,而采集到的数据需要通过网络传输到远程计算机上并以WEB页方式显示,通常采集到的数据是随时间发生变化的动态数据,在显示这些数据时,如果能够用动态图形在WEB页中显示,则便于用户观测数据的变化。上述问题的一种可能的解决方案是将数据转换成图像文件,然后将图像文件传输到远程计算机中显示。然而传输中最花时间的是图像,所以如果能够将图形接口对象和浏览器放在有更多处理能力的地方,比如本地电脑,则与设备之间的通信又可以大大加速。显然,JavaApplet是解决上述问题的一个有效方案。当浏览器访问嵌入了JavaApplet的网页时,JavaApplet代码就会被下载到本地计算机中运行,绘制图像的工作由JavaApplet在本地机中完成,嵌入式系统中需要有一个数据传输服务器程序,将采集到的数据传输给JavaApplet客户程序,JavaApplet客户程序可以反复地连接到服务器以保持图片数据的数据更新。这样,在网络中仅需要传送嵌入式系统所采集的数据,而且解决了嵌入式系统中资源(CPU、内存)不足的问题。同时由于JavaApplet代码是下载到本地计算机中运行,所以嵌入式操作系统不需要Java虚拟机,从而解决了uclinux不支持java的问题。3.系统结构设计系统采用Browser/Server模型来完成基于Web的数据采集系统的数据实时显示,Browser端和Server端作为相互独立的两部分通过HTTP协议进行通信,其过程分为四步:建立连接、发送请求、发送应答和关闭连接。Browser端通过HTTP协议向Server端发送请求,Server端经过处理以HTML文本格式返回应答信息,Browser端对接收到的信息根据HTML定义的格式解释为网页形式在Browser端显示。Server端等待进程收到Browser端的请求信息后,做出相应应答。Browser端的请求有两种:静态网页请求和实时动态数据请求。Server端收到Browser端的静态网页请求时,对其地址路径做出解析并发送应答,通过HTTP协议传回Browser端。而当Browser端发送的是少量实时动态数据请求时,Server端要借助公共网关接口CGI的功能实现对服务器功能的扩展,CGI程序主要完成WebServer与外部应用程序的交互,从而达到数据处理的目的,最后Server端把经过处理的结果返回给Browser端。对于嵌入式系统采集的大量实时数据则采用数据传输服务器程序将数据传送到Browser端,并用JavaApplet实现动态显示。系统结构模型如图1所示。4.嵌入式系统端程序设计嵌入式系统端采用BOA作为WEB服务器。本文探讨的嵌入式数据采集系统是基于摩托罗拉MCF5249嵌入式微处理器,该处理器内部集成了一个片内12位∑-ΔADC。嵌入式系统端程序主要由两个进程,一个进程负责数据采集并将采集到的数据存放在共享内存中,另一个进程将采集到的数据从共享内存中读出并不断的传输到JavaApplet客户程序。为了避免uClinux操作系统使用共享内存,需要在启动代码crt0_ram.s文件中设定系统的最大内存空间,使其小于实际内存,并将该内存空间作为共享内存。其代码如下:#defineMEM_SIZE0xa00000上述两个进程对同一共享内存进行访问,需要采用互斥方式,可以采用文件锁方式实现。数据传输服务器程序的核心代码如下:structsockaddr_inservaddr;serverFd=socket(AF_INET,SOCK_STREAM,0);memset(&servaddr,0,sizeof(servaddr));servaddr.sin_family=AF_INET;servaddr.sin_addr.s_addr=htonl(INADDR_ANY);servaddr.sin_port=htons(SERVER_PORT);bind(serverFd,(structsockaddr*)&servaddr,sizeof(servaddr));listen(serverFd,5);while(1){connectionFd=accept(serverFd,(structsockaddr*)NULL,NULL);if(connectionFd=0){unlock(lockname);//解文件锁发送数据}}由于不同的嵌入式处理器的存储器采用不同的端式,如IntelX86变体和DECAlpha使用小端表示,MIPS、PowerPC采用大端表示,而IBM、MotorolaPowerPC和ARM处理器支持使用两种表示的能力[1]。所以发送数据时,可能需要使用字节排序函数进行转换,以免数据产生错误。5.使用Java编写数据WEB显示程序为了实现数据的动态显示需要使用Java语言的多线程技术,一个线程用于与嵌入式系统进行通信,以获取需要显示的数据,一个线程用于绘制动态图形。用UML序列图描述如下:GetData线程保持与嵌入式系统的TCP连接,通过网络从嵌入式系统获取数据。DrawGraph线程用于绘制动态图形。两个线程采用轮询的方式实现线程的同步,由GetData对象提供一个公共方法返回一个标志值,DrawGraph线程周期性地轮询该方法,以判断数据是否更新,从而决定是否返回数据。通常嵌入式系统采集的数据采用无符号byte和无符号short类型来存储,而Java语言不支持这些数据类型,但在DataInputStream类中提供readUnsignedByte()和readUnsignedShort()两个方法来读取这些数据类型并自动转换成等价的int类型[2]。6.结束语Java语言作为一种网络化的语言在网络编程中具有很大的优势,在嵌入式系统应用中充分使用Java语言的特点,可以使嵌入式系统设计得更加灵活,界面更加友好。参考文献:1M.TimJones.嵌入式系统TCP/IP应用层协议[M].北京:电子工业出版社,2003.2ElliotteRustyHarold.Java网络编程[M].北京:中国电力出版社,2001.作者简介:柯宗武(1968--),男,讲师,主要研究方向:计算机网络、嵌入式系统,Email:kzw@public.hs.hb.cn或kezongwu@163.com通讯地址:湖北黄石湖北师范学院计算机科学系邮编435002