当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]MIPS目标平台CLDC的Java虚拟机移植

1 Java虚拟机简介
    Java ME(Java platform Micro Edition),以前称J2ME,是为机顶盒、移动电话和PDA等嵌入式消费电子设备提供的Java语言平台,它包括虚拟机和一系列标准化的Java API(Application Programming Interface)。Java语言的平台无关性使其广泛应用于各行各业,而嵌入式领域Java ME技术的发展尤为迅猛。截至2008年底,JavaME技术已应用于全球26亿部移动手机、部署了60亿个Java Cards、4 000万台以上的蓝光设备和TV设备,遍及移动开发的各个领域。
    Java虚拟机(JVM,Java Virtual Machine)是实现Java语言平台无关性的关键。Java虚拟机是Java技术的重要组成部分,它是一个抽象的运算机器,有一套自己的指令集,可在运行时操纵内存的各个区域。
    嵌入式的Java虚拟机主要有两大类:
    (1)CLDC VM
    CLDC VM(Connected Limited Device Configuration Virtual Machine)是连接受限的设备配置的虚拟机,以前称为KVM(Kilobyte Virtual Machine,千字节虚拟机)。CLDC VM一般用于内存很少(如1 MB以内)、CPU处理能力弱(如几MHz)的嵌入式设备。Sun公司于2000年发布CLDC 1.0规范及KVM的参考实现,之后于2006年将KVM参考实现转到开源社区,并重命名为phoneME Fea-ture。至2009年,phoneME Feature先后经历了MR1、MR2、MR3、MR4版。本文基于phoneME Feature MR4。通常CLDC VM的结构如图1所示。

    其中MIDlet是各种Java ME应用程序,运行于CLDC虚拟机之上。
    (2)CDC VM
    CDC VM(Conntected Device Configuration Virtual Machine)是已连接的设备配置的虚拟机,简称CVM。CVM一般用于智能手机、数字机顶盒、PDA等嵌入式设备。
    phoneME Feature MR4软件是一个高性能的虚拟机,它不仅遵循CLDC规范,还实现了高效的资源管理,以及对多任务的支持等。与早期的KVM虚拟机相比,CLDC VM增加了如下特征:
    ◆支持CLDC 1.0、CLDC 1.1和CLDC 1.1.1;
    ◆改进Java应用程序的启动时间和执行速度;
    ◆支持AOT(Ahead-Of-Time,提前)编译技术;
    ◆支持原地执行(in-place execution)功能;
    ◆支持多任务功能。


2 CLDC VM移植原理
    phoneME Feature软件是一个功能完整的虚拟机,它通过了Sun公司的TCK(Technology Compatibility Kit,技术兼容工具包)兼容测试集。phoneME Feature直接支持两种CPU架构:x86架构和ARM架构。在这两种架构上移植仅需少量修改,而要移植到MIPS架构则需做较多修改。phoneME Feature软件的结构如图2所示。

    ①JavaCall API移植层:该层提取目标平台的需求,实现必须移植的函数集,是基于目标平台的实现。pho-neME Feature的主要移植工作集中于此层。
    ②MIDP/CLDC层:是嵌入式Java虚拟机的核心部分。其中CLDC为资源受限的设备定义了应用编程接口和虚拟机的基础函数集,MIDP(Mobile Information Device Profile,移动信息设备简表)则提供应用程序环境和应用程序所需的大量服务。
    ③PCSL(Portable Common Services Library,可移植的通用服务库)层:提供底层服务,供CLDC、MIDP和其他可选包调用。
    ④抽象层:是一套函数集,所有扩展JSR包通过抽象层接口与MIDP/CLDC层进行交互。
    ⑤扩展JSR包:为虚拟机提供扩展功能。扩展JSR包种类很多,可根据需要进行扩展。如支持蓝牙和OBEX(对象交换)功能的JSR82扩展包、支持Web服务的JSR172包、支持定位功能的JSR179包、支持在线支付功能的JSR229包等。
    Java虚拟机的移植首先要确定两件事:一是目标CPU,二是目标OS(操作系统)。OS移植比较简单,移植工作集中在虚拟机自身和核心CLDC库上;而CPU移植则较为复杂,因为汇编解释器和适配的编译器十分依赖于目标CPU架构。

