999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Harmony系統(tǒng)工程的IMA應(yīng)用開發(fā)

2015-03-19 08:24:48徐文熊智勇張國全
關(guān)鍵詞:進(jìn)程定義系統(tǒng)

徐文,熊智勇,張國全

(航空電子系統(tǒng)綜合技術(shù)重點(diǎn)實(shí)驗(yàn)室,上海 200233)

隨著航空電子技術(shù)的發(fā)展,在軍用和民用領(lǐng)域,越來越多的先進(jìn)機(jī)型采用綜合模塊化航空電子(IMA)系統(tǒng)體系架構(gòu),如 F-22、A380 等[1].相比傳統(tǒng)的聯(lián)合式架構(gòu),IMA系統(tǒng)提供一個(gè)統(tǒng)一的硬件平臺(tái),飛機(jī)的功能由各個(gè)應(yīng)用實(shí)現(xiàn),每個(gè)應(yīng)用宿主在各自的分區(qū)當(dāng)中,相互獨(dú)立,互不干擾,提高了資源利用率,從而極大地減少了飛機(jī)的質(zhì)量和開發(fā)成本[2].Arinc 653規(guī)范定義了一種應(yīng)用與IMA模塊操作系統(tǒng)的接口[3],稱為 Application/Execution(APEX)接口,應(yīng)用基于該接口規(guī)范進(jìn)行開發(fā),通過該接口實(shí)現(xiàn)與IMA模塊操作系統(tǒng)的數(shù)據(jù)通信,應(yīng)用開發(fā)人員不需要考慮平臺(tái)本身,從而縮短了應(yīng)用開發(fā)周期.美國風(fēng)河公司開發(fā)的嵌入式實(shí)時(shí)操作系統(tǒng)VxWorks653滿足Arinc653規(guī)范,并提供了相應(yīng)的集成開發(fā)環(huán)境Workbench.

傳統(tǒng)的基于文檔的開發(fā)方法將軟件的設(shè)計(jì)建立在對純文字需求的理解上,用戶只有在軟件開發(fā)的后期,通過系統(tǒng)測試階段的工作才能真正了解軟件的功能和性能是否滿足要求,這將導(dǎo)致修正設(shè)計(jì)錯(cuò)誤或更改設(shè)計(jì)所需的開銷隨著工程階段的深入而成倍地增加.基于模型的開發(fā)方法是一種新的軟件開發(fā)方法[4],可以對軟件進(jìn)行快速的設(shè)計(jì)、開發(fā)、驗(yàn)證和確認(rèn),提高軟件開發(fā)效率[5].通過對軟件進(jìn)行建模,將文字需求可視化,讓開發(fā)人員和用戶對所要開發(fā)的軟件這個(gè)“未來世界”達(dá)成共識(shí)[6],建模過程也是軟件的設(shè)計(jì)過程,可以邊設(shè)計(jì)邊測試,當(dāng)模型得到確認(rèn)之后就可以進(jìn)行軟件的實(shí)現(xiàn).IBM公司基于 Rhapsody提出了Rational Harmony系統(tǒng)工程(SE)方法,先在Rhapsody中使用Harmony框架建立IMA應(yīng)用的軟件模型,再基于此模型使用Workbench進(jìn)行具體的軟件開發(fā).

1 Harmony系統(tǒng)工程建模

Harmony系統(tǒng)工程方法將系統(tǒng)設(shè)計(jì)分為3個(gè)階段,需求分析階段、系統(tǒng)功能分析階段以及設(shè)計(jì)綜合階段[7].建模的目的是讓軟件開發(fā)人員對軟件需求有更準(zhǔn)確的理解,Harmony系統(tǒng)工程中邊設(shè)計(jì)邊測試的方法可以快速和清晰地讓一些潛在的設(shè)計(jì)問題暴露出來,以實(shí)現(xiàn)真正滿足需求的軟件設(shè)計(jì).

本文結(jié)合某預(yù)研項(xiàng)目中的無人機(jī)控制管理(UAVM)系統(tǒng)介紹了使用Harmony方法的系統(tǒng)建模的實(shí)踐過程,軟件開發(fā)人員拿到軟件需求文檔,按照以下步驟進(jìn)行建模:①根據(jù)需求分析結(jié)果構(gòu)建系統(tǒng)用例圖;②針對每個(gè)用例,構(gòu)建系統(tǒng)活動(dòng)圖;③對于每個(gè)活動(dòng)圖,生成時(shí)序圖和內(nèi)部塊圖;④構(gòu)建系統(tǒng)狀態(tài)圖;⑤運(yùn)行并驗(yàn)證模型.

1.1 系統(tǒng)用例圖的構(gòu)建

系統(tǒng)用例圖是對軟件需求的提煉,將需求所要實(shí)現(xiàn)的功能進(jìn)行分組形成用例.UAVM的用例圖如圖1所示.

圖1 UAVM系統(tǒng)用例圖Fig.1 UAVM system use case diagram

UAVM為IMA模塊中的一個(gè)分區(qū)應(yīng)用,由無人機(jī)控制權(quán)交接管理(ConnectionManage)、無人機(jī)傳感器控制(SensorControl)、無人機(jī)飛行計(jì)劃管理(FlightPlanManage)、無人機(jī)載機(jī)信息處理(RUVInformationProcess)、健康監(jiān)控管理(Health-Monitor)5個(gè)子功能模塊組成,與指揮中心(OC)、地面站(GCS)、目標(biāo)數(shù)據(jù)處理(TDP)、無人機(jī)(RUV)、顯示處理單元(DPU)、狀態(tài)監(jiān)控(HUM)這些外圍設(shè)備進(jìn)行信息交互.

