您的位置 首页 编程

ARM移植OSGi结构

目前,嵌入式计算应用已经广泛运行在各种平台,普遍应用于各个领域。如何实现运行在动态环境,或不同平台的这些应用之间的相互发现和交互,或这…

现在,嵌入式核算运用现已广泛运转在各种渠道,遍及运用于各个领域。怎么完结运转在动态环境,或不同渠道的这些运用之间的彼此发现和交互,或这些运用程序怎么依据设备和服务环境的改变主动灵敏的动态装备和扩大是近年来研讨的一个热门。OSGI规范是嵌入式运用“智能化”开展所需求的一个敞开、通用的解决方案。
  1 OSGI介绍
  OSGI是Open Servicc Gateway Initiative的简称,该安排树立于1999年,是一个非赢利组织,旨在树立一个敞开的服务规范,为经过网络向设备供给服务树立敞开的规范。OSGI规范为网络服务界说了一个规范的、面向组件的核算环境。软件组件能够从运转中被装置、晋级或许移除而不需求中止设备的操作。软件组件能够动态地发现和运用其他库或许运用程序。下面详细解说一下OSGI的运转机制[1-2]。
  OSGI[3]结构是一个微核结构的容器,一切的模块都需求运转在容器范围内,在OSGI中一切模块的布置都必须以Bundle的方法来进行布置。所谓Bundle其实便是一个jar文件,这个jar文件和一般的jar文件仅有不同的当地便是Meta-inf目录下的MANIFEST.MF文件的内容,关于Bundle的一切信息都在MANIFEST.MF中进行描绘,能够称它为bundle的元数据,这些信息中包括有象Bundle的称号、描绘、开发商、classpath、需求导入的包以及输出的包等。
  Bundle经过完结BundleActivator接口去操控其生命周期,在Activator中编写Bundle[4]发动、中止时所需求进行的作业,一起也能够在Activator中发布或许监听结构的事情状况信息,以依据结构的运转状况做出相应的调理。
  2 挑选适宜的虚拟机
  挑选一种适宜的虚拟机是很重要的,挑选的虚拟机要满意OSGI架构最基本的运转条件,虚拟机的品种比较多,有kaff,j9,wonka,cvm,kvm,jre等,傍边有运转在X86上的,也有运转在嵌入式设备上的,依据OsgiAllance说法,OSGI架构运转的最小环境是(KVM+CLDC+DIDP,CDC+CVM+FP)。一开始挑选了KVM作为运转OSGI的虚拟机,因为KVM的资源有限,就连一个JAR文件也运转不了,后来更换了CVM作为虚拟机,经过一些简略的装备后,成功编译,OSGI架构也成功地运转了。
  3 编译CVM虚拟机
  SUN的JVM开源后,作为JAVA开发社区的一个项目,为防止版权问题,J2ME改名为phoneME。CLDC对应phoneME Feature,虚拟机则称为KVM;而CDC对应phoneMEAdvance,虚拟机则称为CVM。这儿挑选了phoneme_advanced-mr2-dev-src-b34-04_oct_2007.zip
  unzip phoneme_advanced-mr2-dev-src-b34-04_oct_2007.zip
  cd cdc
  cd build
  cd linux-arm
  vi defs.mk
  将ifneq ($(CVM_FORCE_HARD_FLOAT), true)
  ifeq ($(USE_GCC2), true)
  CC_ARCH_FLAGS += -msoft-float
  ASM_ARCH_FLAGS+= -msoft-float
  LINK_ARCH_FLAGS += -msoft-float
  LINK_ARCH_LIBS+= -lfloat
  CVM_TARGETOBJS_OTHER += _fixunsdfsi.o
  endif
  endif
  改为:
  将ifneq ($(CVM_FORCE_HARD_FLOAT), true)
  ifeq ($(USE_GCC2), true)
   LINK_ARCH_FLAGS +=
   LINK_ARCH_LIBS+= -lm
  endif
  endif
  cd ../linux-arm-familiar
  make J2ME_CLASSLIB=foundation CVM_TARGET_TOOLS_PREFIX=/usr/local/arm/3.3.2/bin/arm-linux- CVM_HOST_TOOLS_PREFIX =/usr/bin/ CVM_CLASSLOADING=true CVM_JAVA_TOOLS_PREFIX=/home/wmz/kvm/j2sdk1.4.2_18/bin/ JDK_HOME=/home/wmz/kvm/j2sdk1.4.2.18/bin/ CC_ARCH_FLAGS=-mcpu=arm920t
  假如编译没有什么过错的话,就在linux-arm-familiar的bin目录下生成CVM,在linux-arm-familiar目录也一起生成:testclasses.zip,democlasses.jar等测验文件,以及btclasses.zip和lib文件夹等库文件(lib文件夹里有foundation.jar,content-types.properties,以及security,zi等两个文件夹)。当在开发的时分,需求把btclasses.zip放到lib文件夹里,作为一个根底类库。
  在编译CVM的时分,一起也将CDC自带的测验程序编译出来了,testclasses.zip,democlasses.jar便是测验文件。把btclasses.zip放到lib文件夹里,将lib,bin文件夹,以及 testclasses.zip,democlasses.jar下载到开发板里,接下来便是运转测验程序了[5]。假如是直接下载cvm到开发板的话,一定要树立一个bin文件夹,将cvm放到bin文件夹中,这样才干完结运转。
  履行bin/cvm –version假如能得到如下输出的话证明你的CVM能运转。
  接下来测验个HelloWorld.
  bin/cvm-cp testclasses.zip HelloWorld
  应该得到下面的成果:
  最终做一次全面的测验:
  bin/cvm-cp testclasses.zip Test
  假如是和下面的成果相同的话,就阐明移植的cvm彻底没有问题。
  装置OSGI架构到开发板中,在开源界中完结OSGI的结构比较闻名的有:Equinox、Knopflerfish、Oscar。
  1)Equinox
  Equinox是Eclipse中的项目之一,Equinox是作为OSGI R4 RI而闻名的,一起因为Equinox有Eclipse IDE这么个成功事例,反响出了Equinox作为OSGI结构的优势。Equinox开发小组由IBM的Jeff领衔,开发状况十分的活泼,从它的开发者maillist能够看出,评论十分的火热。
  2)Oscar
  Oscar是一个遵从OSGI R3结构的完结,现在它的开发状况不怎么的活泼,最新的新闻都是2005年的了。 Oscar的优势在于供给了很多OSGI R3规范之外的Bundle,为开发根据OSGI的体系供给了便利。
  3)Knopflerfish
  Knopflerfish是一个闻名的OSGI结构,现在供给的最新版别也现已完好的完结了OSGI R4,Knopflerfish的开发状况十分的活泼,一起它也供给了为便利开发根据OSGI体系的很多的Bundle。
  装置OSGI架构只须将X架构下载到开发板中就能够,然后经过指令:cvm –jar X..jar发动架构。
  下面是装置equinox的实例,运转:bin/cvm –jar equinox.jar -console
  接下来便是装置一些运用bundle了,至此现已完结了将OSGI架构装置到开发板上的悉数进程。
  4 结束语
  本文经过挑选适宜的虚拟机到编译CVM虚拟机,直到完结并装置OSGI架构到开发板中,这一系列的操作阐明在嵌入式体系上运转OSGI架构是可行的,并且也取得了不错的运转测验作用,这为后期的实践运用打下了根底。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/274672.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部