来源:期刊VIP网所属分类:微电子发布时间:2014-03-14浏览:次
摘要:ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包括ARM9TDMI和ARM9E-S等系列。文章发表在《网络新媒体技术》上,是微电子论文范文,供同行参考。
关键词:移动应用开发,J2ME,CLDC,KVM移植
ARM微处理器是一种高性能、低功耗的32位微处器,它被广泛应用于嵌入式系统中。ARM9代表了ARM公司主流的处理器,已经在手持电话、机顶盒、数码相机、GPS、个人数字助理以及因特网设备等方面有了广泛的应用。
0 引言
目前移动手机上运行的操作系统种类繁多,包括Linux、Windows Mobile、Palm OS、Symbian OS、Google Android等。Java和J2ME技术克服了手机平台多样性造成的应用程序移植困难的问题,为移动应用程序的跨平台开发和运行提供了可能。
J2ME是Sun公司面向具有有限硬件资源的设备的Java版本,这些资源受限的设备包括PDA、手机、机顶盒和其它消费电子设备与嵌入式设备[1]。CLDC[2]和MIDP[3]已经成为用于移动手机应用开发的J2ME标准。
J2ME/CLDC技术的核心是Sun公司的KVM(Kilobyte Virtual Machine)[4]。KVM最初设计是用于资源受限的低端移动设备的JVM(Java virtual machine)。正是JVM的存在才使得Java具有“一次编译,处处运行”的特征[5,6],因此,KVM的移植便成为J2ME应用于移动开发的首要前提。
1 KVM的代码执行机制
为了更好地理解KVM的移植过程,我们需要对KVM的代码执行机制作一些研究。
在图1中,文本格式的Java源程序(文件后缀名为.java)由Java编译器编译为Java字节码文件(文件后缀名为.class),且每一个Java类对应一个.class文件。
在运行阶段,Java虚拟机先装入或加载指定的“.class”文件,进行必要的校验,然后找到指定的入口方法(例如main),由interpreter翻译运行“.class”文件中的字节码[7]。虚拟机在执行过程中根据需要(如创建新对象等)动态加载用户程序的其他“.class”文件或者系统类库的“.class”文件并校验和运行[8]。Java API类库(一个大型的现成软件组件(类)集合)是一些为用户程序运行提供支持或起辅助作用的“.class”格式的标准的Java类,它是Java语言的一个标准组成部分。加载过程通常都是被推迟到必要的时候才进行。 JVM中的interpreter一般采用解释的方式执行字节码。它按照程序执行的顺序逐条取出指令字节码,翻译成一段等效的本地代码序列来执行,这个解释执行过程一直重复到程序的最后一条指令执行完为止[7]。
下面我们再来看一下KVM的代码执行机制(如图2所示)。
图2 KVM的代码执行机制
我们知道,KVM需要运行在硬件资源受限的嵌入式设备上,因此有必要对虚拟机的功能进行简化,提高其运行效率,并减小其体积。为此,将虚拟机原本复杂而耗资源的大部分校验工作移出虚拟机,交由PC开发平台上一个工具软件preverify来进行预验证或预校验,从而减轻移动设备的负担,而在KVM中只留下一个简单的轻量级的校验器[6,9]。
因此,我们在编译和预验证用于KVM的Java代码时,需要将-classpath选项指定为CLDC类库的路径,然后将预验证过的class文件下载到目标设备由KVM来执行。
2 CLDC参考实现
移植所用的KVM源码是来自SUN公司的CLDC 1.1参考实现。表1中描述了该CLDC 1.1参考实现源码包中的目录结构[4]。
[[子目录\&说明\&api\&CLDC需要的核心Java类库源代码\&bin\&包含kvm等所有二进制执行文件和已编译好的核心Java类库的class文件\&build\&用于编译生成面向不同操作系统平台的KVM的makefile\&doc\&相关的说明文档\&jam\&KVM的可选组件JAM(Java Application Manager)的源码\&kvm\&面向不同平台的KVM的源码\&tools\&一些需要用到的工具软件的源码,如JavaCodeCompact,preverifier,KDWP Debug Proxy\&]]
3 CLDC参考实现的build过程
KVM移植主要是采用合适的编译工具对CLDC 1.1参考实现中的源码进行编译,以生成运行在目标平台上的kvm可执行文件。
用于源码build的Makefile文件根据源码目录的层次结构相应地被组织成一个层次结构。主Makefile文件放在build目录中,由这里跳转去执行其它Makefile文件。在build目录中,根据目标平台上操作系统的不同类型分别对应有不同的主Makefile文件。
在主Makefile文件中可以确定要参与build的代码段,api部分是必选的,kdp和jcc都是可选的。因为要应用于嵌入式系统,故未选择kdp。对于JAM(Java Application Management),为简化起见没有选择该部分。所有的选择可以通过修改Makefile文件中的相关开关选择项值进行,也可在命令行中用参数覆盖。
以ARM+Linux为目标平台对CLDC参考实现进行build的操作很简单,只需进入build/linux目录,通过make命令执行那个主Makefile文件,就开始build过程了。下面的图3描述了其build过程。
4 CLDC参考实现的源码编译
KVM移植所采用的编译环境为:Java编译器Javac 1.6.0_22,(Fedora9自带)X86平台Gcc 4.3.0编译器和交叉编译器Arm-Linux-Gcc 4.3.2。
首先,KVM的运行平台是ARM+Linux平台,所以需要在KVM\VmUnix\build目录中将用于编译KVM的Makefile文件中的编译器设置为交叉编译器Arm-Linux-Gcc[10],即:
象所采用的编译器。
其次,在最终对KVM源码进行编译之前,需要先对所需工具软件和API类库进行编译。因此,CLDC源码编译过程包括以下四个阶段:编译生成preverify工具,编译和预验证API类库,编译生成JCC工具,编译和连接生成KVM。
电子期刊论文投稿:《网络新媒体技术》原刊名为《微计算机应用》,是由中国科学院声学研究所主办的公开发行的科技刊物,创刊于1980年,系月刊。主要刊登有关计算机科学研究与应用方面的研究论文和研究报告, 在科学试验和现代化管理中计算机应用方面所取得的新进展、新成果、新技术、新方法。邮发代号:2-304。
期刊VIP网,您身边的高端学术顾问
文章名称: 浅析ARM9平台KVM移植微电子论文范文
文章地址: http://www.qikanvip.com/weidianzi/12258.html