1.2 系統(tǒng)活動(dòng)圖的構(gòu)建

每個(gè)用例都有各自的活動(dòng)圖,它描述的是典型的工作流程,某種意義上就是軟件流程圖,本文以第1個(gè)用例控制權(quán)管理為例,如圖2所示.

圖2 無人機(jī)控制權(quán)交接管理活動(dòng)圖Fig.2 UAV control right transfer manage activity view

構(gòu)建活動(dòng)圖時(shí)應(yīng)該關(guān)注其與外部系統(tǒng)間的信息交互,控制權(quán)管理模塊依次接受來自O(shè)C的演示場景編號(hào)指令、演示開始控制指令、組網(wǎng)指令、控制權(quán)交接指令,根據(jù)控制權(quán)交接指令確認(rèn)交接對象,判斷是獲取無人機(jī)控制權(quán)還是交出無人機(jī)控制權(quán),如果是獲取,同時(shí)發(fā)送控制權(quán)移交狀態(tài)報(bào)告給OC和 GCS,發(fā)送與無人機(jī)的連接狀態(tài)給DPU,反之等待GCS發(fā)送控制權(quán)移交狀態(tài)報(bào)告,發(fā)送與無人機(jī)的連接狀態(tài)給DPU.

1.3 系統(tǒng)時(shí)序圖的生成

系統(tǒng)時(shí)序圖描述的是系統(tǒng)與外部設(shè)備的交互的先后順序,時(shí)序圖可以根據(jù)構(gòu)建的活動(dòng)圖自動(dòng)生成,需要注意的是,時(shí)序圖應(yīng)遍歷活動(dòng)圖中的每一個(gè)活動(dòng).用例控制權(quán)管理的時(shí)序圖如圖3所示.

1.4 系統(tǒng)內(nèi)部塊圖的生成

內(nèi)部塊圖反映的是該系統(tǒng)與外部設(shè)備之間通過端口連接表示的靜態(tài)交聯(lián)關(guān)系,也就是接口控制文檔(ICD)的圖形化體現(xiàn),自動(dòng)生成的內(nèi)部塊圖如圖4所示.

內(nèi)部塊圖可以清晰地反映用例與哪些外部系統(tǒng)有信息交互,以及信息交互的內(nèi)容,以與OC的端口為例,可以看到有4條輸入的信息流和1條輸出的信息流.

圖3 時(shí)序圖Fig.3 Sequence diagram

1.5 系統(tǒng)狀態(tài)圖的構(gòu)建與執(zhí)行

狀態(tài)圖描述的是用例在不同場景下基于狀態(tài)的行為,根據(jù)活動(dòng)圖和時(shí)序圖可以生成初始狀態(tài)圖,初始狀態(tài)圖主要反映信息的輸入和輸出,通過執(zhí)行狀態(tài)圖,開發(fā)人員即可驗(yàn)證所設(shè)計(jì)的功能是否和需求一致,用例無人機(jī)控制管理的狀態(tài)圖的執(zhí)行如圖5所示.

圖5 系統(tǒng)狀態(tài)圖Fig.5 System state diagram

2 IMA系統(tǒng)開發(fā)角色

IMA系統(tǒng)主要由兩大構(gòu)件組成:一是應(yīng)用,二是IMA模塊[8].Arinc 653規(guī)范中給出了一種IMA模塊結(jié)構(gòu),主要由以下幾個(gè)層次組成(如圖6所示):硬件層、操作系統(tǒng)層(RTOS)、Arinc 653應(yīng)用程序接口層(APEX)、應(yīng)用層[9].

圖6 IMA模塊結(jié)構(gòu)Fig.6 IMA module architecture

硬件層提供各種外圍設(shè)備接口,如AFDX、Arinc 429、CAN、離散量 I/O、模擬量 I/O 等,包含處理器、硬件時(shí)鐘、MMU、內(nèi)存等.操作系統(tǒng)層管理各個(gè)分區(qū)和分區(qū)的通信,對分區(qū)來說,操作系統(tǒng)管理一個(gè)分區(qū)的進(jìn)程.操作系統(tǒng)與硬件接口層相互作用,可以實(shí)現(xiàn)通信、調(diào)度、內(nèi)存管理、定時(shí)和健康監(jiān)控.Arinc 653應(yīng)用程序接口層為航空電子應(yīng)用軟件提供服務(wù),可以實(shí)現(xiàn)應(yīng)用之間的通信,VxWorks 653中由分區(qū)操作系統(tǒng)完成該項(xiàng)功能.應(yīng)用軟件層由各個(gè)分區(qū)組成,每個(gè)應(yīng)用可以宿主一個(gè)或多個(gè)分區(qū),執(zhí)行應(yīng)用程序,實(shí)現(xiàn)飛機(jī)功能.配置表可供操作系統(tǒng)和硬件接口系統(tǒng)用于配置內(nèi)存訪問、調(diào)度和通信等.

配置和構(gòu)建一個(gè)IMA系統(tǒng)是一個(gè)復(fù)雜的過程,根據(jù)IMA系統(tǒng)架構(gòu),通常分為3種開發(fā)角色,分別是平臺(tái)開發(fā)人員、應(yīng)用開發(fā)人員和系統(tǒng)綜合人員,3種角色互相協(xié)同,就系統(tǒng)需求和設(shè)計(jì)約束等進(jìn)行協(xié)商.

