ARM移植OSGi框架

发布者:TranquilDreams最新更新时间:2016-08-08 来源: eefocus关键字: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架构是可行的,而且也取得了不错的运行测试效果,这为后期的实际应用打下了基础。
关键字:ARM  移植  OSGi框架 引用地址:ARM移植OSGi框架

上一篇:ARM-Linux GPIO操作事宜
下一篇:ARM学习笔记(三)时钟分频器设置

推荐阅读最新更新时间:2024-03-16 15:04

基于ARM9和μC/OS-II操作系统的SD卡文件系统的设计与
随着嵌入式式技术的不断发展,ARM处理器凭借其高性能、廉价、耗能低的优质特性而得到广泛应用。文中主要针对货车动态称重系统中大量实时载重数据存取的需求,在ARM9嵌入式处理器和μC/OS-II操作系统基础上,设计实现了一种SD卡文件系统。该系统具有实时性强、存取速率高、易维护,易移植等特点。 1 硬件接口电路设计 本系统硬件开发平台处理器为S3C2440A,是三星公司推出的16/32位RISC微处理器,ARM920T内核,主频400 MHz,最高可达533 MHz,内部具有丰富的系统外围控制器和多种通信接口。SD卡支持SPI和SD两种通信模式,S3C2440A具有SD卡接口,支持SD总线模式,所以不再像低端的ARM处理器
[单片机]
基于<font color='red'>ARM</font>9和μC/OS-II操作系统的SD卡文件系统的设计与
麻雀虽小 五脏俱全:MCU专用RTOS简述
  微控制器(MCU)广泛应用在各行各业,如各式家电、工业自动化,实时控制、资料采集等领域,为因应工控所需的实时(RealTIme)控制、快速回应等需求,因此MCU大多搭载RTOS(实时操作系统)运行。随著物联网的兴起,软件业也为RTOS加入物联网的成分,以提早卡位物联网的核心软件市场…   各种处理器专用之OS   在一般功能(General-purpose)的处理器市场分类中,若以功能与执行速度来说,大致分为CPU MPU MCU。CPU的功能最强,主要应用在计算机产品;MPU功能次之,其应用多元,主要应用在嵌入式系统与精简型计算机等多种;而MCU则是以单一应用为主,应用在各式家电、电子产品、嵌入式产品、穿戴式装置、物
[单片机]
麻雀虽小 五脏俱全:MCU专用RTOS简述
U-Boot移植(6)总结U-Boot工程的总体结构
1、源代码组织 对于ARM而言,主要的目录如下: board 平台依赖  存放电路板相关的目录文件,每一套板子对 应一个目录。如smdk2410(arm920t)   cpu 平台依赖  存放CPU相关的目录文件,每一款CPU对应一个目录,例如:arm920t、 xscale、i386等目录 lib_arm 平台依赖  存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数,如软件浮点。 common 通用 通用的
[单片机]
基于ARM和以太网供电的网络摄像机设计
  1 系统的结构   整个系统由AT91RM9200处理器、CMOS传感器、音频采集系统、以太网供电系统和以太网数据通信等几部分组成。首先,通过CMOS传感器镜头采集图像,同时还可以进行音频采集,经过AT91RM9200处理器处理,整个过程通过网络进行数据传输,通过网络进行供电,从而实现以太网供电的网络摄像机系统功能。   2 系统的硬件设计   2.1 AT91RM9200相关设计   AT91RM9200嵌入ARM920T ARM Thumb处理器核,工作于180 MHz时,性能高达200 MIPS,存储器管理单元SRAM为16K,ROM为128K。AT91RM 9200集成了许多标准接口,包括USB 2.0全速主
[单片机]
基于<font color='red'>ARM</font>和以太网供电的网络摄像机设计
ARM处理器启动方式
在外启动方式下,ARM从外部程序存储器(一般是Flash存储器)取指令执行相应的应用;在内启动方式下,ARM运行片上启动ROM中固化的一个128B启动程序,完成器件初始化,配置串口1以9600bps速率接收2048B用户程序存储于片内SRAM中,然后跳转到片内SRAM起始处开始执行刚下载的2KB用户程序,这为进一步的调试、代码下载、外启动Flash存储器编程提供途径,非常适用于嵌入式系统的实验与开发。    EP7312 有强大的系统扩展能力,表1、表2中所示分别是内、外启动方式下的地址空间分配。   表1 内启动方式地址空间分配   表2 外启动方式地址空间分配
[单片机]
<font color='red'>ARM</font>处理器启动方式
ARM CEO给答案
安谋(ARM)首席执行官西蒙·希加斯(Simon Segars)称全球芯片短缺问题解决起来非常复杂,并预计目前的供应链中断将持续到2022年。 据这位高管透露,半导体行业如今每周花费20亿美元来增加产能,并预计这一投资将在五年内带来50%的增长。 他指出,亚洲产量不足加上地缘政治紧张局势,正促使芯片制造商在其他地区建厂,但他警告称,这并非万全之策。 “仅仅建工厂是不够的。”希加斯表示,“你需要材料、化学品。整个元素周期表都被用于制造半导体。” 这位高管还列出了一些半导体生产所需的“下游”活动,包括测试、封装和运输。 希加斯认为,在不考虑更广泛市场的情况下投资新工厂可能是有害的,而不是有益的。 “我们这样做会
[半导体设计/制造]
atmel-arm9芯片特点
atmel的arm9 有AT91RM9200,AT91SAM9系列, 4种芯片可供用户选择,再加上丰富的ARM7系列芯片,atmel应该是目前拥有最丰富的arm芯片线的ARM芯片厂家,各个芯片之间传承性好,便于用户根据不同的应用选择不同的芯片,并且代码可以无缝移植。   AT91RM9200:使用的是ARM920Tarm内核,运行在180MHz时拥有200MIPS的运算性能。   内部集成16KB静态RAM和128KB的boot ROM。   支持SDRAM, nand flash,nor flash。   专用调试串口,实时时钟,4个串口,1个SPI接口,2个I2C接口,2个3通道定时器,看门狗。   多达122根I/
[模拟电子]
RyanMqtt移植指南
测试环境:stm32F401RCT6、RT-Thread版本: v4.1.0、RT-Thread Studio版本: 2.2.6、网络硬件使用ec800m移植at_socket使用sal框架。 1、移植介绍 RyanMqtt 库希望应用程序为以下接口提供实现: system 接口 RyanMqtt 需要 RTOS 支持,必须实现如下接口才可以保证 mqtt 客户端的正常运行 network 接口 RyanMqtt 依赖于底层传输接口 API,必须实现该接口 API 才能在网络上发送和接收数据包 MQTT 协议要求基础传输层能够提供有序的、可靠的、双向传输(从客户端到服务端 和从服务端到客户端)的字节流 time 接口
[单片机]
RyanMqtt<font color='red'>移植</font>指南
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved