引 言 嵌入式系統(tǒng)是指以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ)、軟件硬件可裁剪,適用于對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。隨著計算機技術(shù)和相關(guān)電子技術(shù)的發(fā)展,嵌入式系統(tǒng)的應(yīng)用已經(jīng)深入到社會中的各個領(lǐng)域,如家用電器、移動通信、航空、航天、醫(yī)療、工業(yè)控制和軍事等。在嵌入式系統(tǒng)的某些應(yīng)用中,通常采用分布式體系結(jié)構(gòu),不同的嵌入式設(shè)備之間以某種方式相互連接、彼此協(xié)作,這就要求整個系統(tǒng)具有很好的靈活性和可靠性。 Jini是一種全新的構(gòu)建分布式系統(tǒng)的技術(shù),具有動態(tài)的、自形成的和自管理的特性,它是一種真正的基于服務(wù)的分布式體系結(jié)構(gòu)。另外,基于Java的 Jini技術(shù)提高了分布式系統(tǒng)編程的抽象級別,簡化了分布式系統(tǒng)的開發(fā)。在構(gòu)建分布式嵌入式系統(tǒng)的過程中利用Jini互聯(lián)技術(shù),不但可以降低系統(tǒng)開發(fā)難度,實現(xiàn)嵌入式環(huán)境中基于服務(wù)級的互操作,而且還可提高整個系統(tǒng)的靈活性和可靠性。因此Jini技術(shù)推出后,人們很快就開始關(guān)注如何將Jini應(yīng)用于分布式嵌入式系統(tǒng)的開發(fā)。 1 Jini技術(shù)概述 1.1 Jini的體系結(jié)構(gòu) Jini是1999年1月Sun公司發(fā)布的一種基于Java的全新的用于構(gòu)建分布式系統(tǒng)的技術(shù),利用Jini可以使得軟件和硬件自發(fā)地結(jié)合起來,形成一個Jini服務(wù)聯(lián)盟。 一個Jini系統(tǒng)由下列組件組成[4]: ◇基礎(chǔ)設(shè)施組件——提供一個在分布式系統(tǒng)中建立起服務(wù)聯(lián)盟的框架; ◇編程模型組件——支持建立可靠的分布式服務(wù); ◇服務(wù)組件——可以成為Jini服務(wù)聯(lián)盟中的一部分并且向聯(lián)盟中的其它成員提供服務(wù)。 盡管Jini系統(tǒng)由三部分組件組成,但是它們之間的界限是模糊的,組件之間緊密相連、彼此協(xié)作。Jini是建立在分布式系統(tǒng)、經(jīng)常動態(tài)變化這一原則之上的。它的體系結(jié)構(gòu)如圖1所示。 ![]() 服務(wù)是Jini體系結(jié)構(gòu)中最重要的概念。它可以指任何實體提供的功能。其中實體可以是任何硬件設(shè)備、軟件或是硬件和軟件的結(jié)合體。服務(wù)通過查找服務(wù)注冊后就可以通過實現(xiàn)了Java遠程接口的一個接口來調(diào)用。用戶通過向查找服務(wù)請求并且下載服務(wù)的代理對象來和服務(wù)之間通信。查找服務(wù)自身也是一個服務(wù),能夠跟蹤每個服務(wù)并且向用戶提供服務(wù)的代理對象。 Jini的體系結(jié)構(gòu)建立在以下環(huán)境假設(shè)的基礎(chǔ)上[5]: ◇有一個網(wǎng)絡(luò)并且具有合理的網(wǎng)絡(luò)延遲,以不影響Jini系統(tǒng)的性能(要求網(wǎng)絡(luò)底層使用的通信協(xié)議是TCP和UDP[3]); ◇每個支持Jini的設(shè)備具有一定內(nèi)存和處理能力; ◇每個設(shè)備都需要裝備一個Java虛擬機。 任何實體都可以成為服務(wù)提供者(即服務(wù))或服務(wù)請求者(即用戶)。當一個實體作為一個服務(wù)的提供者時,對它具有如下的要求: ◇為實現(xiàn)發(fā)現(xiàn)和加入查找服務(wù)的功能,服務(wù)提供者必須擁有網(wǎng)絡(luò)功能; ◇為了能夠下載一個查找服務(wù)的代理,需要一個Java虛擬機,并且虛擬機支持標準的Java和RMI; ◇為保存與注冊相關(guān)的信息,需要有存儲功能; ◇為了實現(xiàn)以上的各種計算,需要有一個處理器。 同樣,一個服務(wù)請求者的實體具有如下要求: ◇為實現(xiàn)發(fā)現(xiàn)查找服務(wù)的功能,服務(wù)請求者必須支持網(wǎng)絡(luò); ◇為了下載并且服務(wù)對象代理,需要一個Java虛擬機和存儲功能; ◇需要實現(xiàn)計算的處理器。 因此,一個實體要接入Jini網(wǎng)絡(luò)成為服務(wù)提供者或是服務(wù)請求者,它自身需要具備一定的內(nèi)存和處理能力,以及網(wǎng)絡(luò)和Java功能,稱滿足這些要求的實體是支持Jini的。 1.2 Jini技術(shù)的特點 Jini的核心功能是提供一種基于網(wǎng)絡(luò)動態(tài)的、自形成的和自管理的服務(wù)聯(lián)盟,具有如下特點。 ① Jini是即插即用的:服務(wù)提供者加入Jini網(wǎng)絡(luò)后,通過查找服務(wù)注冊后即可向使用者提供服務(wù);服務(wù)的使用者加入Jini網(wǎng)絡(luò)后即可通過查找服務(wù)使用相應(yīng)的服務(wù),之后離開。 ② 使用戶可以很容易地訪問網(wǎng)絡(luò)中任何位置的資源,即使是用戶在網(wǎng)絡(luò)中的位置經(jīng)常變化。 ③ Jini以自發(fā)的方式實現(xiàn)實體間的互聯(lián):任何實體之間可以相互發(fā)現(xiàn)和加入Jini網(wǎng)絡(luò)來組成一個Jini聯(lián)盟。 ④ Jini消除了硬件和軟件之間的差別:Jini把硬件和軟件都抽象為服務(wù),是一種真正的基于服務(wù)的體系結(jié)構(gòu)。 ⑤ Jini是一種分布式計算框架,使得分布式編程變得容易:Jini將Java應(yīng)用環(huán)境由單獨的Java虛擬機擴展到一個Java虛擬機網(wǎng)絡(luò);Java虛擬機屏蔽了不同機器平臺和操作系統(tǒng)的異構(gòu)性,降低了分布式編程的難度。 1.3 利用Jini開發(fā)分布式嵌入式系統(tǒng) 近些年來隨著計算機網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,分布式系統(tǒng)已經(jīng)得到了越來越廣泛的研究和應(yīng)用,分布式計算成為實現(xiàn)高性能和高可靠性計算的一種新的計算模型 [5]。在嵌入式應(yīng)用領(lǐng)域中采用分布式體系結(jié)構(gòu),一方面可以實現(xiàn)嵌入式環(huán)境中的分布式計算(例如一個系統(tǒng)本身可能是由分布在不同位置的多個嵌入式系統(tǒng)相互連接構(gòu)成的,如電梯、汽車等);另一方面可以在可靠性要求較高的嵌入式應(yīng)用中實現(xiàn)容錯計算。 Jini可以把分布式嵌入式系統(tǒng)變成動態(tài)的、靈活的和易管理的系統(tǒng)。Jini的自形成特性提供了一種自動相互發(fā)現(xiàn)和加入Jini網(wǎng)絡(luò)來組成服務(wù)聯(lián)盟的能力,可以使各種嵌入式設(shè)備以一種簡捷的方式實現(xiàn)集成和互操作。Jini的動態(tài)性使得每個嵌入式設(shè)備可以靈活地加入和離開Jini服務(wù)聯(lián)盟。這樣,當一些嵌入式設(shè)備(如移動設(shè)備、PDA等)在需要使用服務(wù)時,可以建立暫時性的連接加入Jini聯(lián)盟;服務(wù)完成時,離開。在不需要人為參與管理的情況下,整個系統(tǒng)仍具有良好的可伸縮性。 另外,Jini是基于Java的。Java虛擬機屏蔽了不同機器平臺和操作系統(tǒng)的異構(gòu)性,簡化了嵌入式系統(tǒng)的編程;而且Jini將Java的應(yīng)用環(huán)境由單獨的Java虛擬機擴展到一個Java虛擬機網(wǎng)絡(luò),為實現(xiàn)分布式計算提供了一個良好的計算平臺。它提高了分布式系統(tǒng)編程的抽象級別,使得用戶只需在高層的對象接口上進行編程,而不必處理底層的通信協(xié)議,簡化了分布式系統(tǒng)的開發(fā)。 因此,Jini為開發(fā)分布式嵌入式系統(tǒng)提供了一種新的解決方案。但是,要把Jini應(yīng)用到嵌入式領(lǐng)域中也存在一些需要解決的問題,下面將進行說明。 2 嵌入式系統(tǒng)接入Jini網(wǎng)絡(luò)的方法 Jini并不是專門為開發(fā)嵌入式應(yīng)用而設(shè)計的。由上面的分析可知,一個支持Jini的設(shè)備必須具備一定的處理能力、內(nèi)存、網(wǎng)絡(luò)功能和Java功能;而通常嵌入式系統(tǒng)對資源是嚴格限制的,完全支持Jini的嵌入式設(shè)備實際上并不多。另外,一些分布式嵌入式應(yīng)用中底層的通信協(xié)議也不支持Jini。 如何使嵌入式系統(tǒng)能夠加入到Jini網(wǎng)絡(luò),成為在分布式嵌入式應(yīng)用領(lǐng)域中應(yīng)用Jini技術(shù)的難點。結(jié)合現(xiàn)有的技術(shù),目前主要有三種解決方法:一種是提高嵌入式設(shè)備的資源,如采用32位的處理器、2MB以上的存儲空間和支持網(wǎng)絡(luò)連接,這樣的嵌入式系統(tǒng)可以完全支持Jini;另外一種方法是采用Jini代理體系結(jié)構(gòu),不要求設(shè)備自身支持Java和Jini技術(shù);第三種方法是將Jini進行移植。 2.1 J2ME與Jini技術(shù)相結(jié)合 繼Java技術(shù)在桌面系統(tǒng)和后端服務(wù)器領(lǐng)域取得巨大成功后,為了將Java的應(yīng)用擴展到消費類電子設(shè)備和嵌入式設(shè)備,Sun推出了Java 2 平臺Micro Edition(J2ME)。它包括兩個基本的配置集:連接設(shè)備配置集(CDC ,Connected Device Configuration)和連接有限設(shè)備配置集(CLDC ,Connected Limited Device Configuration)。CDC面向的是具有更強計算能力的嵌入式設(shè)備;CLDC面向的是資源有限的消費類電子設(shè)備。對應(yīng)于CDC和CLDC兩個不同的配置集,可以將J2ME設(shè)備分為兩類:低端信息設(shè)備和高端信息設(shè)備。J2ME設(shè)備分類如表1所列。 表1 J2ME設(shè)備分類表 ![]() 這兩種不同設(shè)備要求的J2ME的運行環(huán)境也不同。低端信息設(shè)備比較適合使用CLDC中定義的KVM,這是一款專用的Java虛擬機,是以小型的資源有限的消費類設(shè)備為目標平臺的;而高端信息設(shè)備適合使用CDC中定義的CVM,它與常規(guī)的JVM是完全兼容的。 J2ME CDC可以使嵌入式設(shè)備具備Java 2的功能。基于J2ME CDC的RMI可選包完全滿足實現(xiàn)Jini的技術(shù)需求,因此可以直接加入Jini網(wǎng)絡(luò)。 對于那些J2ME CLDC的設(shè)備或是根本不支持Java和Jini的嵌入式設(shè)備來說,Jini代理體系結(jié)構(gòu)(Jini Surrogate Architecture)使其接入Jini網(wǎng)絡(luò)成為可能。 2.2 Jini代理體系結(jié)構(gòu) Jini代理體系結(jié)構(gòu)是由Sun公司的工程師Jim Waldo提出的,現(xiàn)在已成為www.jini.org站點中一個開放源代碼的項目。開發(fā)Jini代理的主要目標是使那些資源有限的設(shè)備能夠完全參與到Jini網(wǎng)絡(luò)中。 Jini代理體系結(jié)構(gòu)由下列組件構(gòu)成:可宿主機(host-capable machine)、代理宿主(Surrogate Host)、宿主資源(Host Resources)和相互連接(Interconnect)。組件之間的關(guān)系如圖2所示[6]。 ![]() 設(shè)備是指那些不能夠加入Jini網(wǎng)絡(luò)的任何硬件設(shè)備或者軟件;可宿主機具備執(zhí)行Java語言編寫的,用于代表設(shè)備的代碼,并且能夠為執(zhí)行這些Java代碼提供所需的資源;代理宿主是駐留在可宿主機上,為執(zhí)行代理體系結(jié)構(gòu)的組件提供Java運行環(huán)境的框架,除了提供計算資源、運行環(huán)境和生命周期管理外,它還提供宿主的其它資源來幫助體系結(jié)構(gòu)中的組件。 可宿主機在Jini網(wǎng)絡(luò)和設(shè)備兩者之間建立連接,在Jini網(wǎng)絡(luò)中充當這個設(shè)備的代言人。設(shè)備和代理宿主之間可以用有線或無線的方式相互連接。連接也可以采用任何的協(xié)議,有線連接如TCP/IP、RS-232、USB和IEEE1394等;無線連接可以采用藍牙協(xié)議。 這樣,Jini代理體系結(jié)構(gòu)通過降低對設(shè)備資源的要求,實現(xiàn)了小型設(shè)備完全參與到Jini網(wǎng)絡(luò)中的目標,使得那些資源有限的小型設(shè)備可以充分利用Jini 技術(shù)的優(yōu)勢。代理通過一個運行Java 2虛擬機支持Jini技術(shù)的宿主代理系統(tǒng),使得本來需要運行在用戶中的服務(wù)代理對象可以在代理的環(huán)境中運行。任何小型設(shè)備與代理宿主通過相互連接進行對話,從而成為一個完全的支持Jini的用戶或服務(wù),且仍保持Jini即插即用的特性。 2.3 移植Jini Jini體系結(jié)構(gòu)假設(shè)網(wǎng)絡(luò)底層使用的通信協(xié)議是TCP和UDP,而一些分布式嵌入式系統(tǒng)中通常采用的是實時、可靠的數(shù)據(jù)傳輸協(xié)議,如CAN、TTP等。為了在這樣的應(yīng)用領(lǐng)域中使用Jini技術(shù),可以考慮將Jini進行移植。RoSES(Robust Self-Configuring Embedded Systems)[3]是卡耐基梅隆大學通用發(fā)動機協(xié)作實驗室的一個研究項目。目的是尋找一種建立靈活的、健壯的和可維護的分布式嵌入式系統(tǒng)的通用方法,在研究過程中嘗試把Jini移植到CAN上。移植Jini的方法也可以解決嵌入式系統(tǒng)接入Jini網(wǎng)絡(luò)的問題,但其中的工作量相對較大。 3 應(yīng)用實例 Jini在開發(fā)分布式嵌入式系統(tǒng)方面已經(jīng)做了很多的工作[1~3]。下面介紹一下Jini在EIB(European Installation Bus)中的應(yīng)用[1,2]。 現(xiàn)場總線分為多種,不同廠商的現(xiàn)場總線產(chǎn)品是不兼容的。為了解決這一問題,EIBA(European Installation Bus Association)提出了EIB。EIB代表了最新的現(xiàn)場總線技術(shù),主要應(yīng)用領(lǐng)域是家庭和建筑物的自動化。EIB網(wǎng)絡(luò)的拓撲結(jié)構(gòu)可以是線形、星形和樹形。 EIB網(wǎng)絡(luò)中每個節(jié)點是一個EIB設(shè)備。一個EIB系統(tǒng)中最大可以安裝60 000個設(shè)備。每個EIB設(shè)備中有一個嵌入式微控制器用來運行通信協(xié)議。它從總線上接收數(shù)據(jù)后傳送給應(yīng)用程序,或是把應(yīng)用程序數(shù)據(jù)傳給其它設(shè)備。每個 EIB設(shè)備通過LC(Line Connector,具有路由功能)連接到主線(Main Line)上,BC(Bus Coupling)向特定應(yīng)用的硬件(如傳感器和作動器)提供了定義良好的接口。 EIB中的設(shè)備(例如傳感器)都是資源非常有限的設(shè)備,很難直接支持Jini,而且EIB系統(tǒng)使用的底層通信協(xié)議也不支持Jini。因此在實現(xiàn)中,采用Jini代理體系結(jié)構(gòu)來使EIB設(shè)備接入Jini網(wǎng)絡(luò)。系統(tǒng)結(jié)構(gòu)如圖3所示[2]。 ![]() EIB代理(EIB Agent)是EIB設(shè)備在Jini網(wǎng)絡(luò)中映射的服務(wù)代理。它向服務(wù)的使用者(Service User)提供EIB設(shè)備的功能;EIB服務(wù)器(EIB Server)由Jini數(shù)據(jù)庫(Jini Database)和EIB控制器(EIB Controller)兩個模塊組成。它負責管理代理宿主機與現(xiàn)場總線之間的連接,其中Jini數(shù)據(jù)庫是一個存放EIB設(shè)備和相應(yīng)的EIB代理之間的映射關(guān)系的數(shù)據(jù)庫。EIB代理和EIB服務(wù)器運行在代理宿主機上。 這樣,在EIB系統(tǒng)中使用Jini技術(shù)會帶來如下好處: ◇EIB系統(tǒng)中,每個設(shè)備提供的功能都可以映射成Jini服務(wù),這樣,不僅可以被其它的現(xiàn)場總線使用,而且還可以被支持Jini的任何設(shè)備(如PDA)來訪問; ◇Jini簡化了網(wǎng)絡(luò)編程,并且Java提高了系統(tǒng)的安全性; ◇EIB網(wǎng)絡(luò)可以連接到Internet,這樣系統(tǒng)變成了開放的,提高了EIB設(shè)備的可訪問性; ◇Jini使EIB系統(tǒng)中的設(shè)備可以與家用消費電器和自動化設(shè)備通信,增強EIB設(shè)備的功能; ◇Jini提供了一種獨立于廠商的服務(wù)平臺,使得不同廠商的現(xiàn)場總線產(chǎn)品相互兼容。 應(yīng)當指出的是,Jini并不是完全適用于實時性要求高的嵌入式應(yīng)用。RoSES的研究項目中,將Jini移植到了CAN上;但實驗結(jié)果表明,Jini的實時性能并不令人滿意。 4 總 結(jié) 在構(gòu)建分布式嵌入式系統(tǒng)的過程中利用Jini技術(shù),不但可以降低系統(tǒng)的開發(fā)難度、實現(xiàn)嵌入式環(huán)境中基于服務(wù)級的互操作,而且可使系統(tǒng)具有很好的靈活性和可靠性。同時,在分布式嵌入式領(lǐng)域中使用Jini技術(shù)也存在一些需要解決的問題,包括如何使得嵌入式系統(tǒng)支持Jini以及Jini的實時性等。 參考文獻 1. Christopher Kriigel Jini Connectivity for Home and Building Automation A Case Study for EIB 2000 2. Wolfgang Kastner Jini Connectivity For Fieldbus System 2000 3. Meredith Beveridge.Philip Koopman Jini Meets Embedded Control Networking: a case study in portability failure 2002 4. S.Ilango Kumaran.林琪 Jini技術(shù)指南 2003 5. Sun Microsystem JiniTM Architecture Specification 6. Sun Microsystem JiniTM echnology Surrogate Architecture Overview 7. Wayne Wolf.孫玉芳 嵌入式計算系統(tǒng)設(shè)計原理 2002 8. Jie Wu.高傳善 分布式系統(tǒng)設(shè)計 2001 作 者:北京航空航天大學 孫曉明 尚利宏 金惠華 來 源:單片機與嵌入式系統(tǒng)應(yīng)用 2003(10) |