发信人: shengb (天际征鸿), 信区: Embedded
标 题: 在vxWorks上使用JAVA[1]
发信站: BBS 水木清华站 (Mon Jul 22 08:51:50 2002)
前两天闲着没事,想在vxWorks上编译java程序玩玩,因此找了sun的j2me,经过一番折
腾,总算能在vxWorks上看见可爱的"Hello World"。
1. J2ME简介
Java平台包括Standard版、Enterprise版和Micro版。Micro版,也就是所谓的J2ME,
是专门设计为供内存量小和处理能力较低的移动设备作为Java开发平台使用。
然而,由于移动设备覆盖的范围非常广,而且有着各种互不相同的硬件配置,因此
不太可能为所有的移动设备提供一种普遍适用的开发平台。所以J2ME定义了两种类型的
规范,configurations 和profiles。
1.1 Configuration
J2ME通过对Configuration的抽象来处理大量千差万别的移动设备硬件功能。J2ME
configuration定义了特定设备可用的虚拟机和低级API,同时提供相应的开发基础。目
前可用的Configuration有两种,即连接设备配置CDC(Connected Device Configuration
)和连接有限设备配置CLDC(Connected Limited Device Configuration)。
1.1.1 连接设备配置
CDC应用于相对内存量较大、处理器能力较强的移动设备。CDC规范采用了内存优化
的虚拟机,也就是所谓的CVM,通过它提供等同标准JVM的特性。按照Sun的文档说明,
CDC针对新型PDA、智能通讯设备和机顶盒之类的高端设备。为了能够受到CDC支持,移动
设备必须至少具备以下条件:
用于CVM和Java API库的2 MB内存。
32位微处理器或者控制器。
可用网络连接,最好是高带宽连接。
1.1.2 连结有限设备配置
CDC的要求有利于昂贵的移动电话、IR扫描仪或类似产品。CLDC则主要针对那些更轻
便、更便宜、不能满足CDC要求的设备。
CLDC采用了更轻型的虚拟机,设计为在较低内存环境下运行。这种JVM的参考实现也
就是所谓的KVM,虚拟机的大小是以千字节度量的。CLDC 的设备需求如下:
最低160KB的内存,其中128KB用于KVM和运行时库
最低16位25-MHz处理器
有限的用户界面功能
没有(或者间歇的)低带宽网络连接
由于受到严格的内存容量限制,KVM因此缺乏一些完整JVM所提供的特性,这就是说,
KVM在如此低内存要求下不得不在浮点数学计算、反应和对finalizers类的支持等方面对
性能折中。使用CLDC的开发者在编译程序之后必须预先采用J2ME开发工具包所提供的一
种检查工具对他们的源代码进行校验。
1.2 profile
如果说配置为应用程序提供了基础,那么profile则提供了应用程序的框架。profile
定义了一整套J2ME应用程序可用的API类而且专门针对给定配置创建。Sun推出了2种可用
的参考J2ME profile:基础(Foundation)和移动信息设备profile MIDP(Mobile infor
mation Device Profile)。
基础profile主要用于CDC配置,因而其虚拟机几乎等同于标准的虚拟机。这意味着,
使用基础profile的开发人员必须访问完整实现的J2SE特性集。
MIDP连同功能较低的CLDC配置一道为开发今天的移动设备应用程序提供了你最可能用
到的Java平台。MIDP支持J2SE类库的有限子集而且为在CLDC配置上使用定义了定制的用户
接口和输入/输出类。
一般来说,J2SE代码无须或者很少修改即可采用CDC和基础profile运行。然而,由于
主机硬件受到限制,CLDC和MIDP profile只提供了很有限的功能集合。因此它J2SE应用程
序不大可能在不加修改的情况下就运行在这类平台上,除非它把自己限制在两种平台的
API交集之内(严重地限制了其功能)。因为CLDC的要求对应了今天大多数手持设备的功
能,所以任何J2SE应用软件常常需要修改才能运行在给定的设备上
Sun公司的J2ME支持两种嵌入式系统,嵌入式Linux以及Wind River的vxWorks实时系
统。
Top
7 楼tonkeycn(I Un known...)回复于 2002-07-22 17:30:56 得分 0
发信人: shengb (天际征鸿), 信区: Embedded
标 题: 在vxWorks上使用JAVA[2]
发信站: BBS 水木清华站 (Mon Jul 22 09:14:26 2002)
J2ME软件采用j2me_cdc-1_0-fcs-src-ar-22_Jan_2001.zip,该压缩包内自带
vxWorks5.4 PENTIUM的BSP,所使用的网卡为3Com 10/100 PCI NIC(3C90x)
主机环境:
(1)Java 2 SDK, SE, v1.3或更新
(2)Tornado 2.0 development system
(3)Solaris 7 OS或更新
(4)SPARC hardware
(5)128 MB RAM (推荐256 MB)
目标机环境:
(1)Pentium hardware
(2)VxWorks 5.4 OS
(3)至少32 MB RAM
注意事项:
(1)j2me CDC自带的sysEl3c90xEnd.c驱动程序在编译时有许多未定义的宏,因此建议
用Tornado II的替换掉;
(2)在Solaris 7 OS下$WIND_BASE/target/h/arch/下没有simnt目录,但是在文件中
用到了该目录下的一些文件,因此建议从PC下拷贝一个到该目录下。
(3)在编译时make建议使用gnumake,且版本至少为3.74,也可以用Tornado II自带的
make。
(4)主机目标机建议在同一网络中
发信人: shengb (天际征鸿), 信区: Embedded
标 题: 在vxWorks上使用JAVA[3]
发信站: BBS 水木清华站 (Mon Jul 22 09:29:25 2002)
编译前准备工作:
(1)解压缩j2me_cdc-1_0-fcs-src-ar-22_Jan_2001.zip,假设为$J2ME
(2)编辑$J2ME/cdcfoundation/build/vxworks/config_vxworks.mk,设置相应环境变
量:
Target IP address
Host IP address
Host name
Base directory for Tornado software (wind_base)
(3)修改J2SDK的环境变量,将其指向实际机器中J2SDK所在的位置
编译j2me
(1)在$J2ME/cdcfoundation/build/vxworks/目录下,键入gnumake CVM_DEBUG=true
(2)在编译完成后,继续编译vxWorks镜像,键入gnumake download_image
编译完成后,在$J2ME/cdcfoundation/build/vxworks/target/的PC-boot和PC/default
目录下均生成vxWorks以及vxWorks.sym文件。只有PC/default下的包含了CVM的目标代码
cvm.o。因此需要下载PC/default/vxWorks。
(3)制作启动软盘。如果已经有系统启动软盘,就可以不做。
启动目标机下载vxWorks
在目标机控制台下,进入到$J2ME/cdcfoundation/build/vxworks/bin目录。
->sp runJava,"-Djava.class.path=../testclasses.zip HelloWorld"
这时,在屏幕上就可以看见可爱的HelloWorld.字符
用户应用程序
(1)javac –bootclasspath=$J2ME/cdcfoundation/build/vxworks/btclasses.zip /
$J2ME/cdcfoundation/build/vxworks/lib/cdc.jar Hello.java
(2)jar –cf hello.jar Hello.class
(3)在目标机控制台,
-> sp runJava,”-Djava.class.path=<AppDir>/hello.jar Hello”
或在windSh,
-> runJava,”-Djava.class.path=<AppDir>/hello.jar Hello”
呵呵,这个时候再看见“Hello World”,觉得这个时候觉得比任何时候都可爱。
Hello.java即为普通的J2SE应用程序。