平臺(tái)開發(fā)人員負(fù)責(zé)IMA平臺(tái)的開發(fā),根據(jù)模塊核心操作系統(tǒng)、分區(qū)操作系統(tǒng)和共享庫的設(shè)計(jì)需求,向其他開發(fā)人員提供核心操作系統(tǒng)配置文件、共享庫配置文件以及相關(guān)的鏡像文件.應(yīng)用開發(fā)人員負(fù)責(zé)IMA分區(qū)應(yīng)用的開發(fā),根據(jù)應(yīng)用的設(shè)計(jì)需求,為其他開發(fā)人員提供應(yīng)用配置文件及應(yīng)用的鏡像文件.系統(tǒng)綜合人員負(fù)責(zé)將平臺(tái)和應(yīng)用進(jìn)行綜合從而形成一個(gè)完整的IMA系統(tǒng),形式上表現(xiàn)為對系統(tǒng)配置表的開發(fā),編譯生成IMA模塊的配置記錄和最終的系統(tǒng)鏡像文件,加載到IMA模塊當(dāng)中.

3 IMA應(yīng)用開發(fā)

雖然定義了3種開發(fā)角色,每個(gè)角色都有各自的分工,但是對于IMA應(yīng)用開發(fā)人員來說,其他兩種角色的工作在其開發(fā)應(yīng)用的過程中也是有所涉及的.對于VxWorks 653來說,IMA模塊的構(gòu)建過程分為8個(gè)部分,分別是模塊操作系統(tǒng)的構(gòu)建、認(rèn)證環(huán)境代理的構(gòu)建、分區(qū)操作系統(tǒng)的構(gòu)建、共享庫的構(gòu)建、共享數(shù)據(jù)的構(gòu)建、用戶配置記錄的構(gòu)建、應(yīng)用的構(gòu)建和綜合的構(gòu)建,每個(gè)構(gòu)建過程都是獨(dú)立的[10],這8個(gè)構(gòu)建過程并不都是必須的,結(jié)合某預(yù)研項(xiàng)目的例子,只涉及到了模塊操作系統(tǒng)的構(gòu)建、分區(qū)操作系統(tǒng)的構(gòu)建、應(yīng)用的構(gòu)建和綜合的構(gòu)建,而這4個(gè)構(gòu)建過程對任何一個(gè)IMA系統(tǒng)來說都是必須的.

3.1 模塊操作系統(tǒng)的構(gòu)建

平臺(tái)開發(fā)人員已經(jīng)提供了模塊操作系統(tǒng)的配置文件bsp.xml,應(yīng)用開發(fā)人員在這個(gè)過程只需要通過該配置表生成一個(gè)鏡像文件即可,因此只需要編寫一個(gè) Makefile文件即可[11],主要內(nèi)容如下:

該Makefile用來創(chuàng)建一個(gè)核心操作系統(tǒng)項(xiàng)目并最終編譯鏈接生成核心操心系統(tǒng)鏡像文件coreOS.sm.

VxWorks 653支持2種模式下3種鏡像文件的加載,2種模式包括調(diào)試模式和認(rèn)證模式,3種鏡像包括網(wǎng)絡(luò)可加載鏡像、RAM駐留系統(tǒng)鏡像以及ROM駐留系統(tǒng)鏡像,這里通過shell編譯生成的是調(diào)試模式下的網(wǎng)絡(luò)可加載系統(tǒng)鏡像.

3.2 分區(qū)操作系統(tǒng)的構(gòu)建

分區(qū)操作系統(tǒng)包含在VxWorks 653中的系統(tǒng)共享庫里面,非系統(tǒng)共享庫指的是開發(fā)人員自己定義的一些可以被其他分區(qū)共享的代碼,分區(qū)操作系統(tǒng)可以看成是分區(qū)應(yīng)用與核心操作系統(tǒng)之間的一層中間件,Arinc 653所規(guī)定的API服務(wù)調(diào)用就是通過分區(qū)操作系統(tǒng)來實(shí)現(xiàn)的.分區(qū)操作系統(tǒng)某種程度也可以理解為VxWorks 5.5,因?yàn)樗鼘xWorks 5.5的API函數(shù)調(diào)用也是完全支持的,只不過使用VxWorks 5.5 API函數(shù)開發(fā)出來的應(yīng)用,稱之為vThreads應(yīng)用,不可以移植到其他平臺(tái)上;而用Arinc 653 API函數(shù)開發(fā)出來的應(yīng)用,稱之為APEX應(yīng)用,可以移植到任何滿足Arinc 653標(biāo)準(zhǔn)的平臺(tái)之上.

在分區(qū)操作系統(tǒng)的構(gòu)建過程中,應(yīng)用開發(fā)人員需要提供3個(gè)文件,即兩個(gè)配置表和一個(gè)Makefile文件,兩個(gè)配置表分別是共享庫描述文檔 uavm-pos.xml和共享庫 API文檔 pos-api.xml.

3.2.1 分區(qū)操作系統(tǒng)配置表的開發(fā)

共享庫描述文檔定義共享庫是否為系統(tǒng)共享庫(即分區(qū)操作系統(tǒng)),共享庫虛擬地址以及共享庫需要占用的內(nèi)存大小[12],主要內(nèi)容如下:

