随着移动终端设备的蓬勃发展,市场上出现了各式各样的硬件设备和软件平台。如何使业务的设计者从网络运营商中独立出来以便设计出可以跨平台的应用程序,将其置于业务提供商(或设备生产商)的网络中,从而可供各种移动终端的用户下载和安装,目前这一模式已成为一种新型的商业模式。鉴于此,Sun公司在Java跨平台特性的基础上,提出可以保证在消费电子设备和嵌入式终端运行的Java 2 Micro Edition(J2ME)。 目前关注J2ME的技术人员有两类: - 应用程序设计者(如游戏程序员、移动商务设计人员等),必须保证他们设计的java程序符合J2ME规范;
- 嵌入式设备生产商,必须保证他们生产的设备支持J2ME应用程序。
目前大部分技术文献主要集中讨论前者,而涉及到后者的不多。但对嵌入式生产厂家来说,后者属于产品的核心技术,因此本文的讨论属于第二类。 本文提出了一种J2ME在嵌入式Linux操作系统中实现的方案,主要包括应用于移动电话、PDA等信息家电的KVM 1.1和MIDP 2.0的移植。解决了J2ME运行平台中较难解决的中文化问题;实现了具有通过GPRS无线通信模块上网,利用嵌入式浏览器ViewML浏览网页,下载安装并运行MIDlet程序等一系列功能的比较完整的J2ME运行平台的方案,并且通过修改Tiny-X图形平台的驱动,实现了该J2ME运行平台的触摸屏输入操作。 1 J2ME平台 J2ME是Java 2标准版本的微型版本。支持各种各样的消费类产品和嵌入式设备,如移动电话、PDA、互联网可视电话、数字机顶盒、车载娱乐和导航系统、网络交换设备以及信息家电等。J2ME是为了那些使用有限的能源、有限的网络连接(通常是无线连接)以及有限图形用户界面能力的设备开发的。它最初的目标是16位或32位处理器,16M 时钟频率,512KB或更少内存的设备。J2ME用配置(Configuration)来封装虚拟机。配置由一个虚拟机和一组支持的核心API组成。配置层上面是配置文件(Profile)。在一个配置上面可以有多个不同的配置文件。配置文件是在配置的基础上进一步细分一组特定设备,并定义一组支持这类设备的类库。鉴于应用J2ME的硬件平台有着较大的差异,所以根据硬件的差异分成两类:CLDC(Connected Limited Device Configuration)与基于其上的Foundation Profile和Personal Profile,以及CDC(Connected Device Configuration)与基于其上的MIDP(Mobile Information Device Profile)。 J2ME的CLDC包括K虚拟机(KVM)和一组核心类库,主要是针对用户接口简单、内存较小、网络运行时连时断以及带宽较窄的小型无线设备。其中KVM是JVM的一个实现,特别用于如移动电话、PDA等设备。关于J2ME的配置及配置文件间的关系,如图1所示。 图1 J2ME的配置及配置文件间的关系 MIDP具体定义了J2ME适用的硬件和软件框架,并提供了这个框架要实现的基本功能及标准接口;应用开发者可以基于这个框架开发出各种应用。MIDP 2.0定义了一系列软件接口,包括基本输入/输出、图形用户接口、网络、事件机制、文件系统、应用管理系统、游戏接口、声音输出接口和安全机制。 2 J2ME运行平台的总体构建 整个J2ME运行平台的总体结构如图2所示。系统采用三星S3C2410芯片作为CPU构建成接有触摸屏和LCD的硬件系统;通过串口连接GPRS无线通信模块,为无线上网提供硬件条件。 图2 J2ME运行平台的总体结构 软件部分,以运行在后台的Tiny-X图形界面服务器为MIDP界面提供服务。在完成GPRS接入网络的情况下,使用嵌入式浏览器ViewML来浏览网页,选择J2ME应用程序。选定应用程序后,调用MIDP下载并安装J2ME应用程序。最后,在J2ME运行时环境运行J2ME程序。图3显示了这个流程。 图3 下载并运行J2ME应用
2.1 Tiny-X Sun公司发布的MIDP参考实现是针对i386的,其图形界面使用X Window。要使MIDP能够运行在嵌入式系统中,我们必须对MIDP的图形界面作相应的移植。在这里,我们使用Tiny-X。 Tiny-X——“极小的X”,是一个为嵌入式系统而开发的紧缩型的X Window服务器。它由SuSE赞助支援开发,由XFree86的核心小组成员Keith Packard一手设计开发。Tiny-X的设计目标是让系统在极少内存的情况下良好运行,并且 Tiny-X采用的DDX技术,使整个X系统能在内存接近不足的情况下,仍然能够保持稳定正常的工作。Tiny-X极小的体积和内存占用量,非常适合作为嵌入式系统来使用。
2.2 GPRS无线通信模块 GPRS无线通信模块采用SIEMENS公司的MC35IT。该模块支持GSM/GPRS协议、支持标准RS-232接口,用串口通过AT命令集可以实现对模块的控制操作,实现短信、电话以及GPRS访问网络等功能。
2.3 ViewML ViewML是第一个开放源代码,专为嵌入式Linux平台设计和开发的浏览器。该浏览器能够在占用少量RAM和ROM资源的情况下使用一个高品质的显示引擎。Century Software公司对ViewML界面不够友好的缺点进行了改进,使之能够适应PDA的显示特点。
2.4 触摸屏支持 要让MIDP支持触摸屏操作,实际上就是让Tiny-X支持触摸屏输入。需要在编译Tiny-X时,将触摸屏的编译选项选上。在这个基础上,再对触摸屏作坐标校正。 经过这两步,对Tiny-X交叉编译,得到的Tiny-X服务器就能用触摸屏对MIDP进行操作了。
3 J2ME的移植 Sun公司在其网站上提供了J2ME参考实现的源程序包,所谓J2ME的移植,就是依据本身目标平台的特性作相应的修改,使之最终能运行在目标平台上。J2ME的移植包括KVM的移植和MIDP的移植。
3.1 KVM移植 系统使用的版本是1.1,其参考实现的文件名为j2me_cldc-1_1-fcs-src-winunix.zip。根据CLDC的移植说明文件所说,如果目标平台有支持足够的底层API的话,几乎可以不用作任何修改,就可以将整个KVM直接移植到您的操作系统上。但在实现时,由于底层操作系统的特性不同,需要修改一下KVM的原始程序。这些特性包括:如何开启文件档案、如何动态取得内存、如何将窗口系统移植上去、如何处理不同CPU之问的特性、如何处理64bits运算等。 在移植过程中,主要涉及的问题有:对64bits长整数的支持、浮点数的支持、Endianness特性的考虑、类路径的问题、内存管理问题、图形用户接口问题、平台规格及特性问题以及中文化问题等。
3.2 MIDP移植 系统使用的MIDP版本是2.0。Sun在网上发布的参考实现名字是midp.2_0-src-linux-i686.zip。MIDP定义了一系列适用于移动通信设备之上的Java软件接口。其中,有很多与系统平台相关的接口。所谓MIDP移植,最基本的就是修改MIDP参考实现里面与系统平台不匹配的接口。换言之,就是用目标系统平台的API替换MIDP参考实现中与之不匹配的API,使MIDP能在目标平台上正确地执行所有要求的功能。当然,移植还包括对MIDP性能的优化。 MIDP由多个不同的模块组成,包括事件处理、记录管理系统(RMS)、图形用户接口、安全机制、网络、应用管理系统(AMS)、OTA支持、Push Functionality、游戏接口以及I18N。这些模块中,基本上分成两层来实现:①Java层。用Java编程语言编写,与平台无关。这部分可以不用修改。②本地层。用C编程语言实现,与平台相关。这部分用到的API如果与系统平台提供的API不一致,就需要作修改。
3.3 J2ME的中文化 J2ME运行平台的中文化问题是比较难解决的,包括KVM和MIDP的中文化。不过,这两者的中文化均可以归结为双字节问题。在SUN发布的CLDC和MIDP源代码中,并没有考虑双字节字符问题,这是它不支持中文的重要原因。另外,J2ME里面以Unicode字符来处理中文,需要考虑字符转换,以实现字符处理的本地化。 4 利用GPRS模块实现接入互联网 中国移动在GPRS与Internet网中间建立了许多相当于ISP的网关支持节点(GGSN),以连接GPRS网与外部的Internet网。GPRS模块可以通过拨"*99***1#"登录到GGSN上动态分配到Internet网的IP地址。其问GPRS模块与网关的通信要符合点对点协议(Point to Point Protocol,PPP),其中身份验证时用户名、密码均为空。使用PPP协议登录后,则可以通过GGSN接上Internet。 若要通过GPRS模块进行网络连接和传输数据,则需要建立PPP连接。若要建立PPP连接,可以通过串口向GPRS模块发送相关AT命令,进行拨号。chat和pppd是两个可以实现拨号自动化的程序。chat程序的用途是拨号,启动对方pppd并等待提示,根据提示输入用户名和密码等登录信息。pppd的用途是建立并维持与服务器的PPP连接,传输数据。 使用GPRS模块拨号上网过程如下:由本地pppd调用chat程序;chat程序负责拨号登录,启动服务器端的pppd。然后chat结束;由本地pppd与服务器端的pppd进行握手,建立PPP连接。 系统浏览器使用嵌入式浏览器ViewML,通过对ViewML的源程序作一定的修改,把ViewML的浏览功能和MIDP的下载、安装MIDlet程序功能结合起来,实现通过GPRS无线通信模块上网,下载、安装并运行MIDlet程序等一系列的功能。 5 结束语 本文描述了在嵌入式Linux下支持触摸屏操作的J2ME运行平台的设计和实现,主要包括系统的实现方式、J2ME的移植、互联网接入等问题。该平台已经在独立研发的多功能PDA上成功运行。
|