[!--empirenews.page--]
3 CLDC VM移植过程
    phoneME Feature软件结构实现了完全的模块化。它使用一个名为includeDB的配置数据库来管理项目源文件和头文件,可根据目标CPU架构和目标OS需求在配置数据库内添加或修改相应的文件。使用includeDB配置数据库,避免了#ifdef宏散布于整个源码区间,还避免了使用复杂的#ifdef嵌套语句结构。
    includeDB配置数据库位于src/vm/includeDB,它是纯文本文件,针对目标CPU架构和目标OS需求进行添加或修改的头文件和函数文件都应在该配置文件中进行注册。
    检查includeDB文件,可立即得到在OS移植或CPU移植时需要注意的文件。在建立移植软件时,还使用ineludeDB配置数据库来跟踪文件的依赖关系。为MIPS目标平台建立的头文件和函数文件都需要添加到includeDB数据库。
    phoneME Feature软件具有良好的模块化结构,其移植工作集中于JavaCall层。移植模型如图3所示。

    针对MIPS目标架构的移植过程如下:
    (1)OS移植
    目标OS为经裁剪的通用Linux系统,内核为2.6.12版。phoneME Feature软件的大多数代码文件都与OS无关,只有极少的几个文件涉及目标OS。OS移植接口分为两部分:一部分为OS通用部分,它位于源码目录src/vm/share/runtime下,适合大多数OS;另一部分则针对目标OS,位于源码目录src/vm/os/linux下。
    OS指定的移植接口由/src/vm/share/runtime目录下的OS.hpp和OS.cpp文件进行定义。实际上这两个文件只实现了一个Os类,向虚拟机提供特殊功能。
    OS移植接口的其他部分包括文件系统(由OsFile.hpp和OsFile.cpp定义)、线程(由Thread.hpp和Thread.cpp定义)、事件处理(由Task.hpp、Task.cpp、TaskCon-text.cpp、TaskContext.hpp和TaskList.hpp等定义)、内存管理(由OsMemory.hpp和OsMemory.cpp等定义)等。针对目标OS的移植,需建立/src/vm/os/mips目录(以MIPS目标架构命名),在目录下需创建下列文件:JVM_mips.hpp、JVM_mips.cpp;OS_mips.hpp、OS_mips.cpp;OsFile_mips.hpp、OsFile_mips.cpp;OsMemo-ry_mips.hpp、OsMemory_mips.cpp;OsMisc_mips.hpp、OsMisc_mips.cpp。
    根据需要,可能还需创建OsSocket_mips、Globals_mips等文件。这些文件是文件系统、线程、事件处理、内存管理等在目标OS的具体实现。如OS_mips.cpp中实现了取寄存器值、取PC指针值、为PC指针值赋值、sleep等方法。需强调的是,OS_mips.cpp文件中有两个方法非常重要,且必须实现:
    ◆static void initialize();//用于初始化OS,如定时器、线//程、I/O等
    ◆static void dispose();//用于撤销初始化的所有工作,//清除线程和其他OS活动
    (2)CPU移植
    CPU移植的工作主要有两个:一是移植解释器和解释器的产生器;二是移植相应的编译器。
    CPU移植的难点在于编译器的优化和调整,因为虚拟机的汇编解释器和相应的编译器依赖于具体的CPU架构。建立/src/vm/cpu/mips目录,并编写相关文件。以解释器的产生器为例,需要编写(包括头文件和源文件):Assembler_mips、SourceAssembler_mips、SourceMacros_mips、Disassembler_mips、TemplateTable_mips、Interpret-erGenerator_mips、NativeGenerator_mips、SharedStubs_mips、InterpreterStubs_mips、CompilerStubs_mips等。
    (3)JavaCall移植
    JavaCall函数集被分成多个子系统。这些子系统包括:图形子系统、内存管理、LCD显示、字体、文件和目录、Socket套接字等。
    以移植文件系统接口为例:CLDC虚拟机使用了类似POSIX标准C库的文件API,由于目标平台是基于Linux的,所以不需要映射OsFile_read()方法到目标操作系统。要确保CLDC虚拟机能正确操作OS下的文件,需要验证以下接口:
    ◆im OsFile_remove(const JvmPathChar*filename)
    ◆bool OsFile_rename(const JvmPathChar*from,constJvmPathChar*to)
    ◆im OsFile_open(const JvmPathChar*filename,constchar*mode)
    ◆int OsFile_close(OsFile_Handle handle)
    ◆int OsFile_flush(OsFile_Handle handle)
    ◆size_t OsFile_read(OsFile_Handle handle,void*buffer,size_t size,size_t count)
    ◆size_t OsFile_write(OsFile_Handle handle,const void*buffer,size_t size,size_t count)
    以上接口实现了文件的常用操作,如文件的打开、读、写、关闭、删除、重命名等。