注意分區(qū)操作系統(tǒng)的虛擬地址VirtualAddress屬性值要和模塊配置表bsp.xml中的保持一致.

共享庫API文檔定義了該分區(qū)操作系統(tǒng)可以提供哪些API函數(shù)供應(yīng)用調(diào)用,應(yīng)用開發(fā)人員可以自定義這些API函數(shù),主要內(nèi)容如下:

導(dǎo)入的 vthreads.xml和 apex.xml配置表定義了具體的API函數(shù),其中前者包括核心操作系統(tǒng)本身的系統(tǒng)調(diào)用函數(shù),后者涵蓋了Arinc 653中所定義的服務(wù)程序.

3.2.2 分區(qū)操作系統(tǒng)Makefile的開發(fā)

分區(qū)操作系統(tǒng)的Makefile用來編譯生成分區(qū)操作系統(tǒng)鏡像文件 pos.sm以及其插樁文件pos-stubs.o,后者作為應(yīng)用編譯的一個(gè)輸入文件,用來明確告知應(yīng)用可以調(diào)用哪些API服務(wù),該Makefile主要內(nèi)容如下:

其中,sslMain.o文件用來初始化分區(qū)操作系統(tǒng),vThreadsComponent.o 文件提供 vthreads.xml的 API函數(shù)功能,ApexComponent.o文件提供apex.xml的 API函數(shù)功能,pos-ept.o 是分區(qū)操作系統(tǒng)進(jìn)入表,pos.lds是相應(yīng)的鏈接文件.

3.3 應(yīng)用的構(gòu)建

應(yīng)用的構(gòu)建是應(yīng)用開發(fā)人員的最主要工作,IMA應(yīng)用的開發(fā),歸根到底是源碼的開發(fā)和調(diào)試.在應(yīng)用的構(gòu)建過程中,需要一個(gè)應(yīng)用配置表文件、源代碼文件以及一個(gè)Makefile文件,該配置表文件稱為應(yīng)用描述文檔.

3.3.1 應(yīng)用描述文檔的開發(fā)

應(yīng)用描述文檔中定義了應(yīng)用所需要的內(nèi)存以及相應(yīng)端口的配置,應(yīng)用通過這些端口與外界進(jìn)行通信,其主要內(nèi)容如下:

Arinc 653標(biāo)準(zhǔn)中定義了兩種類型的端口,隊(duì)列端口(queuing port)和采樣端口(sampling port):隊(duì)列端口以消息隊(duì)列的形式緩存多條消息,即下一條傳輸消息并不立刻覆蓋當(dāng)前消息,以“先進(jìn)先出”的形式進(jìn)行傳輸,當(dāng)消息被讀取后,該消息在隊(duì)列中被清除;采樣端口的特點(diǎn)是當(dāng)前消息會(huì)被下一條傳輸消息所更新.

配置表中定義了端口的名稱、類型、方向和大小,采樣端口還定義了其采樣率的值.隊(duì)列源端口的Protocol屬性定義了兩種端口協(xié)議,分別為SENDER_BLOCK 和 RECEIVE_DISCARD,二者是VxWorks 653單獨(dú)定義的,Arinc 653標(biāo)準(zhǔn)中并沒有規(guī)定.當(dāng)從一個(gè)源端口向多個(gè)目的端口發(fā)送消息時(shí),如果使用SENDER_BLOCK協(xié)議,當(dāng)有一個(gè)目的端口滿棧了,則源端口停止向多有端口發(fā)送消息,如果使用RECEIVE_DISCARD協(xié)議,當(dāng)有一個(gè)目的端口滿棧了,則源端口停止向該目的端口發(fā)送消息,但并不影響向其他端口發(fā)送消息.

通信端口在分區(qū)初始化階段生成,兩種端口只能進(jìn)行單方向通信.

3.3.2 源程序的開發(fā)

在之前Rhapsody建模的過程中,應(yīng)用開發(fā)人員已經(jīng)理清了程序的設(shè)計(jì)思路,可以參照活動(dòng)圖,也就是軟件流程圖設(shè)計(jì)程序,編寫代碼,所定義的函數(shù)功能塊名應(yīng)與活動(dòng)圖中定義的Action保持一致,便于對照查閱.

IMA應(yīng)用一般由多個(gè)進(jìn)程組成,進(jìn)程在分區(qū)處于正常模式的時(shí)候運(yùn)行,Arinc 653定義了每個(gè)分區(qū)有4種工作模式,分別是冷啟動(dòng)模式(COLD_START)、熱啟動(dòng)模式(WARM_START)、空閑模式(IDLE)和正常模式(NORMAL),4種模式的轉(zhuǎn)換關(guān)系如圖7所示.

圖7 分區(qū)工作模式轉(zhuǎn)換Fig.7 Partition working modes transform

冷啟動(dòng)和熱啟動(dòng)模式主要用于分區(qū)初始化階段,包括創(chuàng)建通信端口和進(jìn)程,其中冷啟動(dòng)模式是IMA模塊從掉電狀態(tài)上電來創(chuàng)建分區(qū)的過程,而熱啟動(dòng)則是由于遇到分區(qū)異常而重啟的狀況,熱啟動(dòng)過程中,一些數(shù)據(jù)和代碼仍然保留,不像冷啟動(dòng)過程全部需要重新創(chuàng)建[13].當(dāng)分區(qū)啟動(dòng)異常或者分區(qū)正常運(yùn)行時(shí)發(fā)生錯(cuò)誤需要中止分區(qū)時(shí),分區(qū)則會(huì)進(jìn)入空閑模式,該模式中分區(qū)不創(chuàng)建任何通信端口,不運(yùn)行任何進(jìn)程,但是操作系統(tǒng)仍然會(huì)為其保留時(shí)間窗.正常模式是指該分區(qū)可以正常運(yùn)行,被操作系統(tǒng)調(diào)度,執(zhí)行飛機(jī)功能.

