资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
Java 在基于在基于 WEB 的嵌入式系统中的应用的嵌入式系统中的应用作者:柯宗武 陈年生 汪自云 转贴自:微计算机信息 点击数: 106 更新时间:2008-12-10【字体: A 】The Application of Embedded System Based on JavaAbstract: This paper discuss the application of Java language in embedded system that based on uClinux, and implement the data displayed with graphics. This project resolve the problem that uClinux did not support Java, and implement the data dynamic displayed with Web. Keyword: Embedded System, 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 页中显示,则便于用户观测数据的变化。上述问题的一种可能的解决方案是将数据转换成图像文件,然后将图像文件传输到远程计算机中显示。然而传输中最花时间的是图像,所以如果能够将图形接口对象和浏览器放在有更多处理能力的地方,比如本地电脑,则与设备之间的通信又可以大大加速。显然,Java Applet 是解决上述问题的一个有效方案。当浏览器访问嵌入了 Java Applet 的网页时,Java Applet 代码就会被下载到本地计算机中运行,绘制图像的工作由 Java Applet 在本地机中完成,嵌入式系统中需要有一个数据传输服务器程序,将采集到的数据传输给 Java Applet 客户程序,Java Applet 客户程序可以反复地连接到服务器以保持图片数据的数据更新。这样,在网络中仅需要传送嵌入式系统所采集的数据,而且解决了嵌入式系统中资源(CPU、内存)不足的问题。同时由于 Java Applet 代码是下载到本地计算机中运行,所以嵌入式操作系统不需要 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 程序主要完成 Web Server 与外部应用程序的交互,从而达到数据处理的目的,最后 Server 端把经过处理的结果返回给 Browser 端。对于嵌入式系统采集的大量实时数据则采用数据传输服务器程序将数据传送到 Browser 端,并用 Java Applet 实现动态显示。系统结构模型如图 1 所示。4 嵌入式系统端程序设计嵌入式系统端采用 BOA 作为 WEB 服务器。本文探讨的嵌入式数据采集系统是基于摩托罗拉 MCF5249嵌入式微处理器,该处理器内部集成了一个片内 12 位-ADC。嵌入式系统端程序主要由两个进程,一个进程负责数据采集并将采集到的数据存放在共享内存中,另一个进程将采集到的数据从共享内存中读出并不断的传输到 Java Applet 客户程序。为了避免 uClinux 操作系统使用共享内存,需要在启动代码 crt0_ram.s 文件中设定系统的最大内存空间,使其小于实际内存,并将该内存空间作为共享内存。其代码如下:define MEM_SIZE 0xa00000上述两个进程对同一共享内存进行访问,需要采用互斥方式,可以采用文件锁方式实现。数据传输服务器程序的核心代码如下:struct sockaddr_in servaddr;serverFd=socket(AF_INET,SOCK_STREAM,0);memset(servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = htonl(INADDR_ANY);servaddr.sin_port = htons(SERVER_PORT);bind(serverFd,(struct sockaddr *)listen(serverFd,5);while(1)connectionFd = accept(serverFd,(struct sockaddr *)NULL,NULL);if (connectionFd=0)unlock(lockname);/解文件锁发送数据由于不同的嵌入式处理器的存储器采用不同的端式,如 Intel X86 变体和 DEC Alpha 使用小端表示,MIPS、PowerPC 采用大端表示,而 IBM、Motorola PowerPC 和 ARM 处理器支持使用两种表示的能力1。所以发送数据时,可能需要使用字节排序函数进行转换,以免数据产生错误。5 使用 Java 编写数据 WEB 显示程序为了实现数据的动态显示需要使用 Java 语言的多线程技术,一个线程用于与嵌入式系统进行通信,以获取需要显示的数据,一个线程用于绘制动态图形。用 UML 序列图描述如下:GetData 线程保持与嵌入式系统的 TCP 连接,通过网络从嵌入式系统获取数据。DrawGraph 线程用于绘制动态图形。两个线程采用轮询的方式实现线程的同步,由 GetData 对象提供一个公共方法返回一个标志值,DrawGraph 线程周期性地轮询该方法,以判断数据是否更新,从而决定是否返回数据。通常嵌入式系统采集的数据采用无符号 byte 和无符号 short 类型来存储,而 Java 语言不支持这些数据类型,但在 DataInputStream 类中提供 readUnsignedByte()和 readUnsignedShort()两个方法来读取这些数据类型并自动转换成等价的 int 类型2。6 结束语Java 语言作为一种网络化的语言在网络编程中具有很大的优势,在嵌入式系统应用中充分使用 Java 语言的特点,可以使嵌入式系统设计得更加灵活,界面更加友好。参考文献:1 M.Tim Jones.嵌入式系统 TCP/IP 应用层协议M. 北京:电子工业出版社,2003.2 Elliotte Rusty Harold.Java 网络编程M.北京:中国电力出版社,2001.作者简介:柯宗武(1968-),男,讲师,主要研究方向:计算机网络、嵌入式系统,Email:kzwpublic.hs.hb.cn 或 kezongwu163.com通讯地址:湖北黄石湖北师范学院计算机科学系 邮编 435002
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号