劉錚 施峻武 唐麒
【摘要】 本文結(jié)合在資源受限的小型化設(shè)備上實(shí)現(xiàn)軟件無(wú)線電的應(yīng)用需求,在對(duì)SCA核心框架進(jìn)行深入研究的基礎(chǔ)上,針對(duì)SCA標(biāo)準(zhǔn)級(jí)核心框架的接口冗余、靈活性較差等問(wèn)題,通過(guò)裁剪修改核心框架接口和優(yōu)化接口之間繼承關(guān)系等方式,對(duì)SCA核心框架進(jìn)行優(yōu)化,設(shè)計(jì)了輕量級(jí)核心框架,提高了核心框架的靈活性。
【關(guān)鍵字】 軟件無(wú)線電 SCA 核心框架 接口
一、引言
軟件無(wú)線電的核心思想是設(shè)計(jì)標(biāo)準(zhǔn)化的硬件平臺(tái),并使用軟件來(lái)描述通信系統(tǒng)中的各模塊功能,通過(guò)在通用硬件平臺(tái)上加載不同軟件來(lái)實(shí)現(xiàn)各種通信制式功能。軟件無(wú)線電克服了傳統(tǒng)通信設(shè)備開(kāi)發(fā)周期長(zhǎng)、移植和升級(jí)成本高難度大、兼容性差、組網(wǎng)局限等問(wèn)題,在軍事和民用領(lǐng)域都具有廣闊的應(yīng)用前景,引起了軍方和商業(yè)組織的廣泛研究。
SCA作為一個(gè)比較成熟的規(guī)范,在軟件無(wú)線電研究領(lǐng)域具有廣泛的指導(dǎo)意義。然而由于功能需求的差別,將SCA完整的軟件架構(gòu)移植到小型設(shè)備時(shí)將產(chǎn)生接口冗余和資源浪費(fèi)等問(wèn)題,因此本文針對(duì)小型設(shè)備的應(yīng)用場(chǎng)景研究了SCA軟件架構(gòu)的優(yōu)化和裁剪問(wèn)題,通過(guò)對(duì)SCA核心框架的優(yōu)化有效節(jié)省了系統(tǒng)資源,并提高了系統(tǒng)的靈活性。
二、SCA核心框架
SCA的設(shè)計(jì)理念具有硬件通用化、軟件功能化、波形模塊化可移植等特點(diǎn),是目前軟件無(wú)線電研究的主要參考。SCA規(guī)范將軟件無(wú)線電體系結(jié)構(gòu)劃分為三大部分:硬件平臺(tái),軟件平臺(tái)(操作環(huán)境),波形應(yīng)用;軟件平臺(tái)又被分為核心框架、中間件、硬件抽象層、板級(jí)支持包、操作系統(tǒng)等部分。按照SCA規(guī)范,核心框架以一組開(kāi)放的API接口的形式呈現(xiàn),按照功能可劃分成基本設(shè)備接口、基本應(yīng)用接口、框架控制接口、框架服務(wù)接口四類。
以核心框架為核心構(gòu)造的軟件平臺(tái)是應(yīng)用軟件與底層硬件之間的交互途徑,核心框架通過(guò)開(kāi)放給應(yīng)用層的統(tǒng)一化的接口和服務(wù),為開(kāi)發(fā)者提供底層軟件和硬件通用功能的高層次抽象和封裝,并為上層應(yīng)用波形提供了標(biāo)準(zhǔn)的開(kāi)發(fā)規(guī)范。核心框架的設(shè)計(jì)給軟件平臺(tái)的開(kāi)發(fā)提供了可靠的兼容性,軟件平臺(tái)只要提供了核心框架規(guī)定的接口,即可兼容支持各種基于SCA開(kāi)發(fā)的波形應(yīng)用;另一方面,核心框架為波形應(yīng)用的開(kāi)發(fā)提供了廣泛的移植性,按照SCA核心框架的接口定義開(kāi)發(fā)的波形組件,可以移植到所有SCA軟件平臺(tái)上。
目前廣泛應(yīng)用的SCA2.2.2版本給出了支持分布式跨平臺(tái)的通信體系結(jié)構(gòu)實(shí)現(xiàn)的指導(dǎo),然而該版本體系結(jié)構(gòu)為適應(yīng)廣泛的應(yīng)用場(chǎng)景,忽視了具體設(shè)備和應(yīng)用場(chǎng)景的差異性。在具體應(yīng)用場(chǎng)景中,核心框架經(jīng)常不需要支持完整的功能,不需要實(shí)現(xiàn)所有的操作,在實(shí)現(xiàn)過(guò)程中SCA核心框架的接口只會(huì)部分實(shí)現(xiàn),其他很多無(wú)需使用的接口會(huì)增加系統(tǒng)負(fù)擔(dān),冗余而復(fù)雜的接口關(guān)系也會(huì)加大開(kāi)發(fā)難度。但是,由于SCA標(biāo)準(zhǔn)級(jí)核心框架具有固定的體系結(jié)構(gòu),對(duì)接口關(guān)系和接口實(shí)現(xiàn)方面有強(qiáng)制性要求,用戶不可避免地面臨上述問(wèn)題,靈活性受到限制。
三、SCA核心框架的優(yōu)化設(shè)計(jì)
本文針對(duì)SCA應(yīng)用在小型化設(shè)備時(shí)遇到的核心框架靈活性的問(wèn)題,面向輕量級(jí)的應(yīng)用場(chǎng)景對(duì)核心框架進(jìn)行了優(yōu)化,在保證能夠滿足功能需求的前提下,對(duì)不需要的接口及接口間的關(guān)系進(jìn)行裁剪和調(diào)整,達(dá)到降低系統(tǒng)資源占用和提高系統(tǒng)靈活性的目的。
在改進(jìn)SCA核心框架過(guò)程中,一方面,對(duì)核心框架的各類接口中的冗余接口進(jìn)行裁剪,并修改了設(shè)備和服務(wù)組件的注冊(cè)方式,調(diào)整了相應(yīng)接口的實(shí)現(xiàn)以保證裁剪掉冗余接口后系統(tǒng)能夠正常運(yùn)行;另一方面,使用了選擇性繼承的思想優(yōu)化核心框架靈活性,在細(xì)化接口功能的基礎(chǔ)上調(diào)整了接口間的繼承關(guān)系,將部分接口繼承關(guān)系的選擇權(quán)交給用戶,使用戶實(shí)現(xiàn)時(shí)可以根據(jù)設(shè)計(jì)需求對(duì)核心框架接口進(jìn)行選擇繼承,這種設(shè)計(jì)不僅能提高系統(tǒng)的靈活性,還能減少系統(tǒng)資源占用。
3.1接口的裁剪
小型化設(shè)備通常由單板卡構(gòu)成,功能相對(duì)單一,不需要支持復(fù)雜操作,SCA核心框架應(yīng)用在這樣的環(huán)境中就會(huì)顯得過(guò)于龐大,支持的功能脫離實(shí)際應(yīng)用,產(chǎn)生的接口冗余不僅降低了開(kāi)發(fā)效率還會(huì)加重其資源開(kāi)銷的負(fù)擔(dān)。因此本文在設(shè)計(jì)輕量級(jí)核心框架的過(guò)程中,著重針對(duì)標(biāo)準(zhǔn)級(jí)核心框架的接口進(jìn)行了裁剪,以刪除冗余的接口,降低應(yīng)用開(kāi)發(fā)者的開(kāi)發(fā)難度,減少資源開(kāi)銷。主要裁剪內(nèi)容包括:資源管理、設(shè)備管理器和文件服務(wù)的相關(guān)接口等。
首先, SCA設(shè)計(jì)時(shí)為了支持對(duì)復(fù)雜設(shè)備或者說(shuō)設(shè)備組的抽象,在標(biāo)準(zhǔn)級(jí)核心框架的基本設(shè)備接口中提供了聚合設(shè)備(AggregateDevice)接口和父設(shè)備(ParentDevice)接口,用來(lái)描述由多個(gè)功能關(guān)聯(lián)的設(shè)備聚合到一起形成的超設(shè)備。由于小型化設(shè)備上的設(shè)備組件本來(lái)就很少,而且一般都是在處理性能上獨(dú)立的,沒(méi)有使用聚合設(shè)備的需求,為了降低系統(tǒng)負(fù)擔(dān),避免浪費(fèi),在輕量級(jí)核心框架設(shè)計(jì)實(shí)現(xiàn)中裁剪掉了這兩個(gè)接口。
SCA2.2.2規(guī)范中的Device接口提供了用于處理資源分配和回收方面功能的接口函數(shù)(如allocateCapacity和deallocateCapacity等),這些函數(shù)在使用邏輯設(shè)備加載文件和創(chuàng)建進(jìn)程等過(guò)程中應(yīng)用,以描述邏輯設(shè)備的資源占用。
一方面,由于小型化設(shè)備具有單板卡等特點(diǎn),聚合設(shè)備相關(guān)接口已經(jīng)被裁減掉,沒(méi)有支持跨平臺(tái)跨板卡的設(shè)備資源管理的需求,只需要支持本地的獨(dú)立邏輯設(shè)備的資源管理。
另一方面,實(shí)際硬件設(shè)備種類較為單一,專用處理器(如DSP、FPGA)通常都不具有動(dòng)態(tài)部分重構(gòu)的功能,在對(duì)這類設(shè)備的資源進(jìn)行管理時(shí)只存在已開(kāi)銷和未開(kāi)銷兩種狀態(tài),因此對(duì)本地單個(gè)設(shè)備的資源管理方式也比較簡(jiǎn)單。因此在設(shè)計(jì)實(shí)現(xiàn)中將資源管理相關(guān)的接口函數(shù)剪裁掉,核心框架不再負(fù)責(zé)設(shè)備資源的管理,資源的分配和回收全權(quán)交給操作系統(tǒng)來(lái)完成。
其次,對(duì)于框架控制接口,本文優(yōu)化了域管理器的注冊(cè)管理模式。按照SCA2.2.2規(guī)范,每個(gè)板卡上的各設(shè)備組件向該板卡上的設(shè)備管理器注冊(cè),受該設(shè)備管理器管理,然后各設(shè)備管理器再向域管理器上的管理注冊(cè)器注冊(cè),受域管理器管理,即設(shè)備組件采用三級(jí)注冊(cè)管理模式。結(jié)合小型化設(shè)備單板卡的特點(diǎn),域管理器運(yùn)行在唯一的板卡上,設(shè)備管理器一級(jí)的注冊(cè)失去了意義,本文在優(yōu)化中使用域管理器接管設(shè)備管理器的功能,裁剪掉了設(shè)備管理器(DeviceMananger)接口,以及域管理器中與設(shè)備管理器相關(guān)的管理注冊(cè)器(ManagerRegistry)、組件管理器(ComponentManager)和組件工廠(ComponentFactory),各個(gè)設(shè)備組件直接向域管理器注冊(cè)并受其管理。
優(yōu)化后的兩級(jí)注冊(cè)模式的具體實(shí)現(xiàn)方法是:在裁剪后的核心框架中,各設(shè)備服務(wù)組件通過(guò)描述文件直接獲取域管理器上的組件注冊(cè)器的對(duì)象引用,并調(diào)用組件注冊(cè)器的相應(yīng)接口完成注冊(cè);另一方面,調(diào)整域管理器的相關(guān)接口,域管理器在實(shí)現(xiàn)的時(shí)候繼承負(fù)責(zé)設(shè)備組件和服務(wù)組件的注冊(cè)和注銷的DomComponentRegistry接口和負(fù)責(zé)波形組件的注冊(cè)注銷的FacComponentRegistry接口,以實(shí)現(xiàn)設(shè)備和服務(wù)等注冊(cè)的功能,并且在設(shè)備、服務(wù)組件注冊(cè)的時(shí)候域管理器還會(huì)將組件的對(duì)象引用記錄在列表中,以后可以訪問(wèn)列表獲取已注冊(cè)設(shè)備、服務(wù)等的對(duì)象引用,起到管理的作用。
最后,框架服務(wù)接口中的File, FileSystem和FileManager提供了一個(gè)構(gòu)建分布式文件系統(tǒng)的框架,可以在SCA系統(tǒng)中支持多個(gè)不同的文件系統(tǒng),完成文件的遠(yuǎn)程訪問(wèn)、讀寫(xiě)、控制等功能。
然而對(duì)于單板卡的小型設(shè)備,文件系統(tǒng)只有一個(gè),而且沒(méi)有分布式的處理環(huán)境,也就完全沒(méi)有分布式文件系統(tǒng)的需求,反而冗余的結(jié)構(gòu)還會(huì)使文件系統(tǒng)的使用過(guò)程變得復(fù)雜,給使用者帶來(lái)很多不便。
另外由于一般只有一個(gè)GPP設(shè)備,文件系統(tǒng)的服務(wù)完全可以由GPP上的操作系統(tǒng)來(lái)提供,這樣還可以簡(jiǎn)化很多處理。由于使用的是基于POSIX的操作系統(tǒng),直接用操作系統(tǒng)的文件系統(tǒng)不會(huì)對(duì)移植性帶來(lái)很大影響。所以,SCA核心框架中支持文件系統(tǒng)的三個(gè)接口也裁剪掉。
此外接口裁剪還包括在小型化設(shè)備上無(wú)法發(fā)揮作用的一些其他接口,由于篇幅限制不再贅述。
3.2 接口繼承關(guān)系的優(yōu)化
SCA核心框架的設(shè)計(jì)采用面向?qū)ο蟮脑O(shè)計(jì)思想,按照應(yīng)用需求使用UML語(yǔ)言建模,達(dá)到對(duì)象屬性抽象的目的,模型則以一組具有規(guī)則和聯(lián)系的接口的形式呈現(xiàn)給開(kāi)發(fā)者,再以接口為單位,使用IDL文件記錄,IDL文件中的接口保證了核心框架的通用性和可移植性,IDL接口之間的關(guān)系則代表了核心框架的體系結(jié)構(gòu)。IDL接口之間主要有繼承和使用兩種關(guān)系,其中繼承關(guān)系很大程度上影響著接口間的耦合性,對(duì)體系結(jié)構(gòu)的靈活性至關(guān)重要。
在SCA2.2.2規(guī)范設(shè)計(jì)的標(biāo)準(zhǔn)級(jí)核心框架中,為了提高系統(tǒng)的通用性,規(guī)范強(qiáng)制限定了各個(gè)接口之間的繼承關(guān)系,并進(jìn)行了嚴(yán)格封裝,這種設(shè)計(jì)有很強(qiáng)的耦合性,開(kāi)放給用戶的接口受到限制,核心框架的靈活性受到很大影響。
在實(shí)際應(yīng)用開(kāi)發(fā)中,用戶經(jīng)常希望根據(jù)功能需求對(duì)核心框架的接口進(jìn)行選擇性實(shí)現(xiàn),但是由于核心框架對(duì)接口繼承關(guān)系的強(qiáng)制性,用戶在設(shè)計(jì)時(shí)必須仍然要保留所有規(guī)定的接口函數(shù),對(duì)于無(wú)功能需求的接口函數(shù)的處理方式只能是將其實(shí)現(xiàn)為空。
這種設(shè)計(jì)導(dǎo)致實(shí)現(xiàn)中存在大量的空接口函數(shù),不僅限制了系統(tǒng)的靈活性,而且增加了開(kāi)發(fā)者的負(fù)擔(dān)。由于這些接口在實(shí)現(xiàn)中要經(jīng)過(guò)CORBA的IDL編譯器編譯出了樁碼和框架碼,即使實(shí)現(xiàn)為空也會(huì)帶來(lái)內(nèi)存開(kāi)銷,造成系統(tǒng)浪費(fèi)。因?yàn)樾⌒驮O(shè)備通常功能比較單一,不需要支持豐富的操作,所以這種應(yīng)用場(chǎng)景下空接口函數(shù)更會(huì)頻繁出現(xiàn)。
針對(duì)以上問(wèn)題,本文采用了小粒度選擇性繼承的思想對(duì)核心框架的接口繼承關(guān)系進(jìn)行了優(yōu)化,以降低各接口之間的耦合性,提高了核心框架的靈活性。
一方面,對(duì)封裝了較多功能函數(shù)的接口進(jìn)行粒度細(xì)化,按照功能將其分裂成獨(dú)立的接口,每個(gè)接口具有原來(lái)的一部分接口函數(shù),對(duì)應(yīng)某種功能特點(diǎn),以解除SCA中接口封裝帶來(lái)的繼承耦合,為選擇性繼承打下基礎(chǔ)。
另一方面,調(diào)整接口間的繼承關(guān)系,取消掉原來(lái)一些強(qiáng)制的繼承關(guān)系,設(shè)計(jì)成可以根據(jù)需要選擇性繼承的結(jié)構(gòu),在IDL文件中描述接口繼承關(guān)系的時(shí)候使用宏定義的方式,針對(duì)不同應(yīng)用場(chǎng)景通過(guò)開(kāi)關(guān)宏的方式來(lái)選擇需要繼承的接口,避免繼承不需要的接口。最后,將選擇權(quán)交給用戶,不再只提供給用戶集成過(guò)的接口,對(duì)用戶開(kāi)放更多基本接口,并由用戶來(lái)決定選擇繼承這些接口。
這種繼承關(guān)系優(yōu)化方法應(yīng)用在了基本應(yīng)用接口和基本設(shè)備接口兩類接口中。核心框架中的基本應(yīng)用接口是一組描述應(yīng)用組件屬性的接口,應(yīng)用組件可以通過(guò)繼承并實(shí)現(xiàn)這些接口使應(yīng)用組件具備對(duì)應(yīng)操作。
根據(jù)SCA2.2.2規(guī)范,基本應(yīng)用接口包括生命周期(LifeCycle)、端口獲取器(PortSupplier)、可測(cè)試對(duì)象(TestableObject)、屬性集(PropertySet)和資源(Resource)等,并設(shè)定了嚴(yán)格的繼承關(guān)系——Resource接口強(qiáng)制繼承了上述其他接口,具體的應(yīng)用開(kāi)發(fā)組件再繼承Resource接口,形成了一個(gè)耦合性極強(qiáng)的結(jié)構(gòu),限制了子類必須繼承父類的相關(guān)操作,即使子類不需要對(duì)應(yīng)功能。
本文在優(yōu)化設(shè)計(jì)中,首先對(duì)接口進(jìn)行細(xì)化,將Resource中的函數(shù)start,stop分離出來(lái),做成另外的可控制組件(ControllableComponent)接口,并且將Resource中的屬性identifier也獨(dú)立出來(lái)成為新的組件標(biāo)識(shí)符(ComponentIdentifier)接口,另外Port和PortSupplier兩個(gè)接口合并成了端口存取器(PortAccessor)。
其次,改變接口間的繼承關(guān)系,設(shè)計(jì)Resource接口只繼承所有應(yīng)用都必須支持的接口(如LifeCycle),不再?gòu)?qiáng)制繼承其他的功能性接口,而應(yīng)用組件在繼承Resource的同時(shí),可以根據(jù)實(shí)際需要選擇性繼承ComponentIdentifier、PortAccessor、ControllableComponent、TestableObject、PropertySet這五個(gè)接口中的若干,接口繼承關(guān)系如圖 1所示。
類似地,基本設(shè)備接口的繼承關(guān)系也按照選擇性繼承的思想進(jìn)行了優(yōu)化,具體設(shè)計(jì)由于篇幅限制不再贅述
四、結(jié)束語(yǔ)
本文通過(guò)接口的裁剪和接口間繼承關(guān)系的優(yōu)化對(duì)SCA核心框架進(jìn)行了改進(jìn),實(shí)現(xiàn)了輕量級(jí)核心框架,降低了資源需求和開(kāi)發(fā)難度,有效提高了核心框架的靈活性,使其更適合資源受限的小型化設(shè)備等應(yīng)用場(chǎng)景。
參 考 文 獻(xiàn)
[1] Joint Program Executive Office (JPEO) Joint Tactical Radio System (JTRS).Software Communications Architecture Specification.Version 2.2.2.2006.
[2] Joint Program Executive Office (JPEO) Joint Tactical Radio System (JTRS).Software Communications Architecture Specification.Version Next
[3] Joint Program Executive Office (JPEO) Joint Tactical Radio System (JTRS).Software Communications Architecture Specification.Version 4.0.2012.
[4] 唐麒.小型化軟件通信體系結(jié)構(gòu)的研究與實(shí)現(xiàn).學(xué)位論文.國(guó)防科學(xué)技術(shù)大學(xué)電子科學(xué)與工程學(xué)院,2011.