生成隊(duì)列端口和采樣端口的服務(wù)分別是CREATE_QUEUING_PORT和CREATE_SAMPLING_PORT,通過隊(duì)列端口發(fā)送和接受消息的服務(wù)分別為SEND_QUEUING_MESSAGE和RECEIVE_QUEUING_MESSAGE,通過采樣端口發(fā)送和接受消息的服務(wù)分別為WRITE_SAMPING_MESSAGE和READ_SAMPING_MESSAGE,部分源碼如下:

源碼中的端口參數(shù)必須和應(yīng)用描述文檔中的保持一致,當(dāng)改動(dòng)一方,另外一方也必須改動(dòng).

應(yīng)用開發(fā)人員可以通過調(diào)用服務(wù)GET_PARTITION_STATUS獲取分區(qū)運(yùn)行狀態(tài),調(diào)用服務(wù)SET_PARTITION_MODE設(shè)置分區(qū)工作模式,此外,VxWork653還額外增加了一個(gè)服務(wù)SET_SCHEDULE_MODE用來設(shè)置分區(qū)新的調(diào)度,比如是基于主時(shí)間框架的,當(dāng)前分區(qū)時(shí)間窗的,還是下一個(gè)時(shí)鐘單元.

IMA應(yīng)用的執(zhí)行,歸根到底是進(jìn)程的運(yùn)行,分區(qū)相當(dāng)于進(jìn)程的容器.進(jìn)程包括周期性進(jìn)程和非周期性進(jìn)程兩種類型,周期性進(jìn)程在分區(qū)中以固定的周期運(yùn)行,而非周期性進(jìn)程通常伴隨著相應(yīng)事件的觸發(fā).進(jìn)程也有4種工作狀態(tài),分別是休眠、等待、準(zhǔn)備和運(yùn)行,其狀態(tài)轉(zhuǎn)移條件如圖8所示.

圖8 進(jìn)程狀態(tài)轉(zhuǎn)移Fig.8 Process states transform

在分區(qū)處于冷/熱啟動(dòng)模式時(shí),調(diào)用CREATE_PROCESS服務(wù)創(chuàng)建進(jìn)程,此時(shí)進(jìn)程處于休眠狀態(tài),調(diào)用START服務(wù)來啟動(dòng)一個(gè)進(jìn)程,此時(shí)進(jìn)程一直處于等待狀態(tài),當(dāng)分區(qū)進(jìn)入正常模式后,注意此時(shí)非周期進(jìn)程會(huì)立刻進(jìn)入準(zhǔn)備狀態(tài),如果被分配到CPU資源,會(huì)立刻運(yùn)行,而周期性進(jìn)程仍然是等待狀態(tài),只有在下一個(gè)分區(qū)調(diào)度周期時(shí)會(huì)進(jìn)入準(zhǔn)備狀態(tài).在創(chuàng)建進(jìn)程之前要先定義好進(jìn)程的屬性,部分源碼如下:

processTable中的進(jìn)程參數(shù)依次為進(jìn)程的名稱、入口函數(shù)、堆棧、優(yōu)先級、進(jìn)程的周期、進(jìn)程的持續(xù)時(shí)間、進(jìn)程的實(shí)時(shí)性.

分區(qū)中進(jìn)程的調(diào)度主要采取優(yōu)先級搶占的方式,低優(yōu)先級的進(jìn)程可以被高優(yōu)先級的進(jìn)程搶占,相同優(yōu)先級的進(jìn)程按照“時(shí)間先后”的原則分配CPU資源,如圖9所示.

圖9 進(jìn)程調(diào)度Fig.9 Process schedule

圖中P2是周期性進(jìn)程,P1、P3、HM(健康監(jiān)控)是非周期性進(jìn)程,優(yōu)先級依次升高,周期2中,P2被P3搶占,導(dǎo)致P2未在截止時(shí)間內(nèi)完成,會(huì)觸發(fā)HM進(jìn)程,在下一個(gè)周期中恢復(fù)P2進(jìn)程并完成.當(dāng)然,開發(fā)人員可以調(diào)用“搶占禁止”服務(wù)來鎖住當(dāng)前進(jìn)程,使其不被其他高優(yōu)先級的進(jìn)程搶占,待其完成之后,再調(diào)用解鎖服務(wù).

周期性進(jìn)程在程序最后調(diào)用PERIODIC_WAIT或TIMED_WAIT服務(wù)通知系統(tǒng)進(jìn)程運(yùn)行結(jié)束,釋放CPU資源并等待下一次調(diào)度,非周期性進(jìn)程調(diào)用STOP_SELF服務(wù)來結(jié)束進(jìn)程釋放CPU資源.

