張海龍,陳意芬,鄭 晟
(上海機(jī)電工程研究所,上?!?01109)
基于VxWorks雙核應(yīng)用的導(dǎo)彈火控系統(tǒng)軟件設(shè)計(jì)方法
張海龍,陳意芬,鄭晟
(上海機(jī)電工程研究所,上海201109)
摘要:針對單核應(yīng)用的火控系統(tǒng)軟件多任務(wù)設(shè)計(jì)架構(gòu)在提升性能和擴(kuò)展功能方面存在的不足,提出了一種將目前的火控系統(tǒng)軟件多任務(wù)設(shè)計(jì)架構(gòu)以較少的設(shè)計(jì)更改即實(shí)現(xiàn)雙核應(yīng)用的方法,實(shí)現(xiàn)了基于VxWorks雙核應(yīng)用的火控系統(tǒng)軟件設(shè)計(jì)架構(gòu),該方法已經(jīng)在某型導(dǎo)彈武器系統(tǒng)中得到了應(yīng)用,驗(yàn)證結(jié)果表明該方法效果良好,軟件運(yùn)行穩(wěn)定可靠,極大地提升了火控系統(tǒng)擴(kuò)展功能和性能的水平。提出的方法對于將單核應(yīng)用轉(zhuǎn)移到雙核應(yīng)用或開發(fā)新的雙核應(yīng)用均具有一定的參考意義和實(shí)用價值。
關(guān)鍵詞:VxWorks;雙核;火控系統(tǒng);軟件設(shè)計(jì);軟件架構(gòu)
火控系統(tǒng)是導(dǎo)彈武器系統(tǒng)的作戰(zhàn)火力控制的核心,主要用于響應(yīng)指揮控制系統(tǒng)的各種命令,處理雷達(dá)等各種探測設(shè)備的目標(biāo)信息,組織火力資源,控制導(dǎo)彈發(fā)射并摧毀來襲目標(biāo)。
VxWorks操作系統(tǒng)作為嵌入式實(shí)時操作系統(tǒng),具有實(shí)時性好、可靠性高和成熟度高等優(yōu)點(diǎn),很好地滿足了火控系統(tǒng)強(qiáng)實(shí)時性和高可靠性的需求,成為了火控系統(tǒng)操作系統(tǒng)的最佳選擇之一[1-2],因此導(dǎo)彈火控系統(tǒng)目前普遍采用VxWorks作為實(shí)時嵌入式操作系統(tǒng)。
由于VxWorks早期版本不支持雙核應(yīng)用以及火控系統(tǒng)硬件為單核平臺,所以火控系統(tǒng)都是基于VxWorks單核平臺應(yīng)用對軟件進(jìn)行設(shè)計(jì),按照火控系統(tǒng)的功能設(shè)計(jì)了各種任務(wù),任務(wù)在操作系統(tǒng)的調(diào)度下串行周期運(yùn)行,而隨著火控系統(tǒng)的不斷發(fā)展,火力控制模型算法越來越復(fù)雜,實(shí)現(xiàn)的功能越來越多,而單核應(yīng)用剩余的時間資源已經(jīng)很少,在火控系統(tǒng)的工作周期內(nèi)已經(jīng)不能完成所有的任務(wù),火控系統(tǒng)功能和性能的提升受到了極大的限制。要在單核平臺上解決該問題,主要可以從以下幾方面考慮:一是采用更高性能的單核處理器,二是優(yōu)化現(xiàn)有的火控系統(tǒng)軟件架構(gòu),三是優(yōu)化火控系統(tǒng)具體的代碼和算法。但是這幾種方法都面臨著各自不同的困難。第一種方法,性能或主頻的提升往往伴隨功耗和發(fā)熱的增加,而火控系統(tǒng)環(huán)境特點(diǎn)決定了其功耗不能太高,第二、三種方法,火控系統(tǒng)軟件開發(fā)經(jīng)過了多年的沉淀和積累,軟件架構(gòu)和具體代碼及算法已經(jīng)十分成熟,優(yōu)化的空間非常有限,在這些約束下單核平臺已經(jīng)不能適應(yīng)火控系統(tǒng)的需求[3]。隨著技術(shù)進(jìn)步,火控系統(tǒng)硬件平臺已經(jīng)升級為雙核平臺,并且VxWorks也已支持雙核應(yīng)用,雙核平臺相比單核平臺同樣功耗情況下其性能提升將近一倍,所以采用雙核平臺將是解決問題的最好方法[4]。采用雙核平臺開發(fā),如何快速將原來成熟的單核軟件升級為多核軟件,對開發(fā)人員是一個很大的挑戰(zhàn),本文針對這一問題提出了一種方法,實(shí)現(xiàn)了火控系統(tǒng)單核軟件快速向多核軟件的升級。
本文首先介紹了單核應(yīng)用的火控系統(tǒng)軟件多任務(wù)設(shè)計(jì)架構(gòu),然后簡要介紹了VxWorks的雙核應(yīng)用特點(diǎn),最后提出了一種將目前的火控系統(tǒng)軟件多任務(wù)設(shè)計(jì)以較少的設(shè)計(jì)更改即實(shí)現(xiàn)雙核的應(yīng)用的方法,實(shí)現(xiàn)了基于VxWorks雙核應(yīng)用的火控系統(tǒng)軟件設(shè)計(jì)架構(gòu),極大地提升了火控系統(tǒng)擴(kuò)展功能和性能的水平。
1單核應(yīng)用的火控系統(tǒng)軟件架構(gòu)
按照導(dǎo)彈火控系統(tǒng)的特點(diǎn),火控系統(tǒng)是導(dǎo)彈武器系統(tǒng)的作戰(zhàn)火力控制的核心,需要接收指揮控制系統(tǒng)和外部設(shè)備的多種信息,能夠組織多目標(biāo)攔截所需的火力資源,具備武器系統(tǒng)作戰(zhàn)、訓(xùn)練和維護(hù)等多種能力,具體包括:
1)接收多個內(nèi)外部節(jié)點(diǎn)(如指控系統(tǒng)、雷達(dá)、時統(tǒng)、導(dǎo)航、發(fā)控系統(tǒng)、光電跟蹤等)的數(shù)據(jù)和信息;
2)實(shí)現(xiàn)目標(biāo)信息的跟蹤和預(yù)測、目標(biāo)態(tài)勢分析和顯示,制定目標(biāo)攔截策略、火力資源使用策略,人工和自動發(fā)射導(dǎo)彈控制;
3)實(shí)現(xiàn)武器系統(tǒng)作戰(zhàn)、訓(xùn)練和維護(hù)工作流程控制。
火控系統(tǒng)軟件架構(gòu)是基于VxWorks操作系統(tǒng)的多任務(wù)機(jī)制進(jìn)行設(shè)計(jì)的,按照火控系統(tǒng)實(shí)現(xiàn)的功能特點(diǎn),將不同需求的功能合理的分配到不同的任務(wù)中,并對任務(wù)優(yōu)先級進(jìn)行合理的設(shè)置,既要實(shí)現(xiàn)火控系統(tǒng)的所有功能,又要確?;鹂叵到y(tǒng)的實(shí)時性。
火控系統(tǒng)軟件按照周期運(yùn)行,通過網(wǎng)絡(luò)接收武器系統(tǒng)內(nèi)部和外部的數(shù)據(jù)和命令信息,經(jīng)過火力控制處理后形成相應(yīng)的數(shù)據(jù)和控制命令,通過網(wǎng)絡(luò)向其他節(jié)點(diǎn)發(fā)送。根據(jù)軟件各個功能特點(diǎn),將火控系統(tǒng)軟件主要劃分為9個任務(wù),任務(wù)優(yōu)先級由高到低分別為:
1)校時任務(wù)。
2)發(fā)控系統(tǒng)網(wǎng)絡(luò)接收任務(wù)。
3)武器系統(tǒng)網(wǎng)絡(luò)接收任務(wù)。
4)作戰(zhàn)系統(tǒng)網(wǎng)絡(luò)接收任務(wù)。
5)操控任務(wù)。
6)網(wǎng)絡(luò)發(fā)送任務(wù)。
7)火力控制任務(wù)。
8)顯示刷新任務(wù)。
9)記錄任務(wù)。
其中,校時任務(wù)受準(zhǔn)秒脈沖中斷觸發(fā)運(yùn)行,為火控系統(tǒng)提供基準(zhǔn)工作時間,發(fā)控系統(tǒng)網(wǎng)絡(luò)接收任務(wù)、武器系統(tǒng)網(wǎng)絡(luò)接收任務(wù)、作戰(zhàn)系統(tǒng)網(wǎng)絡(luò)接收任務(wù)受網(wǎng)絡(luò)上收到報文觸發(fā),為火控系統(tǒng)提供外部輸入信息,操控任務(wù)受操控設(shè)備中斷觸發(fā),為火控系統(tǒng)提供人工干預(yù)信息,網(wǎng)絡(luò)發(fā)送任務(wù)受火力控制任務(wù)觸發(fā),向其它節(jié)點(diǎn)發(fā)送控制命令和數(shù)據(jù)信息,火力控制任務(wù)受周期定時器觸發(fā)周期運(yùn)行,實(shí)現(xiàn)目標(biāo)信息的跟蹤和預(yù)測、目標(biāo)態(tài)勢分析,制定目標(biāo)攔截策略、火力資源使用策略,人工和自動發(fā)射導(dǎo)彈控制等功能,顯示刷新任務(wù)受火控控制任務(wù)觸發(fā),實(shí)現(xiàn)火控系統(tǒng)各種信息的顯示,記錄任務(wù)受火力控制任務(wù)觸發(fā),實(shí)現(xiàn)火控系統(tǒng)關(guān)鍵信息的記錄。各個任務(wù)的基本運(yùn)行時序如圖1所示,各個任務(wù)之間控制流和信息流如圖2所示。從圖中可以看出,所有任務(wù)在單核方式下串行運(yùn)行,剩余時間資源已經(jīng)很有限,若再增加火控系統(tǒng)的功能,提升火控系統(tǒng)的使用性能,提升空間非常有限。
圖1 火控系統(tǒng)軟件基本運(yùn)行時序圖
圖2 火控系統(tǒng)軟件控制流和數(shù)據(jù)圖
2VxWorks操作系統(tǒng)雙核特點(diǎn)
2.1VxWorks提供了兩種多核支持方法,即SMP與AMP
SMP的全稱是“對稱多處理”(Symmetrical Multi-Processing)技術(shù),是指在一個計(jì)算機(jī)上匯集了一組處理器(多CPU),各CPU之間共享內(nèi)存子系統(tǒng)以及總線結(jié)構(gòu);在這種架構(gòu)中,一臺電腦不再由單個CPU組成,而同時由多個處理器運(yùn)行OS的單一副本,并共享內(nèi)存和一臺計(jì)算機(jī)的其他資源;
AMP的全稱是“非對稱多處理器”(Asymmetric Mulitprocessing)技術(shù)。它允許在每個獨(dú)立的CPU上運(yùn)行獨(dú)立的操作系統(tǒng)。每個OS僅能被它所在的CPU訪問。因此,在CPU1上的內(nèi)核任務(wù)不可能在CPU0所屬的內(nèi)存中執(zhí)行,反之亦然。在AMP中,部分內(nèi)存是共享的,但是嚴(yán)格限制讀寫數(shù)據(jù)的[4]。
SMP方法對于火控系統(tǒng)軟件的開發(fā)方式更接近以往單核工作時的開發(fā)方式,不僅有利于對以往火控系統(tǒng)軟件的繼承,更有利于習(xí)慣了單核應(yīng)用開發(fā)的火控系統(tǒng)設(shè)計(jì)人員快速開發(fā)雙核的火控軟件,而AMP方法每個CPU核運(yùn)行自己的操作系統(tǒng),為了實(shí)現(xiàn)這一點(diǎn)需要操作系統(tǒng)做很多特殊處理,也就是說需要操作系統(tǒng)廠商進(jìn)行定制,每個核上都要駐留操作系統(tǒng)映像,必然會增加內(nèi)存的開銷,底層設(shè)備可能只在某個核上才能訪問,會造成BSP軟件的復(fù)雜性,也會影響上層應(yīng)用軟件操作設(shè)備的透明性,該方法非常不靈活,N個核必須分成N個獨(dú)立的CPU,火控系統(tǒng)軟件設(shè)計(jì)架構(gòu)會有較大的變化。因此選用 SMP方法作為火控系統(tǒng)雙核應(yīng)用的方法。
2.2VxWorks SMP特點(diǎn)
編程:SMP編程與單核編程(UP)在多數(shù)情況下是一樣的。類似地,多數(shù)API在UP和SMP編程中是通用的,只有少數(shù)一些UP編程中的API不能在SMP中使用。
多任務(wù):對于傳統(tǒng)的UP系統(tǒng)而言,處理多任務(wù)的方法是通過任務(wù)優(yōu)先級對CPU資源進(jìn)行搶占式處理的。而SMP系統(tǒng)則改變了這種方法,它是實(shí)實(shí)在在的任務(wù)、中斷的同時執(zhí)行。實(shí)現(xiàn)同時執(zhí)行的關(guān)鍵是多個任務(wù)可以在不同的CPU上執(zhí)行,當(dāng)然這需要OS的協(xié)調(diào)控制。對于UP系統(tǒng)中多任務(wù)所謂的同時執(zhí)行,其實(shí)只不過是CPU的快速切換,占有CPU的任務(wù)由一個快速切換到另一個。在SMP系統(tǒng)中,同時執(zhí)行不是幻想而是實(shí)際存在的。
任務(wù)調(diào)度機(jī)制:VxWorks SMP系統(tǒng)中的任務(wù)調(diào)度機(jī)制與UP中的類似,都是基于優(yōu)先級的。不同的是,當(dāng)不同的任務(wù)運(yùn)行在不同的CPU上時,可以實(shí)現(xiàn)兩個任務(wù)的同時執(zhí)行。
互斥:由于SMP系統(tǒng)允許任務(wù)同時運(yùn)行的情況存在,因此,在UP系統(tǒng)中通過關(guān)中斷、鎖任務(wù)調(diào)度等這些保護(hù)臨界資源的手段在SMP系統(tǒng)中將不再適用。這種在所有CPU上通過強(qiáng)行關(guān)閉中斷、鎖任務(wù)調(diào)度的方法會影響到SMP系統(tǒng)發(fā)揮它的特點(diǎn),將SMP系統(tǒng)帶回到UP系統(tǒng)的模式。VxWorks SMP提供一套特殊的任務(wù)間、中斷間同步/互斥的方法——即UP中的taskLock()和intLock()等將會被VxWorks SMP提供的spinlock,原子操作以及CPU-specific等機(jī)制替代。
CPU-Affinity:默認(rèn)情況下,任意任務(wù)可以運(yùn)行在任意CPU上。VxWorks SMP提供了一種叫做CPU-Affinity的機(jī)制,即可以分配任務(wù)到指定CPU(CPU邏輯索引)上執(zhí)行。
3雙核火控系統(tǒng)軟件設(shè)計(jì)
在多核處理器上開發(fā)程序要比在單核處理器上困難得多。雖然多個應(yīng)用程序可以方便地運(yùn)行在不同處理器上,但是程序員們必須謹(jǐn)慎編寫程序代碼,以有效利用多核技術(shù)。編寫并行程序是利用多核處理器的最直接方法,編寫并行程序的首要挑戰(zhàn)是,確定程序中哪些部分功能能夠并行地執(zhí)行,然后通過代碼予以實(shí)現(xiàn)。
理論上,可以將原來單核應(yīng)用下的火控系統(tǒng)軟件不做太大改動就直接運(yùn)行在雙核應(yīng)用下,任務(wù)的調(diào)度完全由VxWorks SMP控制,但是這并不是一個很好的方法。因?yàn)榛鹂叵到y(tǒng)軟件各個任務(wù)之間采用的是共享緩存進(jìn)行交互的,單核應(yīng)用下的火控系統(tǒng)軟件各個任務(wù)是串行運(yùn)行的,對共享緩存的讀寫不會出現(xiàn)沖突問題,而在雙核應(yīng)用下,任務(wù)會出現(xiàn)同時運(yùn)行的情況,對共享緩存的讀寫會出現(xiàn)沖突,為了解決這個問題,需要對軟件中的共享緩存內(nèi)容進(jìn)行仔細(xì)分析并加以處理,軟件的改動量會較大[5]。
本文針對火控系統(tǒng)軟件的特點(diǎn),提出了一種方法,使軟件可以較少的更改就可以實(shí)現(xiàn)雙核的應(yīng)用,具體方法如下:
1)找出火控系統(tǒng)軟件可以并行運(yùn)行的任務(wù):校時任務(wù)、發(fā)控系統(tǒng)網(wǎng)絡(luò)接收任務(wù)、武器系統(tǒng)網(wǎng)絡(luò)接收任務(wù)、作戰(zhàn)系統(tǒng)網(wǎng)絡(luò)接收任務(wù)與操控任務(wù)接收不同的外部信息,四個任務(wù)間沒有信息交互,可以并行運(yùn)行;火力控制任務(wù)為網(wǎng)絡(luò)發(fā)送任務(wù)提供外部節(jié)點(diǎn)的控制命令和數(shù)據(jù)信息,因?yàn)榛鹂叵到y(tǒng)實(shí)時性的要求,火控系統(tǒng)需要實(shí)時的命令和數(shù)據(jù)信息,所以兩個任務(wù)必須串行運(yùn)行;火力控制任務(wù)為顯示刷新任務(wù)提供武器系統(tǒng)各種
顯示信息,因?yàn)轱@示信息可以弱實(shí)時顯示,不影響用戶體驗(yàn),所以兩個任務(wù)可以并行運(yùn)行;火力控制任務(wù)為記錄任務(wù)提供武器系統(tǒng)關(guān)鍵信息,關(guān)鍵信息必須及時記錄,所以兩個任務(wù)不可以并行運(yùn)行[6]。經(jīng)過以上分析,確定可以并行運(yùn)行的任務(wù)如表1所示。
表1 并行運(yùn)行任務(wù)表
2)評估任務(wù)運(yùn)行的時間,為雙核任務(wù)負(fù)載均衡作參考,任務(wù)運(yùn)行評估時間如表2所示。
表2 并行運(yùn)行任務(wù)評估時間表
圖3 火控系統(tǒng)軟件雙核運(yùn)行時序圖
3)通過前兩步的分析,采用VxWorks SMP提供的CPU-Affinity機(jī)制,即可以分配任務(wù)到指定CPU上,將顯示刷新任務(wù)指定到CUP core1上運(yùn)行,其它任務(wù)指定到CUP core0上運(yùn)行,既實(shí)現(xiàn)了任務(wù)的并行運(yùn)行,又保證了雙核的負(fù)載均衡,更重要的是在CUP core0上運(yùn)行的任務(wù)同單核應(yīng)用的火控系統(tǒng)軟件架構(gòu)是一致的,可以不進(jìn)行任何的更改。
4)運(yùn)行在CUP core1上的顯示刷新任務(wù)與 CUP core0上的任務(wù)并行運(yùn)行,需要解決顯示刷新任務(wù)與火力控制任務(wù)之間的共享緩存交互保護(hù)的問題,VxWorks SMP提供了一系列的“memory barrier”操作,這些操作可以解決該問題,軟件只要進(jìn)行較少的更改就可以解決共享緩存交互保護(hù)的問題。
至此實(shí)現(xiàn)了火控系統(tǒng)軟件在雙核應(yīng)用下的設(shè)計(jì)架構(gòu),雙核應(yīng)用的火控系統(tǒng)軟件任務(wù)運(yùn)行時序如圖3所示,從圖中可以看出,任務(wù)在雙核上并行運(yùn)行,剩余時間資源增多,極大地增加了火控系統(tǒng)擴(kuò)展功能和提升性能的能力。
4結(jié)束語
本文首先介紹了單核應(yīng)用的火控系統(tǒng)軟件多任務(wù)設(shè)計(jì)架構(gòu),然后提出了一種將單核應(yīng)用的火控系統(tǒng)軟件多任務(wù)設(shè)計(jì)以較少的設(shè)計(jì)更改即實(shí)現(xiàn)雙核應(yīng)用的方法,實(shí)現(xiàn)了基于VxWorks雙核應(yīng)用的火控系統(tǒng)軟件設(shè)計(jì)架構(gòu),該方法已經(jīng)在某型導(dǎo)彈武器系統(tǒng)中得到了應(yīng)用,驗(yàn)證結(jié)果表明該方法效果良好,軟件運(yùn)行穩(wěn)定可靠,極大地提升了火控系統(tǒng)擴(kuò)展功能和性能的水平。提出的方法對于將單核應(yīng)用轉(zhuǎn)移到雙核應(yīng)用或開發(fā)新的雙核應(yīng)用均具有一定的參考意義和實(shí)用價值。
參考文獻(xiàn):
[1]VxWorks-kernel-programmer’s-guide 6.8[S]. Wind River Systems, Inc., 2010.
[2]陳養(yǎng)平,賀占莊.基于VxWorks的實(shí)時多任務(wù)軟件設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2002(10):63-65.
[3]章志敏.VxWorks嵌入式實(shí)時操作系統(tǒng)在某導(dǎo)彈火控系統(tǒng)中的應(yīng)用[J].上海航天,2006(2):57-60.
[4]虞治國,魏敬和.一種雙核SoC調(diào)試系統(tǒng)的設(shè)計(jì)與驗(yàn)證[J].電子與封裝,2010,10(1):21-23.
[5]鄭玉虎,王品,陸小虎.基于雙核處理器平臺的數(shù)控系統(tǒng)軟件架構(gòu)設(shè)計(jì)[J].組合機(jī)床與自動化加工技術(shù),2013(8):62-65.
[6]白亮,嚴(yán)義,周宏偉.雙核微處理器實(shí)時系統(tǒng)的軟件架構(gòu)方法[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014(8):13-16.
Software Design Method of Missile Fire Control SystemBased on Dual Core Application of VxWorks
ZHANG Hai-long, CHEN Yi-fen, ZHENG Sheng
(Shanghai Research Institute of Mechanical and Electrical Engineering, Shanghai 201109, China)
Abstract:For single core application of fire control system software design, multi task architecture in improving the performance and expansion of the functions of the existing problems, and puts forward the a will be the current fire control system software design, multi task architecture with less design change to realize the dual core application method, realized based on VxWorks application of double nucleus of the fire control system software architecture design, this method has in a certain type of missile weapon system has been applied and verified results show that the method has a good effect, software operation is stable and reliable, greatly enhance the fire control system function and performance level of expansion. The proposed method has certain reference significance and practical value to transfer single core applied to dual core application or development of new dual core application.
Key words:VxWorks; dual core; fire control system; software design; software architecture
文章編號:1673-3819(2016)03-0122-04
收稿日期:2016-03-04
作者簡介:張海龍(1977-),男,吉林舒蘭人,碩士,高級工程師,研究方向?yàn)閷?dǎo)彈火控系統(tǒng)。 陳意芬(1979-),女,碩士,高級工程師。
中圖分類號:TJ761.1;E917
文獻(xiàn)標(biāo)志碼:A
DOI:10.3969/j.issn.1673-3819.2016.03.024
修回日期: 2016-03-29
鄭晟(1985-),男,碩士,工程師。