1、基于 S3C451OB 芯片 KVM 虚拟机的移植和测试ARM 开发与应用文章编号:10080570(2007)10 2012702基于$3C4510B 芯片 KVM 虚拟机的移植和测试KVMVirtualMachineTransplantandTestBasedon$3C4510BChip(西南科技大学) 周显军李众立张俊然ZHOUXlANJUNLlZHONGLlZHANGJUNRAN摘要:本文简单介绍$3C4510B 芯片,uClinux 操作系统,适合于平台各异,网络条件相对较差的嵌入式 Java 虚拟机一 KVM.给出了 KVM 移植到$3C4510B 芯片上的 uClinux 操作系
2、统的方案,具体实现过程,功能测试和性能测试.关键字:KVM;$3C4510B;uClinux;移植;测试中图分类号:TP302 文献标识码:BAbstract:Thispaperintroducesthechipof$3C4510B,uClinuxoperatingsystemandembeddedJavavirtualmachine-KVMwhichhasvariousplatformsandpoorhardwarecondition.Inthispaper,theschemeoftransplantedKVMbasedon$3C4510BchipwhichhasuClinuxoperati
3、ngsystemisputforward,itsrealization,functiontestandperformancetest.Keywords:KVM;$3C4510B;uClinux;transplant;test1 引言针对嵌人式设备的应用程序都是量身定做的,如果想要换一个目标平台.南于产品差异程度不同,导致花很多的工夫从头到尾开发一次,整个产品的研发效率就会大幅度降低.现有的厂商解决这类问题.都会将具有平台差异和平台无关的部分分离开来,以便将来移植的时候.可以将同定不变的地方整个移植过去,以减少研发时间,只需要对具有平台相依的地方做修改.虽然将平台相关和无关代码分离在一定程度上解
4、决了移植的效率问题.但是 Java 语言的平台无关性可以更大程度提高移植的效率问题.Java 编写的应用程序可以运行在任何具有 Java开发平台的机器上,因为 Java 开发平台屏蔽了硬件和操作系统两方面的差异.运用 Java 语言的平台无关性解决应用程序移植问题具有以下三方面的优势:统一开放的编程平台,广大的软件开发商可以开发出适用于具有 Java 平台的应用程序 .软件开发速度加快,具有动态加载应用程序的功能.用一次移植的代价解决以后诸多移植的问题.2KVM 的体系结构和工作机制KVM 是 SUN 公司所提出的适用于连接限制设备配置fCLDC)的 Java 虚拟机.KVM 具有以下四方面的
5、特性:微小化核心:能够在具有比较少内存的移动设备上运行 .可移植:将与底层操作系统相关和无关的代码分离 ,具有高可移植性.模块化和易于定制.尽量做到既“完整“ 又“快速“.而不牺牲其他设计目标 .KVM 虚拟机实际上是一个位于 Java 应用程序和底层操作系统之间的虚拟计算机.它起到的是接口的作用,屏蔽了底层操周显军:硕士研究生基金项目:国家自然科学基金(10376029)作系统的差异,使得 Java 程序无需修改就可以在任何安装了虚拟机的平台上运行.实现了 SUN 公司所谓的“Writeonce.runeverywhere“.2.1KVM 的体系结构KVM 主要由类装载模块,字节码执行模块,
6、线程调度模块,类校验模块,内存管理和垃圾收集模块组成.如图 2.1 所示:图 2.1kvm 体系结构2.2KVM 工作原理为了控制 KVM 的体积,CLDC1.1 仅仅提供了一个核心类函数库和一个 J2ME 开发包.通常.KVM 会占用系统 RAM 的大部分用作 Java 堆,来保存全局的类信息 ,字符串信息和动态执行栈信息.uClinux 操作系统是一个 32 位的嵌人式操作系统,而 Java 堆的最小组成单位是 Cell 也是 32 位,在移植时就不用考虑字节,半字和字的转换问题.由于嵌人式设备中内存和ROM 容量都极其有限.如果按照 PC 上 Java 虚拟机的执行流程显然是行不通的.所
7、以对嵌人式 Java 虚拟机进行必要的裁剪是非常必要的.移植后所追求的目标也就是高效,稳定,资源消耗小.一方面.KVM 本身剔除了复杂而耗资源的 Java 字节码审核器,取而代之的是一个简单的,轻量级审核器,而把原来的大部分工作放到 PC 端来处理 ,从而减轻了移动设备的负担 ;另一方面.通过利用大量的 KVM 本地接口 KNI 来直接调用 uClinux 操作系统的系统调用,可以提升 KVM 的运行速度.KVM 执行流程如图 2.2 所示:3 基于 S3C4510B+uClinux 平台 KVM 的移植本次课题选择在操作系统层面上对嵌人式 Java 虚拟机一KVM 进行移植.冒自控网邮局订阅
8、号:82_946360/_127ARM 开发与应用中文核心期刊微计算机信息(嵌入式与 SOC)2007 年第 23卷第 102 期HelloWorld.java3avaeHelloWorld.classpreverifierHelloWorld.elassverifierinterpreterkvmuC1inux下载图 2.2kvm 执行流程3.1$3C4510B 芯片$3C4510B 芯片是基于以太网应用系统的高性价比 16/32位 RISC 微控制器.内含一个由 ARM 公司设计的 16/32ARM7TDMIRISC 处理器核,ARM7TDMI 为低功耗,高性能 16/32 核.最适合用于
9、对价格及功耗敏感的应用场合.3.2uClinux 操作系统uClinux 是在 Linuxkernel2.0 后出现的一个 Linux 的变种.它的目标是将 Linux 应用于没有内存管理单元的处理器.uClinux 继承了 Linux 的大部分优点:稳定性,各种网络协议栈的支持以及不同类型的文件系统支持等等.它广泛地应用于嵌入式领域,内核精简,并支持很多常用的嵌入式微控制器系列.3.3 编译 fiat 格式的 KVM3.3.1 修改 VmCommon/h/main.h由于实际嵌入式设备存储单元不足和具体的应用领域不一致,需要修改 VmCommorl/h/main.h 从而对 KVM 内部组件
10、进行筛选.在 KVM 移植中,有一些具体的问题.tla:浮点数的支持,大小端的问题,线程管理,内存管理支持和垃圾的回收等的处理均在该文件中进行设置.3.3.2 修改 makefile 文件将 makefile 文件中的编译器设置为 arlneff-gcc.指定 KVM的文件输出格式为 fiat 形式 ,原因是 flat 格式的 KVM 才能在 uClinux 操作系统下正常运行.3.3.3 本地码改写为了提高 KVM 上 Java 程序的运行效率.可以采用本地码来改写原有的 Java 方法.由于跳过了虚拟机这一层.可以较大地缩短运行时间.具体步骤为:Java 端的处理 :寻找并且改写原有的 J
11、ava 方法的名字.C 程序端的处理:编写新的基于 C 的方法函数.3.3.4 编译 preverify 文件类文件经过 preverify 预验证后才能被 KVM 正确的执行.否则会出现 iava/class/Verifyerror.原因是 SUN 公司考虑到嵌入式设备资源有限.将 J,M 的庞大字节码验证机制进行严重的“ 缩水“. 用了一个轻量级机制来保证安全.Preverify 的使用方:preverifyoptionsinputfiles.options 包含以下 7 个参数:一classpathdirectoriesIJARfilesapi 函数路径一ddirectory目标类文件目
12、录一cldc 检测语言的特点一nofinalize 检测是否使用了 finalizersnonative 检测是否使用了本地方法一nofp 检测是否使用了浮点数操作3.4 编译 uClinux 内核和文件系统修改 uClinux 源码;设置 TargetPlatfornlSelection 为 SamSung/4510B,KemelVersionSelection 为 uClinux 一 2.4.x,LibcVersion 为 uClibc:编译 uClinux 生成 romfs.img 文件系统和 1inUX 内核文件.3.5 基于 uClinux 平台 KVM 的运行将 KVM 和预验证的
13、 HelloWodd.class 添加到 romfsfoin 目录下.重新编译 uClinux 的文件系统和内核文件.KVM 的使用方法:kvmoptionsclassfile.options 包含以下 3 个参数:-versionclasspathfilepath一heapsizesizee.g.65536or128kor1M4KVM 移植测试4.1 测试数据BenchMark.java 测试程序用在不同硬件配置的机器上或者是不同 Kernel 的操作系统上对嵌入式 Java 虚拟机进行性能测试.首先分析标准的 BenchMark.java 程序进行性能分析的原理;其次是明白嵌入式操作系统
14、uClinux 无 MMU 的特点 :最后建立可以运用于$3C4510B+uClinux 平台的测试程序即修改后的BenchMark.java.4.2 测试原理BenchMark.java 测试程序中运用 System.curremTimeMmisn函数获得系统的当前时间;利用 getherationTime(intcount)函数统计完成拥有 count 个数据的任务所需要的时间;然后由该任务所涉及到的 count 个数据比上完成该任务所用到的时间即是任务的性能指标.性能指标的单位是每秒针完成某项任务的数据的数目.4.3 测试结果图 4.1 移植后的 KTM 执行测试程序通过预校验 Benc
15、hMark.class 后.运用 KVM 执行 BenchMark.class 可以得到 KVM 在$3C4510B+uClinux 的测试环境上的性能指标.转第 271 页)一128360 元,年邮局订阅号:82.946电子设计的低通滤波环节,使得电路本身也具有一定的抗干扰能力.这比较适合在具有较强的干扰环境中使用,采用改进的逐次逼近试探算法实现对模拟电压的测量或 A/D 变换,提高了采样速率 ,转换电路设计及算法实现简单.测试分辨率和精度较高,具有较好的应用价值厂磊,:兰三/rj一I 系统初始化 fT 下雨 rf 箍出槿 Ji 而 l 竺竺兰 J厂蕊.而l 对分值并塑出 i垂蔓至雯薹r 牙
16、_j 丽鼯j 权值置为 ll厂试葡 1r 百I 权值并输出 lY匝叵至三至二蠹匝图 5 改进的逐次逼近试控主程序框图本文创新点:利用 PWM 技术实现对模拟电压的测量或 A/D变换,既具有较高的分辨率,又具有较好的抗干扰性,且便于采用光电隔离.同时结合利用改进的逐次逼近试探算法大大减少了试探次数,转换电路的设计及转换算法实现简单,A/D 转换分辨率可以根据需要任意设置.具有较好的应用价值.目前市场上 1416 位的 A/D 转换器芯片的销售价格大约在 100 元一 300 元之间.具有相应分辨率的 V/F 转换模块的销售价格约为 100150 元,而采用 PWM 技术设计的 A/D 转换器中所
17、用到的主要芯片或元器件为:运放:8 元:高速比较器 LM3l1或 LM393:2 元:MCU:15 元 f 但采用 A/D 转换器芯片时也必须要用 MCU,当采用用户系统中的 MCU 时此费用可省 1.即:总费用包括 MCU 时才不超过 30 元.按照保守用量计算:若 A/D 芯片加V/F 转换模块的年需求总量为十万片 f 块 1 时.其经济效益是相当可观的.参考文献【1】张运波.PWM 信号的软件实现方法【J】微计算机信息,2002,1810:4647.2】秦龙 .MSP430 单片机 C 语言应用程序设计实例精讲M 】.电子工业出版社.2006.53】魏小龙 .MSP430 系列单片机接口
18、技术及系统设计实 fftJM.北京航空航天大学出版社.2003.6作者简介:陈平(1952 一), 男 ,山东理工大学计算机学院,教授,主要研究方向计算机测控.Biography:ChenPing(1952-),Male,ShanDongProvince,SchoolofComputerScienceandTechnology,ShandongUniversityofTechnology,Professor,ComputerMeasureandcontro1.(255049 山东淄博山东理工大学计算机科学与技术学院)陈平通讯地址:(255049 山东淄博山东理工大学计算机科学与技术学院)陈平(
19、收稿日期:2007.8.23)(修稿日期 :2007.9.25)接第 128 页)如:KVM 完成 262144 个字节数组拷贝花费 50 毫秒的性能指标是 5242880ec.具体结果如图 4.1 所示.5 结束语本文阐述了 KVM 在 uClinux 操作系统上的移植过程,分析了 KVM 的工作原理和移植的实现方式.根据 uClinux 无 MMU的特点建立基于该平台的 Java 测试程序 BenchMark.java.执行BenchMark.class 得到 KVM 在该平台上运行的性能参数.在具体的工业应用中,可以根据 KVM 执行性能参数选择更加经济,高效的硬件设备.随着 Java
20、技术的发展,将会有更多 Java 应用程序运行在嵌入式设备上,这一切都依赖于嵌入式 Java 虚拟机一KVM.本文作者创新点:用运用 Java 虚拟机代替传统移植方案,编写了针对具体平台的 KVM 性能测试程序.$项目经济效益(10 万元 1.参考文献1】探矽工作室着,嵌入式系统开发圣经,中国青年出版社,20022探矽工作室着,深入嵌入式 Java 虚拟机,中国铁道出版社,2003f31Sun.2003b.KVMPoingGuide.WhitePaper.4SunMicrosystems,Inc.ConnectedLimitedDeviceConfiguration(CLDC)5】张浩 ,基于
21、 uClinux 嵌入式系统的汽车黑匣子的设计和开发J微计算机信息,2005,5-2:239241.f6MouradDebbabi,AzzamMouradandNadiaTawbi.ArmedEBunny:ASelectiveDynamicCompilerforEmbeddedJavaVirtualMachineTargetingARMProcessors.ACMSymposiumonAppliedComputing,2005作者简介:周显军(1984 一)男,汉族,四川资阳人,西南科技大学硕士研究生,研究方向:嵌入式系统,嵌入式 Java 虚拟机; 李众立f1948 一 )男,汉族 ,四川武
22、胜人,西南科技大学教授,硕士生导师,主要从事嵌入式系统等.张俊然(1977 一),男,汉族,湖南人,西南科技大学讲师.研究方向:嵌入式系统,嵌入式 Java 虚拟机.Biography:zhouxianjun(1984 一),male,Nationality:Han,borninZhiyang,SichuanProvince,Degree:Mastergraduatestudent,ReasearchDirection:embeddedsystemandembeddedjavavirtualmachine;Li,zhongli(1948 一),male,Nationality:Han,born
23、inWusheng,SichuanProvince,Occupation:professor,ReasearchDirection:embeddedsystem;Zhang,junran(1977 一),male,Nationality:Han,borninHunanProvince,Occupation:Lecturer,ReasearchDirection:embeddedsystemandembeddedjavavirtualmachine.(621010 四川省西南科技大学)周显军李众立张俊然通讯地址:(621010 四川省绵阳市西南科技大学学生公寓西苑 7 一 A 一 121)周显军f 收稿日期:2007.9.23)(修稿日期 :2007.10.25)国自控局订阅号:82_946360.,-L/-#-271