對于進(jìn)程間的通信,操作系統(tǒng)提供了兩種通信端口,稱為“緩存”(buffer)和“黑板”(blackboard),緩存和黑板的功能分別類似于分區(qū)間通信的“隊(duì)列端口”和“采樣端口”,所不同的是通過二者之間的消息可以進(jìn)行雙向傳輸.與分區(qū)間通信服務(wù)類似,開發(fā)人員可以創(chuàng)建緩存和黑板,定義其相關(guān)屬性,譬如身份標(biāo)識(shí)、消息大小等,可以發(fā)送和接受消息,還可以獲取當(dāng)前端口的信息,譬如有多少進(jìn)程正在等待訪問該端口等.

對于進(jìn)程間的同步,操作系統(tǒng)通過“信號(hào)量”(semaphore)和“事件”(event)實(shí)現(xiàn).在VxWorks 653中采用計(jì)數(shù)信號(hào)量,其數(shù)值是一個(gè)非負(fù)整數(shù),當(dāng)多個(gè)進(jìn)程需要訪問同一資源時(shí),開發(fā)人員可以調(diào)用服務(wù)創(chuàng)建信號(hào)量,定義信號(hào)量身份標(biāo)識(shí),指定信號(hào)量數(shù)值大小,進(jìn)程以什么樣的方式獲取信號(hào)量(“先進(jìn)先出”或“優(yōu)先級搶占”).進(jìn)程需要獲取信號(hào)量才可以訪問資源,此時(shí)信號(hào)量數(shù)值減一,其他進(jìn)程則處于等待狀態(tài),進(jìn)程完成之后則需要釋放信號(hào)量,此時(shí)信號(hào)量數(shù)值增一.“事件”則是進(jìn)程觸發(fā)的某種條件,事件有兩種狀態(tài),一種是“上(up)”,一種是“下(down)”.當(dāng)事件處于up的狀態(tài)時(shí),所有等待該事件的進(jìn)程會(huì)進(jìn)入準(zhǔn)備狀態(tài),開發(fā)人員在創(chuàng)建事件時(shí)初始狀態(tài)為down.

VxWorks 653的默認(rèn)主函數(shù)名為usrAppInit(),無人機(jī)控制管理應(yīng)用主函數(shù)源碼如下:

portC()用來創(chuàng)建分區(qū)間通信端口,createP()創(chuàng)建應(yīng)用的進(jìn)程,START函數(shù)啟動(dòng)第一個(gè)進(jìn)程,SET_PARTITION_MODE函數(shù)設(shè)置分區(qū)進(jìn)入正常模式,進(jìn)程開始運(yùn)行.

3.3.3 應(yīng)用Makefile文件的開發(fā)

應(yīng)用的Makefile文件主要內(nèi)容如下:

應(yīng)用的鏡像 uavm.sm依賴于 vxMain.o、uavm.o、uavm.lds、pos-stubs.o 文件,其中 vxMain.o用于應(yīng)用初始化,pos-stubs.o文件是應(yīng)用于分區(qū)操作系統(tǒng)的接口,分區(qū)地址變量PARTADDR要與bsp.xml保持一致.

3.4 綜合的構(gòu)建

綜合的構(gòu)建主要是生成IMA模塊系統(tǒng)配置記錄文件configRecord.reloc,組合核心操作系統(tǒng)、分區(qū)操作系統(tǒng)、應(yīng)用的系統(tǒng)鏡像文件,將它們加載到IMA平臺(tái)中運(yùn)行.該過程的主要工作是模塊配置表的開發(fā)、分區(qū)描述配置表的開發(fā)以及需要一個(gè)Makefile文件,應(yīng)用開發(fā)人員開發(fā)的模塊配置表與最終的系統(tǒng)開發(fā)人員開發(fā)的配置表內(nèi)容是不一樣的,應(yīng)用開發(fā)人員做綜合的目的是為了驗(yàn)證自己應(yīng)用的功能是否正確,而系統(tǒng)開發(fā)人員需要驗(yàn)證所有分區(qū)上應(yīng)用的功能.

3.4.1 模塊配置表的開發(fā)

模塊配置表中導(dǎo)入了之前核心操作系統(tǒng)配置表、分區(qū)操作系統(tǒng)描述文檔、應(yīng)用描述文檔的信息,定義了分區(qū)的調(diào)度周期和持續(xù)時(shí)間、分區(qū)間通信通道、健康監(jiān)控、需要加載的鏡像文件等信息,部分內(nèi)容如下:

Schedule元素中各個(gè)分區(qū)的duration之和就是主時(shí)間框架[14],Connections元素為各個(gè)分區(qū)之間架起通信的“橋梁”,Payload元素中列出了需要加載的鏡像.

3.4.2 分區(qū)描述文檔的開發(fā)

每個(gè)分區(qū)都有各自的配置表,稱為分區(qū)描述文檔,以分區(qū)uavm為例,其主要內(nèi)容如下:

Application元素指定了該分區(qū)所宿主的應(yīng)用,SharedLibraryRegion元素指定了該分區(qū)調(diào)用的共享庫為分區(qū)操作系統(tǒng),RequiredMemorySize元素定義了分區(qū)所需要的內(nèi)存大小.

3.4.3 綜合Makefile文件的開發(fā)

綜合過程中的Makefile文件用來將之前生成的模塊的各個(gè)鏡像組合在一起,本身也編譯生成一個(gè)配置記錄文件,主要內(nèi)容如下:

其中Makefile.rules文件編譯生成鏡像加載列表文件 boot.txt、配置記錄表 configRecord.xml以及配置記錄鏡像configRecord.reloc文件,net表示編譯生成的是一個(gè)網(wǎng)絡(luò)可加載鏡像,如果換成ram和rom則分別表示生成的是RAM駐留系統(tǒng)鏡像和ROM駐留的系統(tǒng)鏡像,checkSize檢查系統(tǒng)的鏡像的大小是否超出預(yù)限值.

