在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            ARM移植OSGi框架

            作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
            目前,嵌入式計(jì)算應(yīng)用已經(jīng)廣泛運(yùn)行在各種平臺(tái),普遍應(yīng)用于各個(gè)領(lǐng)域。如何實(shí)現(xiàn)運(yùn)行在動(dòng)態(tài)環(huán)境,或不同平臺(tái)的這些應(yīng)用之間的相互發(fā)現(xiàn)和交互,或這些應(yīng)用程序如何根據(jù)設(shè)備和服務(wù)環(huán)境的變化自動(dòng)靈活的動(dòng)態(tài)配置和擴(kuò)充是近年來(lái)研究的一個(gè)熱點(diǎn)。OSGI規(guī)范是嵌入式應(yīng)用“智能化”發(fā)展所需求的一個(gè)開(kāi)放、通用的解決方案。
              1 OSGI介紹
              OSGI是Open Servicc Gateway Initiative的簡(jiǎn)稱,該組織建立于1999年,是一個(gè)非贏利機(jī)構(gòu),旨在建立一個(gè)開(kāi)放的服務(wù)規(guī)范,為通過(guò)網(wǎng)絡(luò)向設(shè)備提供服務(wù)建立開(kāi)放的標(biāo)準(zhǔn)。OSGI規(guī)范為網(wǎng)絡(luò)服務(wù)定義了一個(gè)標(biāo)準(zhǔn)的、面向組件的計(jì)算環(huán)境。軟件組件可以從運(yùn)行中被安裝、升級(jí)或者移除而不需要中斷設(shè)備的操作。軟件組件可以動(dòng)態(tài)地發(fā)現(xiàn)和使用其他庫(kù)或者應(yīng)用程序。下面具體講解一下OSGI的運(yùn)行機(jī)制[1-2]。
              OSGI[3]框架是一個(gè)微核結(jié)構(gòu)的容器,所有的模塊都需要運(yùn)行在容器范圍內(nèi),在OSGI中所有模塊的部署都必須以Bundle的方式來(lái)進(jìn)行部署。所謂Bundle其實(shí)就是一個(gè)jar文件,這個(gè)jar文件和普通的jar文件唯一不同的地方就是Meta-inf目錄下的MANIFEST.MF文件的內(nèi)容,關(guān)于Bundle的所有信息都在MANIFEST.MF中進(jìn)行描述,可以稱它為bundle的元數(shù)據(jù),這些信息中包含有象Bundle的名稱、描述、開(kāi)發(fā)商、classpath、需要導(dǎo)入的包以及輸出的包等。
              Bundle通過(guò)實(shí)現(xiàn)BundleActivator接口去控制其生命周期,在Activator中編寫(xiě)B(tài)undle[4]啟動(dòng)、停止時(shí)所需要進(jìn)行的工作,同時(shí)也可以在Activator中發(fā)布或者監(jiān)聽(tīng)框架的事件狀態(tài)信息,以根據(jù)框架的運(yùn)行狀態(tài)做出相應(yīng)的調(diào)節(jié)。
              2 選擇合適的虛擬機(jī)
              選擇一種合適的虛擬機(jī)是很重要的,選擇的虛擬機(jī)要滿足OSGI架構(gòu)最基本的運(yùn)行條件,虛擬機(jī)的種類比較多,有kaff,j9,wonka,cvm,kvm,jre等,當(dāng)中有運(yùn)行在X86上的,也有運(yùn)行在嵌入式設(shè)備上的,根據(jù)OsgiAllance說(shuō)法,OSGI架構(gòu)運(yùn)行的最小環(huán)境是(KVM+CLDC+DIDP,CDC+CVM+FP)。一開(kāi)始選擇了KVM作為運(yùn)行OSGI的虛擬機(jī),由于KVM的資源有限,就連一個(gè)JAR文件也運(yùn)行不了,后來(lái)更換了CVM作為虛擬機(jī),經(jīng)過(guò)一些簡(jiǎn)單的配置后,成功編譯,OSGI架構(gòu)也成功地運(yùn)行了。
              3 編譯CVM虛擬機(jī)
              SUN的JVM開(kāi)源后,作為JAVA開(kāi)發(fā)社區(qū)的一個(gè)項(xiàng)目,為避免版權(quán)問(wèn)題,J2ME改名為phoneME。CLDC對(duì)應(yīng)phoneME Feature,虛擬機(jī)則稱為KVM;而CDC對(duì)應(yīng)phoneMEAdvance,虛擬機(jī)則稱為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
              如果編譯沒(méi)有什么錯(cuò)誤的話,就在linux-arm-familiar的bin目錄下生成CVM,在linux-arm-familiar目錄也同時(shí)生成:testclasses.zip,democlasses.jar等測(cè)試文件,以及btclasses.zip和lib文件夾等庫(kù)文件(lib文件夾里有foundation.jar,content-types.properties,以及security,zi等兩個(gè)文件夾)。當(dāng)在開(kāi)發(fā)的時(shí)候,需要把btclasses.zip放到lib文件夾里,作為一個(gè)基礎(chǔ)類庫(kù)。
              在編譯CVM的時(shí)候,同時(shí)也將CDC自帶的測(cè)試程序編譯出來(lái)了,testclasses.zip,democlasses.jar就是測(cè)試文件。把btclasses.zip放到lib文件夾里,將lib,bin文件夾,以及 testclasses.zip,democlasses.jar下載到開(kāi)發(fā)板里,接下來(lái)就是運(yùn)行測(cè)試程序了[5]。如果是直接下載cvm到開(kāi)發(fā)板的話,一定要建立一個(gè)bin文件夾,將cvm放到bin文件夾中,這樣才能完成運(yùn)行。
              執(zhí)行bin/cvm –version如果能得到如下輸出的話證明你的CVM能運(yùn)行。
              接下來(lái)測(cè)試個(gè)HelloWorld.
              bin/cvm-cp testclasses.zip HelloWorld
              應(yīng)該得到下面的結(jié)果:
              最后做一次全面的測(cè)試:
              bin/cvm-cp testclasses.zip Test
              如果是和下面的結(jié)果一樣的話,就說(shuō)明移植的cvm完全沒(méi)有問(wèn)題。
              安裝OSGI架構(gòu)到開(kāi)發(fā)板中,在開(kāi)源界中實(shí)現(xiàn)OSGI的框架比較知名的有:Equinox、Knopflerfish、Oscar。
              1)Equinox
              Equinox是Eclipse中的項(xiàng)目之一,Equinox是作為OSGI R4 RI而知名的,同時(shí)由于Equinox有Eclipse IDE這么個(gè)成功案例,反應(yīng)出了Equinox作為OSGI框架的優(yōu)勢(shì)。Equinox開(kāi)發(fā)小組由IBM的Jeff領(lǐng)銜,開(kāi)發(fā)狀態(tài)非常的活躍,從它的開(kāi)發(fā)者maillist可以看出,討論非常的熱烈。
              2)Oscar
              Oscar是一個(gè)遵循OSGI R3框架的實(shí)現(xiàn),目前它的開(kāi)發(fā)狀態(tài)不怎么的活躍,最新的新聞都是2005年的了。 Oscar的優(yōu)勢(shì)在于提供了大量OSGI R3標(biāo)準(zhǔn)之外的Bundle,為開(kāi)發(fā)基于OSGI的系統(tǒng)提供了方便。
              3)Knopflerfish
              Knopflerfish是一個(gè)知名的OSGI框架,目前提供的最新版本也已經(jīng)完整的實(shí)現(xiàn)了OSGI R4,Knopflerfish的開(kāi)發(fā)狀態(tài)非常的活躍,同時(shí)它也提供了為方便開(kāi)發(fā)基于OSGI系統(tǒng)的大量的Bundle。
              安裝OSGI架構(gòu)只須將X架構(gòu)下載到開(kāi)發(fā)板中就可以,然后通過(guò)指令:cvm –jar X..jar啟動(dòng)架構(gòu)。
              下面是安裝equinox的實(shí)例,運(yùn)行:bin/cvm –jar equinox.jar -console
              接下來(lái)就是安裝一些運(yùn)用bundle了,至此已經(jīng)完成了將OSGI架構(gòu)安裝到開(kāi)發(fā)板上的全部過(guò)程。
              4 結(jié)束語(yǔ)
              本文通過(guò)選擇合適的虛擬機(jī)到編譯CVM虛擬機(jī),直到完成并安裝OSGI架構(gòu)到開(kāi)發(fā)板中,這一系列的操作說(shuō)明在嵌入式系統(tǒng)上運(yùn)行OSGI架構(gòu)是可行的,而且也取得了不錯(cuò)的運(yùn)行測(cè)試效果,這為后期的實(shí)際應(yīng)用打下了基礎(chǔ)。


            關(guān)鍵詞: ARM移植OSGi框

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