4 CLDC VM移植验证
    完成以上移植所需的修改后,建立Makefile,设置所需的环境变量,使得phoneME Feature成功通过交叉编译,生成目标系统所需的CLDC VM虚拟机。
    移植的验证较为简单,将交叉编译生成的cldc_vm可执行文件、库文件以及Demo示例文件复制到目标平台,运行并检查结果。命令结构是:bin/cldc_vm.exe-class-path location-of-compiled-applications/classes classname。


5 CLDC VM移植优化
    CLDC虚拟机的移植优化可以从几方面进行:
    ①优化参数。在虚拟机建立过程中,phoneME提供了很多选项,针对不同的目标平台使用不同的选项。
    ②Thumb指令集的开关。ARM等CPU支持Thumb指令集,phoneME也支持Thumb指令集。如果目标平台支持Thumb指令集,可以开启Thumb开关,加快虚拟机执行速度。
    ③其他。对虚拟机的优化还可从编译器自身、内存子系统等方面进行优化。


结 语
    基于phoneME Feature软件生成的CLDC虚拟机与早期的KVM虚拟机相比,性能得到较大改善,尤其是在多任务支持方面(早期的KVM虚拟机不支持多任务功能)。笔者在Broadcom 7403和NXP 225上成功实现CLDC VM的移植。下一步的工作是在国产数字电视SoC芯片上实现CLDC VM的移植。目前多核技术是计算机行业的研究热点,并逐步向嵌入式领域发展,因此支持多核CPU技术和并行技术的CLDC虚拟机将是未来的研究方向之一。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

崭新的全局存储池、统一政策管理,以及业界首创的虚拟机感应存储管理功能,让 FlashArray 客户减少高达 58% 的总体拥有成本 (TCO)

关键字: 虚拟机 存储 数据中心

上海2023年2月16日 /美通社/ -- 近日,诺华中国宣布与中国红十字基金会正式启动"中国地中海贫血救助项目"广西地区专项援助,将在当地定向资助困难家庭地中海贫血患儿,同时通过相关医生培...

关键字: BSP 控制 移植 大众

在下述的内容中,小编将会对云计算的相关消息予以报道,如果云计算是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: 云计算 服务器 虚拟机

北京2023年2月6日 /美通社/ -- 近日,浪潮正式推出G7系列超融合一体机。该新品基于面向智慧计算场景优化的新一代G7服务器平台和功能丰富的云软件栈,通过双擎驱动一体化底座整合了更多的生态解决方案。同时,丰富的硬件...

关键字: 虚拟机 虚拟化 数字化 接口

北京2022年12月7日 /美通社/ -- 2022年12月3日,由高博医学(血液病)广东研究中心南方春富(儿童)血液病研究院、南方医科大学南方医院共同主办的高博医学论坛·华南造血干细胞移植论坛通过线下线上...

关键字: 移植 HD PID 血细胞

捐款近4000万 上海2022年12月7日 /美通社/ -- 2022年12月7日下午,中芯国际"芯肝宝贝计划"十年纪念暨2022年度捐赠仪式在上海仁济医院举行。十年来,该项目捐赠善款总额近4000...

关键字: 中芯国际 移植

北京2022年11月14日 /美通社/ -- 2022年10月,高博医学(血液病)北京研究中心北京高博博仁医院造血干细胞移植科迎来了五周岁"生日"。在吴彤主任带领下,移植科于2017年从无到有,历经五...

关键字: 移植 OS MT CD

(全球TMT2022年11月11日讯)浪潮信息推出了基于AMD平台的双路服务器NF5280A6。NF5280A6是基于全新一代AMD EPYC™ Milan处理器设计的双路机架服务器。该产品满足...

关键字: AMD CPU 虚拟机 BSP

上海2022年11月6日 /美通社/ -- 在第五届中国国际进口博览会期间,武田制药携5款创新产品亮相武田罕见遗传与血液疾病领域专场发布会。用于移植后抗巨细胞病毒(CMV)感染或疾病治疗[1]的马立巴韦[2]迎来&quo...

关键字: 移植 BSP CD FDA
关闭
关闭