4 IMA應(yīng)用測試

IMA應(yīng)用的測試主要是功能和接口的測試,需要提供一個(gè)仿真的硬件平臺(tái)來運(yùn)行應(yīng)用,同時(shí)需要一些測試樁為被測應(yīng)用提供相關(guān)仿真數(shù)據(jù),譬如來自其他應(yīng)用的數(shù)據(jù),來自外部設(shè)備的數(shù)據(jù).這就需要建立另一分區(qū),編寫測試應(yīng)用,仿真所需要的外部激勵(lì)和響應(yīng)[15].

4.1 測試應(yīng)用的開發(fā)

建立另一分區(qū),開發(fā)測試應(yīng)用uavmTest,仿真外圍設(shè)備OC、GCS、RUV、DPU發(fā)送和接收數(shù)據(jù),通過觀察數(shù)據(jù)內(nèi)容正確與否,判斷UAVM與外界通信是否正常,如圖10所示.

圖10 應(yīng)用測試框圖Fig.10 Application testing framework

測試應(yīng)用與被測應(yīng)用共享模塊操系統(tǒng)和分區(qū)操作系統(tǒng),其應(yīng)用描述文檔中的端口與被測應(yīng)用的端口一一對應(yīng).針對用例圖中的第1個(gè)用例,對于無人機(jī)控制權(quán)交接管理模塊,在測試應(yīng)用中實(shí)現(xiàn)以下功能:依次仿真發(fā)送來自O(shè)C的演示場景編號(hào)、演示開始控制、組網(wǎng)指令、控制權(quán)交接指令,仿真接收UAVM發(fā)送給OC和GCS的控制權(quán)移交狀態(tài)報(bào)告,仿真接收UAVM發(fā)送給DPU的與無人機(jī)連接狀態(tài),仿真發(fā)送來自GCS的控制權(quán)移交狀態(tài)報(bào)告.

4.2 應(yīng)用的加載

應(yīng)用的鏡像需要連同核心操作系統(tǒng)鏡像、分區(qū)操作系統(tǒng)鏡像以及配置記錄一起加載到IMA平臺(tái)當(dāng)中,也可以使用Workbench自帶的VxSim仿真器,后者需要修改相對應(yīng)的虛擬地址.將鏡像加載到目標(biāo)機(jī)中,部分運(yùn)行結(jié)果如圖11所示.

IMA應(yīng)用開發(fā)使用交叉式開發(fā)環(huán)境,在應(yīng)用開發(fā)階段,為了便于調(diào)試,通常使用打印輸出的方式來直觀的顯示程序的運(yùn)行結(jié)果,在最終的程序代碼中需要將其注釋.圖 11中,“Process1~Process8”語句代表應(yīng)用創(chuàng)建進(jìn)程成功,“Waiting for”語句代表應(yīng)用等待外界相應(yīng)事件,“Testing……”語句代表測試分區(qū)的應(yīng)用在此刻發(fā)送相應(yīng)仿真信息.

圖11 程序運(yùn)行結(jié)果Fig.11 Application running result

5 結(jié)論

通過Harmony系統(tǒng)建模方法對IMA應(yīng)用進(jìn)行軟件開發(fā),得出以下結(jié)論:

1)基于模型的軟件設(shè)計(jì)方法具有更高的可視化程度,可以在更高層次進(jìn)行設(shè)計(jì)與驗(yàn)證,使用該方法開發(fā)IMA應(yīng)用可以減少出錯(cuò)概率.

2)IMA應(yīng)用的開發(fā)過程中,模塊操作系統(tǒng)的構(gòu)建、分區(qū)操作系統(tǒng)的構(gòu)建以及綜合的構(gòu)建過程中所開發(fā)的文件在任何一個(gè)IMA應(yīng)用開發(fā)過程中內(nèi)容都是類似的,具有一定的共性,只有在應(yīng)用的構(gòu)建過程中所開發(fā)的文件是特別的,不同的應(yīng)用有著不同的源碼,實(shí)現(xiàn)不同的功能,有著不同的內(nèi)存配置和端口配置.

References)

[1]周慶,劉斌,余正偉,等.綜合模塊化航電軟件仿真測試環(huán)境研究[J].航空學(xué)報(bào),2012,33(4):723-733.Zhou Q,Liu B,Yu ZW,et al.A framework of simulation testing environment for integrated modular avionics software[J].Acta Aeronautica et Astronautica Sinica,2012,33(4):722-733(in Chinese).

[2]張炯,呂紫旭,胡彥彥,等.虛擬化技術(shù)在綜合化航電系統(tǒng)中的應(yīng)用[J].北京航空航天大學(xué)學(xué)報(bào),2010,36(2):128-130.Zhang J,Lü Z X,Hu Y Y,et al.Perspective view of virtualization technologies for avionics system[J].Journal of Beijing University of Aeronautics and Astronautics,2010,36(2):128-129(in Chinese).

[3]鄭軍,劉暢,任占勇.綜合模塊化航空電子軟件測試環(huán)境[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(8):2737-2738.Zheng J,Liu C,Ren Z Y.Integrated modular avionics software testing environment[J].Computer Egineering and Design,2011,32(8):2737-2738(in Chinese).

[4]蒲小勃.現(xiàn)代航空電子系統(tǒng)與綜合[M].北京:航空工業(yè)出版社,2013:354-356.Pu X B.Modern avionics system and integration[M].Beijing:Aviation Industry Press,2013:354-356(in Chinese).

[5] Hoffman H P.Rational Harmony for systems engineering deskbook,Release3.1[M].Somers,NY:IBM Software Group,2010:45-50.

[6]王安生.軟件工程化[M].北京:清華大學(xué)出版社,2014:136-138.Wang A S.Software engineering[M].Beijing:Tsinghua University Press,2014:136-138(in Chinese).

[7]張彥,莊錫明.基于模型的開發(fā)方法在通信管理模塊軟件中的應(yīng)用[J].航空電子技術(shù),2013,44(2):31-32.Zhang Y,Zhuang X M.Application of model-based development in communication management module[J].Avionics Technology,2013,44(2):31-32(in Chinese).

[8] RTCA DO-297.Integrated modular avionics(IMA)development guidance and certification considerations[S].Washington,D.C.:RTCA,Inc.,2005:25-28.

[9] ARINC Specification 653P1-3.Avionics application software standard interface part1-required services[S].Maryland:Aeronautical Radio,Inc.,2010:35-37.

[10] Wind River System,Inc.Vxworks653 configuration and build guide[EB/OL].Alameda,CA:Wind River Systems,Inc,2007(2011-03-10)[2014-11-28].http:∥www.windriver.com.

[11] Free Software Foundation.GNU make[EB/OL].Boston,MA:Free Software Foundation,2002(2014-07-01)[2014-11-28].http:∥savannah.gnu.org/projects/make.

[12]張欣毅.XML簡明教程[M].北京:清華大學(xué)出版社,2009:86-88.Zhang X Y.A concise course in XML[M].Beijing:Tsinghua University Press,2009:86-88(in Chinese).

[13] Wind River System,Inc.Vxworks 653 programmer’s guide[EB/OL].Alameda,CA:Wind River Systems,Inc,2007(2011-03-10)[2014-11-28].http:∥www.windriver.com.

[14]喬乃強(qiáng),徐濤,谷青范.ARINC653分區(qū)調(diào)度算法的研究與改進(jìn)[J].計(jì)算機(jī)工程,2011,37(20):249-251.Qiao N Q,Xu T,Gu Q F.ARINC653 partition schedule research and improvement[J].Computer Egineering,2011,37(20):249-251(in Chinese).

[15] Aliki Ott.System testing in the avioincs domain[D].Bremen:Bremen University,2007.

猜你喜歡
進(jìn)程定義系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
債券市場對外開放的進(jìn)程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
社會(huì)進(jìn)程中的新聞學(xué)探尋
我國高等教育改革進(jìn)程與反思
修辭學(xué)的重大定義
Linux僵死進(jìn)程的產(chǎn)生與避免
主站蜘蛛池模板: 91在线精品免费免费播放| 欧日韩在线不卡视频| 国产美女91呻吟求| 国产91视频观看| 久久一色本道亚洲| 夜精品a一区二区三区| 激情成人综合网| 亚洲无码高清视频在线观看 | 国产精品浪潮Av| 久久伊人色| 丁香婷婷激情综合激情| 国产福利小视频高清在线观看| 国产激情无码一区二区APP | 国产成人精品高清在线| 88国产经典欧美一区二区三区| 最新国产精品第1页| 综合五月天网| 国产综合欧美| 免费看的一级毛片| 国产成人精品无码一区二| 亚洲精品国偷自产在线91正片| 日韩毛片基地| 2021国产v亚洲v天堂无码| 国产精品yjizz视频网一二区| 久久亚洲高清国产| 日韩在线视频网| 国产网站一区二区三区| 熟女成人国产精品视频| 中文字幕首页系列人妻| 在线国产综合一区二区三区| 中文字幕首页系列人妻| 久久精品丝袜| 国产成人精品免费视频大全五级 | 永久免费精品视频| 久久久久人妻一区精品色奶水| 亚欧成人无码AV在线播放| 青青热久麻豆精品视频在线观看| 国产va在线观看免费| 国产美女丝袜高潮| 91在线高清视频| 欧美黄网站免费观看| 丁香五月亚洲综合在线| 天堂亚洲网| 色欲色欲久久综合网| 国产成人乱无码视频| 国产一级α片| 国产高清在线丝袜精品一区| 日本妇乱子伦视频| 浮力影院国产第一页| 日本欧美在线观看| 九色综合视频网| 黄色网在线免费观看| 久久免费视频播放| 99中文字幕亚洲一区二区| h视频在线观看网站| 国产毛片不卡| 国产成人精品在线1区| 夜精品a一区二区三区| 最新国产网站| 99这里只有精品在线| 永久天堂网Av| 成人福利在线免费观看| 中文字幕亚洲第一| 日韩精品亚洲一区中文字幕| 国产精品视频白浆免费视频| 美女黄网十八禁免费看| 国产成人亚洲无码淙合青草| 99热线精品大全在线观看| 欧美成人午夜在线全部免费| 色婷婷天天综合在线| 91福利免费| 无码免费的亚洲视频| 国产福利在线观看精品| 国产毛片久久国产| 免费激情网址| 国产一二视频| 精品乱码久久久久久久| 欧美精品色视频| 国产91精选在线观看| 亚洲大尺码专区影院| 欧美成在线视频| 99久久精品免费看国产电影|