趙麗 李超 王冰 田帥虎 林博軒 徐婧瑤
(航天東方紅衛(wèi)星有限公司,北京 100094)
隨著空間大數(shù)據(jù)在軌應(yīng)用需求的日益增長(zhǎng)以及人工智能技術(shù)快速演進(jìn),衛(wèi)星使用智能化手段解決空間數(shù)據(jù)的應(yīng)用需求越來(lái)越迫切[1]。為了使空間遙感數(shù)據(jù)更好地服務(wù)用戶(hù),開(kāi)展支持衛(wèi)星智能應(yīng)用的操作系統(tǒng)設(shè)計(jì)和驗(yàn)證工作,有利于加快實(shí)現(xiàn)星載操作系統(tǒng)技術(shù)自主可控,推動(dòng)衛(wèi)星智能化程度的發(fā)展。當(dāng)前主流的嵌入式系統(tǒng)有UCOS[2]、Vxworks[3]、Linux。UCOS為搶占式多任務(wù)操作系統(tǒng),但缺少文件系統(tǒng)支持。Vxworks實(shí)時(shí)性強(qiáng),為商業(yè)操作系統(tǒng),不支持開(kāi)源。Linux嵌入式系統(tǒng),支持文件系統(tǒng),代碼開(kāi)源,適配于多種處理器,兼容性強(qiáng),且對(duì)于深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)等人工智能應(yīng)用支持性較好。對(duì)于人工智能應(yīng)用硬件處理平臺(tái),Nvidia Jetson系列處理器應(yīng)用廣泛,支持主流的并行計(jì)算平臺(tái)和編程模型(Cuda)并行計(jì)算應(yīng)用,尤其是NVIDIA Jetson Tegra TX2處理器功耗低、性能強(qiáng)。因此本文基于Linux系統(tǒng)進(jìn)行在Jetson TX2硬件平臺(tái)進(jìn)行改進(jìn)設(shè)計(jì),形成適用于智能應(yīng)用的星載操作系統(tǒng)。
國(guó)內(nèi)有多位學(xué)者對(duì)星載操作系統(tǒng)進(jìn)行了深入的研究,其中文獻(xiàn)[4]對(duì)多核處理器的星載分區(qū)操作系統(tǒng)的調(diào)度方式進(jìn)行研究,文獻(xiàn)[5]對(duì)小衛(wèi)星星載操作系統(tǒng)內(nèi)核的實(shí)時(shí)性進(jìn)行了研究,文獻(xiàn)[6]對(duì)衛(wèi)星星載操作系統(tǒng)的容錯(cuò)機(jī)制進(jìn)行了研究,文獻(xiàn)[7]對(duì)星載操作系統(tǒng)的安全機(jī)制進(jìn)行了研究設(shè)計(jì)。這些研究成果重點(diǎn)關(guān)注星載操作系統(tǒng)的調(diào)度機(jī)制、實(shí)時(shí)性、容錯(cuò)機(jī)制、安全機(jī)制,但是缺少對(duì)Linux操作系統(tǒng)用于航天器的研究和工程驗(yàn)證。而深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)等人工智能應(yīng)用深度依賴(lài)Linux系統(tǒng),因此有必要開(kāi)展基于Linux的星載操作系統(tǒng)專(zhuān)項(xiàng)設(shè)計(jì)和工程驗(yàn)證。
從當(dāng)前國(guó)外行業(yè)Linux應(yīng)用情況來(lái)看,國(guó)外龍飛船(Dragon)[8]、獵鷹火箭已經(jīng)作為重要核心軟件投入使用Linux系統(tǒng),充分說(shuō)明了Linux系統(tǒng)應(yīng)用于復(fù)雜任務(wù)航天器的可行性和必要性?;贚inux操作系統(tǒng)的軟件研制能夠催生出代碼完全自主可控的宇航系統(tǒng)軟件,不僅有利于加快天基高速計(jì)算的推廣應(yīng)用,也必將有利于推動(dòng)國(guó)家大數(shù)據(jù)服務(wù)體系的技術(shù)生態(tài)建設(shè)。
本文基于Jetson TX2處理器硬件平臺(tái)上開(kāi)展了Linux的星載操作系統(tǒng)的可靠性設(shè)計(jì)、高速傳輸設(shè)計(jì)、智能應(yīng)用管理框架的設(shè)計(jì)及編碼實(shí)現(xiàn),并對(duì)星載操作系統(tǒng)進(jìn)行了工程驗(yàn)證。通過(guò)開(kāi)展面向智能應(yīng)用的星載操作系統(tǒng)設(shè)計(jì),可大幅提高衛(wèi)星的智能應(yīng)用水平,對(duì)于完成深空探測(cè)、星群協(xié)作、天基大數(shù)據(jù)服務(wù)等復(fù)雜宇航任務(wù),具有十分重要的意義。
空間環(huán)境相比地面環(huán)境較為惡劣和復(fù)雜,對(duì)操作系統(tǒng)的可靠性安全性有著較高的要求。在軌智能應(yīng)用需要接收高速數(shù)據(jù),需要操作系統(tǒng)具備強(qiáng)實(shí)時(shí)性的特征。另外,為了滿足App上注、加載運(yùn)行的需求,需要專(zhuān)門(mén)設(shè)計(jì)一套智能應(yīng)用管理框架。當(dāng)前的地面Linux系統(tǒng)多為單份啟動(dòng),出現(xiàn)操作系統(tǒng)故障后沒(méi)有自主恢復(fù)機(jī)制,而且在常規(guī)PCIE(PCI-Express)軟件驅(qū)動(dòng)方面不能實(shí)時(shí)匹配高速數(shù)據(jù)傳輸,因此需要針對(duì)星載操作系統(tǒng)開(kāi)展專(zhuān)項(xiàng)設(shè)計(jì)和適應(yīng)性改進(jìn),具體有以下3點(diǎn)。
(1)智能應(yīng)用所需要的嵌入式系統(tǒng)為大規(guī)模Linux操作系統(tǒng),啟動(dòng)流程包含了Uboot引導(dǎo)、Linux內(nèi)核選擇啟動(dòng)以及文件系統(tǒng)加載,啟動(dòng)過(guò)程較為復(fù)雜。為確保操作系統(tǒng)能夠在復(fù)雜空間環(huán)境下正常啟動(dòng),需要對(duì)星載操作系統(tǒng)的啟動(dòng)關(guān)鍵環(huán)節(jié)加強(qiáng)防護(hù),以提升操作系統(tǒng)在無(wú)人值守環(huán)境下的可靠性。
(2)星載智能應(yīng)用所運(yùn)行的空間環(huán)境對(duì)高速數(shù)據(jù)的處理時(shí)效性要求更高,需要對(duì)操作系統(tǒng)所運(yùn)行的CPU架構(gòu)與高速數(shù)據(jù)傳輸流程綜合考慮,增強(qiáng)操作系統(tǒng)的實(shí)時(shí)性,優(yōu)化數(shù)據(jù)傳輸流程,從而提高遙感數(shù)據(jù)的傳輸速度。
(3)為了方便用戶(hù)對(duì)星載操作系統(tǒng)進(jìn)行智能應(yīng)用的管理,需要設(shè)計(jì)智能應(yīng)用的管理框架,實(shí)現(xiàn)對(duì)App的在軌管理模式。同時(shí),為了促進(jìn)星載智能應(yīng)用的持續(xù)發(fā)展,增強(qiáng)操作系統(tǒng)生態(tài)建設(shè),需要通過(guò)吸納更多用戶(hù)、參與者開(kāi)發(fā)使用App,并不斷拓展衛(wèi)星數(shù)量、星座規(guī)模,最終成長(zhǎng)為天基數(shù)據(jù)服務(wù)體系的重要組成。
典型星上操作系統(tǒng)如UCOS系統(tǒng)支持的硬件平臺(tái)多以單核處理器為主,傳輸總線多以低速CAN總線、中速SpaceWire總線為主,并且對(duì)深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)等人工智能軟件環(huán)境支持較差。Vxworks星上操作系統(tǒng)實(shí)時(shí)性高,但是屬于商業(yè)操作系統(tǒng),代碼不支持開(kāi)源。改進(jìn)后的基于Linux內(nèi)核的星上操作系統(tǒng)支持多核處理器的任務(wù)調(diào)度和并行計(jì)算,具備高速接口PCIE的數(shù)據(jù)傳輸功能,支持主流的人工智能軟件運(yùn)行環(huán)境及多種App的在軌管理運(yùn)行,并且開(kāi)放源碼,代碼自主可控。相對(duì)于典型星上操作系統(tǒng),本操作系統(tǒng)在星上數(shù)據(jù)處理能力、星上數(shù)據(jù)傳輸能力、智能應(yīng)用的管理能力上有很大優(yōu)勢(shì)。
星載操作系統(tǒng)由系統(tǒng)底層、協(xié)議層、應(yīng)用層3個(gè)部分組成,具體如圖1所示。底層具有強(qiáng)實(shí)時(shí)和多內(nèi)核冗余的特性,包括Bootloader與Linux內(nèi)核。Bootloader采用引導(dǎo)軟件Uboot,具有開(kāi)源、硬件支持良好等優(yōu)秀特性。Linux內(nèi)核由實(shí)時(shí)內(nèi)核和常規(guī)內(nèi)核模塊組成,實(shí)時(shí)內(nèi)核采用RTLinux[9]實(shí)時(shí)調(diào)度模塊,常規(guī)內(nèi)核采用了穩(wěn)定性和兼容性好的Linux4.9調(diào)度常規(guī)內(nèi)核模塊,這樣可以滿足實(shí)時(shí)任務(wù)和非實(shí)時(shí)任務(wù)不同等級(jí)的響應(yīng)要求。
注:Cudnn為神經(jīng)網(wǎng)絡(luò)加速庫(kù);GDAL為空間數(shù)據(jù)轉(zhuǎn)換基礎(chǔ)庫(kù)。
協(xié)議層支持動(dòng)態(tài)更換基礎(chǔ)庫(kù)、軟件高速上注、多文件系統(tǒng)冗余,從內(nèi)容上包括自定義基礎(chǔ)庫(kù)、公用基礎(chǔ)庫(kù)、智能應(yīng)用基礎(chǔ)庫(kù)、星載軟件使用協(xié)議、文件系統(tǒng)。自定義基礎(chǔ)庫(kù)為第三方自行定義的庫(kù)函數(shù),公用基礎(chǔ)庫(kù)包含libc、libc++等常規(guī)C函數(shù)庫(kù),智能應(yīng)用基礎(chǔ)庫(kù)包括Cuda[10]、Tensor[11]、Opencv[12]等,星載軟件協(xié)議包括斷點(diǎn)續(xù)傳協(xié)議、高速上注協(xié)議、低速遙控協(xié)議、高速傳輸驅(qū)動(dòng),文件系統(tǒng)采用四份Ext4[13]文件系統(tǒng)進(jìn)行備份。
應(yīng)用層具有軟件定義和軟件動(dòng)態(tài)重構(gòu)的特性。應(yīng)用層設(shè)計(jì)了智能應(yīng)用管理框架,包括App生命周期管理模塊、遙控遙測(cè)管理模塊、數(shù)據(jù)庫(kù)管理模塊、容器管理模塊。App生命周期管理包括App安裝、App啟動(dòng)、App停止、App更新、App卸載。遙控遙測(cè)管理模塊具備接收地面指令的功能,并對(duì)星上健康狀態(tài)進(jìn)行監(jiān)控下傳。App采用容器建立安全防護(hù)機(jī)制,數(shù)據(jù)庫(kù)負(fù)責(zé)App數(shù)據(jù)的存儲(chǔ)和記錄。
根據(jù)星載操作系統(tǒng)高可靠、高性能、生態(tài)優(yōu)良、自主可控的需求,設(shè)計(jì)了Linux操作性系統(tǒng)多分區(qū)可靠啟動(dòng)策略、自主恢復(fù)策略、高速數(shù)據(jù)傳輸策略,并制定了智能應(yīng)用管理框架設(shè)計(jì)方案。
2.2.1 多分區(qū)可靠啟動(dòng)策略與自主恢復(fù)策略
為了應(yīng)對(duì)空間復(fù)雜環(huán)境可能引起的單粒子翻轉(zhuǎn)導(dǎo)致數(shù)據(jù)錯(cuò)誤問(wèn)題,設(shè)計(jì)了Linux操作性系統(tǒng)“三取二比對(duì)啟動(dòng)”、“遍歷內(nèi)核啟動(dòng)”的可靠啟動(dòng)策略,并能夠在操作系統(tǒng)被破壞的情況下進(jìn)入“自主恢復(fù)模式啟動(dòng)”,完成內(nèi)核與文件系統(tǒng)的覆蓋恢復(fù)。
針對(duì)Linux系統(tǒng)的組成結(jié)構(gòu)以及所在運(yùn)行平臺(tái)NVIDIA Jetson Tegra X2存儲(chǔ)器的大小,進(jìn)行多分區(qū)存儲(chǔ)設(shè)計(jì)。NVIDIA Jetson Tegra X2存儲(chǔ)器EMMC共32 GByte,存儲(chǔ)了bootloader(Tboot、Cboot、Uboot)、Linux內(nèi)核、Linux文件系統(tǒng)。由于NVIDIA廠商對(duì)Tboot、Cboot做了固化,只有Uboot、Linux內(nèi)核、Linux文件系統(tǒng)所在分區(qū)可以修改,因此重新對(duì)Uboot、Linux內(nèi)核、Linux文件系統(tǒng)進(jìn)行分區(qū)設(shè)計(jì)。本設(shè)計(jì)方案Uboot存儲(chǔ)一份,Linux內(nèi)核存儲(chǔ)4份(3份常規(guī)存儲(chǔ)與1份備份存儲(chǔ)),Linux文件系統(tǒng)存儲(chǔ)4份(3份常規(guī)存儲(chǔ)與1份備份存儲(chǔ)),并對(duì)App分區(qū)單獨(dú)劃分一塊存儲(chǔ)分區(qū)。其中Linux文件系統(tǒng)存儲(chǔ)分區(qū)大小為5 Gbyte,App分區(qū)存儲(chǔ)大小為10 Gbyte。如圖2所示,圖中黑色箭頭表示Uboot啟動(dòng)內(nèi)核的過(guò)程,紅色箭頭表示內(nèi)核掛載文件系統(tǒng)的過(guò)程,綠色箭頭表示文件系統(tǒng)調(diào)用App分區(qū)的過(guò)程,藍(lán)色虛線箭頭表示備份分區(qū)恢復(fù)內(nèi)核與文件系統(tǒng)的過(guò)程。
圖2 多分區(qū)存儲(chǔ)圖
本操作系統(tǒng)設(shè)計(jì)了“三取二內(nèi)核比對(duì)啟動(dòng)”、“內(nèi)核遍歷啟動(dòng)”、“自主恢復(fù)模式啟動(dòng)”3種方式。操作系統(tǒng)啟動(dòng)失敗后會(huì)觸發(fā)硬件看門(mén)狗,引起操作系統(tǒng)重新啟動(dòng)。如圖3所示,“三取二內(nèi)核比對(duì)啟動(dòng)”是操作系統(tǒng)上電后對(duì)三份內(nèi)核進(jìn)行“三取二”比對(duì),比對(duì)成功則繼續(xù)啟動(dòng)對(duì)應(yīng)的文件系統(tǒng)完成啟動(dòng)流程?!皟?nèi)核遍歷啟動(dòng)”是操作系統(tǒng)在上電后“三取二內(nèi)核比對(duì)”失敗后進(jìn)入的啟動(dòng)方式,此時(shí)操作系統(tǒng)直接通過(guò)選擇內(nèi)核N(N=1,2,3)啟動(dòng)。如果“三取二內(nèi)核比對(duì)啟動(dòng)”以及“內(nèi)核遍歷啟動(dòng)”3次啟動(dòng)后均啟動(dòng)失敗,則進(jìn)入“自主恢復(fù)模式啟動(dòng)”流程。自主恢復(fù)模式選擇使用備份內(nèi)核及備份文件系統(tǒng)對(duì)三份操作系統(tǒng)進(jìn)行覆蓋恢復(fù),恢復(fù)完成后再次進(jìn)入“三取二比對(duì)啟動(dòng)”方式。操作系統(tǒng)啟動(dòng)成功后,檢測(cè)其他操作系統(tǒng)分區(qū)的文件標(biāo)記,對(duì)于錯(cuò)誤標(biāo)記的操作系統(tǒng)分區(qū)使用備份系統(tǒng)恢復(fù)正常。
圖3 可靠啟動(dòng)流程圖
2.2.2 高速數(shù)據(jù)傳輸設(shè)計(jì)策略
為了增強(qiáng)操作系統(tǒng)的實(shí)時(shí)性,增加RTLinux實(shí)時(shí)內(nèi)核的支持,使任務(wù)的進(jìn)程調(diào)度延時(shí)和關(guān)中斷延時(shí)大幅下降。在操作系統(tǒng)實(shí)時(shí)性的基礎(chǔ)上,需要根據(jù)數(shù)據(jù)傳輸?shù)牧鞒踢M(jìn)行優(yōu)化,提高操作系統(tǒng)PCIE接口的數(shù)據(jù)傳輸性能。
對(duì)于PCIE高速數(shù)據(jù)傳輸設(shè)計(jì)了3種方式進(jìn)行優(yōu)化,分別是綁定專(zhuān)用CPU核、用戶(hù)態(tài)內(nèi)核態(tài)使用共享內(nèi)存、傳輸數(shù)據(jù)雙緩沖處理。首先,對(duì)PCIE高速數(shù)據(jù)讀取模塊綁定特定的CPU核,這樣就減少了Linux操作系統(tǒng)調(diào)度CPU的時(shí)間,提高了PCIE數(shù)據(jù)的處理性能。其次,對(duì)于PCIE高速數(shù)據(jù)讀取模塊讀取到緩存數(shù)據(jù)后,與應(yīng)用層App交互時(shí)采用共享內(nèi)存機(jī)制快速傳輸數(shù)據(jù),減少了PCIE驅(qū)動(dòng)內(nèi)核態(tài)與用戶(hù)態(tài)的數(shù)據(jù)拷貝時(shí)間。
另外開(kāi)展了PCIE數(shù)據(jù)傳輸緩存數(shù)據(jù)的雙緩沖區(qū)設(shè)計(jì),如圖4所示。
圖4 PCIE圖像讀取流程圖
以App讀取圖像數(shù)據(jù)為例,PCIE接口接收到圖像數(shù)據(jù)后進(jìn)行圖像幀讀取,當(dāng)緩存1空閑時(shí),PCIE將數(shù)據(jù)寫(xiě)入緩存1。此時(shí)如果有App讀取緩存1數(shù)據(jù),則將緩存1置為忙碌狀態(tài),App讀取完數(shù)據(jù)時(shí)置緩存1為空閑狀態(tài)。當(dāng)有新的圖像幀數(shù)據(jù)需要寫(xiě)入時(shí),PCIE讀取模塊檢測(cè)到緩存1為忙碌狀態(tài),則將讀取的圖像寫(xiě)入緩存2,并通知用戶(hù)態(tài)App接收?qǐng)D像1。同理,當(dāng)App讀取緩存2的圖像幀數(shù)據(jù)時(shí),將緩存2置為忙碌狀態(tài),App讀取完圖像數(shù)據(jù)時(shí)置緩存2為空閑狀態(tài)。由于當(dāng)前操作系統(tǒng)僅允許同一個(gè)App讀取緩存圖像數(shù)據(jù),所以PCIE寫(xiě)入模塊尋找空閑的緩存區(qū)時(shí)不需要等待。這樣既解決了App讀寫(xiě)緩存數(shù)據(jù)同步的問(wèn)題,又減少了PCIE的等待時(shí)間。
2.2.3 智能應(yīng)用管理框架設(shè)計(jì)
智能應(yīng)用管理框架包含App在軌全生命周期管理、App上注以及App應(yīng)用方式。通過(guò)地面發(fā)送指令星上App可以完成整個(gè)生命周期的狀態(tài)改變。App上注可實(shí)現(xiàn)地面完整上注、斷點(diǎn)續(xù)傳上注、增量文件上注。App應(yīng)用模式包含容器應(yīng)用和數(shù)據(jù)應(yīng)用。本節(jié)對(duì)智能應(yīng)用管理框架下App任務(wù)調(diào)度、動(dòng)態(tài)加載、編譯打包、資源訪問(wèn)機(jī)制進(jìn)行了分析,同時(shí)給出了在軌上注的使用方式以及App的應(yīng)用方式。
1)基于Linux實(shí)現(xiàn)APP任務(wù)調(diào)度、動(dòng)態(tài)加載
智能應(yīng)用管理框架設(shè)計(jì)了App遙控遙測(cè)進(jìn)程、App管理進(jìn)程,這兩個(gè)功能進(jìn)程長(zhǎng)期在Linux系統(tǒng)后臺(tái)運(yùn)行。App遙控遙測(cè)進(jìn)程負(fù)責(zé)進(jìn)行地面指令的解析判斷(如AppN安裝、AppN啟動(dòng)、AppN更新、AppN卸載、AppN停止)與App狀態(tài)的健康狀態(tài)遙測(cè)下傳。App管理進(jìn)程負(fù)責(zé)接收App遙控遙測(cè)進(jìn)程消息去執(zhí)行不同的App任務(wù)。如圖5所示,App遙控遙測(cè)進(jìn)程通過(guò)套接字傳遞過(guò)來(lái)的方式通知App任務(wù)執(zhí)行進(jìn)程去執(zhí)行不同的任務(wù),App任務(wù)執(zhí)行進(jìn)程通過(guò)套接字進(jìn)程通信的方式通知向App遙控遙測(cè)進(jìn)程記錄AppN的健康狀態(tài)信息,并將App的狀態(tài)信息進(jìn)行遙測(cè)下傳。
圖5 App任務(wù)調(diào)度
App管理進(jìn)程接收到App指令接收進(jìn)程的消息后,根據(jù)消息的種類(lèi)分別進(jìn)行了線程創(chuàng)建、進(jìn)程創(chuàng)建、消息隊(duì)列創(chuàng)建。接收到AppN安裝的消息后,創(chuàng)建AppN安裝線程,執(zhí)行App安裝功能;接收到AppN啟動(dòng)的消息后,由于各個(gè)App需要有獨(dú)立的存儲(chǔ)空間,所以創(chuàng)建AppN啟動(dòng)進(jìn)程,執(zhí)行App啟動(dòng)功能;接收到AppN更新的消息后,創(chuàng)建AppN更新線程,執(zhí)行App更新功能;接收到AppN卸載的消息后,創(chuàng)建AppN卸載線程,執(zhí)行App卸載功能;接收到AppN停止的消息后,為了考慮節(jié)省資源消耗,采用創(chuàng)建消息隊(duì)列的方式,將AppN停止的動(dòng)作加入消息隊(duì)列,按照先后順序分別執(zhí)行多個(gè)App的停止功能。從而App管理進(jìn)程完成了多個(gè)App的任務(wù)調(diào)度和動(dòng)態(tài)加載、卸載。
2)App編譯打包過(guò)程
用戶(hù)在地面完成App編譯過(guò)程。如圖6所示,App由總線數(shù)據(jù)、計(jì)算模型、可執(zhí)行程序、緩沖區(qū)、程序區(qū)、配置數(shù)據(jù)等文件夾組成,文件夾里面分別存放對(duì)應(yīng)的文件。用戶(hù)代碼編寫(xiě)完畢之后,由SDK工具包按照App開(kāi)發(fā)實(shí)例和App編譯指南,在開(kāi)發(fā)機(jī)x86 Linux環(huán)境下由交叉工具編譯鏈進(jìn)行交叉編譯,生成可執(zhí)行程序文件。最后由SDK開(kāi)發(fā)工具包進(jìn)行App打包,從而完成App的地面制作。App注入到星上后,由Linux系統(tǒng)按照進(jìn)程進(jìn)行資源調(diào)度。
圖6 App地面打包過(guò)程
3)App資源訪問(wèn)、獨(dú)立運(yùn)行機(jī)制
對(duì)于多個(gè)App訪問(wèn)資源,為了避免App對(duì)資源訪問(wèn)沖突的問(wèn)題,App管理進(jìn)程對(duì)特定資源訪問(wèn)設(shè)計(jì)了鎖機(jī)制,當(dāng)一個(gè)App進(jìn)行該資源訪問(wèn)時(shí),進(jìn)行加鎖操作。這樣在當(dāng)前App進(jìn)行資源訪問(wèn)時(shí),其它App無(wú)法進(jìn)行資源訪問(wèn),直到當(dāng)前App資源訪問(wèn)完畢解鎖操作后,其它App才能進(jìn)行資源訪問(wèn)。
為了保證App進(jìn)行圖像數(shù)據(jù)處理后發(fā)送出各自獨(dú)立的數(shù)據(jù),App發(fā)送接口采用加鎖操作。如圖7所示,當(dāng)一個(gè)App發(fā)送處理結(jié)果數(shù)據(jù)時(shí),進(jìn)行加鎖操作,這時(shí)其它App發(fā)送處理結(jié)果時(shí)就要等當(dāng)前App發(fā)送完畢解鎖后再進(jìn)行發(fā)送操作,從而避免了發(fā)送數(shù)據(jù)亂幀的現(xiàn)象。
圖7 App資源訪問(wèn)鎖機(jī)制
對(duì)于同一個(gè)App的安裝、啟動(dòng)、停止、更新、卸載,App管理進(jìn)程對(duì)同一個(gè)App的這些動(dòng)作設(shè)計(jì)了線程加鎖處理,保證每個(gè)動(dòng)作完成之后再執(zhí)行其他動(dòng)作,如圖8所示。當(dāng)收到AppN的安裝動(dòng)作時(shí),去獲取AppN的線程鎖,若沒(méi)有該App的其它動(dòng)作,則能獲取成功,則執(zhí)行該App的安裝操作。當(dāng)該App正在安裝時(shí),收到該App的啟動(dòng)操作,AppN取獲取線程鎖。由于AppN在安裝過(guò)程中,還未釋放AppN的線程鎖,因此App啟動(dòng)的指令需要等待App安裝完成之后執(zhí)行。
圖8 多個(gè)App鎖機(jī)制過(guò)程
4)App在軌上注模式
操作系統(tǒng)支持用戶(hù)發(fā)送指令數(shù)據(jù)進(jìn)行App在軌上注與在軌管理,包含“進(jìn)入上注模式”、“開(kāi)始App高速上注”、“結(jié)束App高速上注”、“退出上注模式”、“AppN安裝”、“AppN啟動(dòng)”、“AppN停止”、“AppN升級(jí)”、“AppN卸載”,指令碼字設(shè)計(jì)見(jiàn)表1。
表1 App管理指令
星載操作系統(tǒng)接收地面注入的App完成在軌上注。上注的方式分為整體上注、斷點(diǎn)續(xù)傳上注、增量文件上注。對(duì)于占用空間較小的App,可以在衛(wèi)星過(guò)境時(shí)間內(nèi)完成整體上注。如果衛(wèi)星過(guò)境時(shí)間內(nèi)App無(wú)法完成整體上注,則可以選擇斷點(diǎn)續(xù)傳上注,等衛(wèi)星下次過(guò)境時(shí)再次上注。對(duì)于只需要改變App的某個(gè)配置文件或增加一個(gè)腳本文件,可以選擇增量文件上注。
5)App的應(yīng)用方式
為了減少App與操作系統(tǒng)的耦合性,設(shè)計(jì)了容器應(yīng)用模式,App出現(xiàn)異常時(shí),不會(huì)影響操作系統(tǒng)的正常運(yùn)行。用戶(hù)上注的App首先進(jìn)入到測(cè)試容器環(huán)境中,經(jīng)過(guò)規(guī)定時(shí)間驗(yàn)證正確后再執(zhí)行在軌任務(wù)。
傳統(tǒng)星載操作系統(tǒng)受限于存儲(chǔ)空間和CPU的性能,使用文件系統(tǒng)較少,遙測(cè)數(shù)據(jù)多存儲(chǔ)在內(nèi)存中?;贚inux的星載操作系統(tǒng)支持文件系統(tǒng),對(duì)于數(shù)據(jù)存儲(chǔ)讀寫(xiě),可以使用數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)供在軌任務(wù)使用。數(shù)據(jù)庫(kù)可存儲(chǔ)多種遙測(cè)數(shù)據(jù),包括實(shí)時(shí)遙測(cè)、延時(shí)遙測(cè)、重點(diǎn)遙測(cè),為星載樣本訓(xùn)練、自主健康管理、行為預(yù)測(cè)等智能應(yīng)用提供了便利手段,解決了衛(wèi)星難以實(shí)現(xiàn)長(zhǎng)期有效數(shù)據(jù)分析的難題。
根據(jù)航天器在軌數(shù)據(jù)實(shí)時(shí)計(jì)算任務(wù)對(duì)Linux操作系統(tǒng)的測(cè)試需求,搭建了星載操作系統(tǒng)單機(jī)測(cè)試環(huán)境。由于NVIDIA Jetson Tegra X2硬件平臺(tái)具備性能高、功耗低的特點(diǎn),因此本驗(yàn)證環(huán)境單機(jī)采用由四核NVIDIA Jetson Tegra X2模塊組成的電性產(chǎn)品。其它硬件測(cè)試環(huán)境還包括地檢設(shè)備及穩(wěn)壓源。軟件測(cè)試環(huán)境包括操作系統(tǒng)組件(部署在星上)、部署地檢設(shè)備(Ubuntu1804)、Linux測(cè)試平臺(tái)(LTP)開(kāi)源測(cè)試套件,見(jiàn)表2。
表2 驗(yàn)證環(huán)境
該星載操作系統(tǒng)運(yùn)行在單機(jī)測(cè)試環(huán)境,進(jìn)行了可靠啟動(dòng)、高速數(shù)據(jù)傳輸?shù)谋葘?duì)測(cè)試、智能應(yīng)用的管理測(cè)試、操作系統(tǒng)的壓力測(cè)試。
1)可靠啟動(dòng)策略與自主恢復(fù)策略測(cè)試
根據(jù)可靠啟動(dòng)及自主恢復(fù)機(jī)制的設(shè)計(jì)思路,分別進(jìn)行了正常啟動(dòng)、故障注入測(cè)試。同時(shí),針對(duì)操作系統(tǒng)應(yīng)用程序的內(nèi)存泄漏進(jìn)行可靠性測(cè)試。測(cè)試結(jié)果見(jiàn)表3。
表3 可靠性測(cè)試項(xiàng)目及結(jié)果
2)高速數(shù)據(jù)傳輸測(cè)試
該高速數(shù)據(jù)傳輸測(cè)試中PCIE選用2.0版本,如圖9所示,斜線圖為改進(jìn)前的PCIE驅(qū)動(dòng)的傳輸速率,灰色圖為改進(jìn)后的PCIE傳輸速率。改進(jìn)后的傳輸速率平均值為8.36 Gbit/s,改進(jìn)前傳輸速率為6.08 Gbit/s,傳輸速率提高了37%。
圖9 PCIE傳輸比對(duì)表
3)智能應(yīng)用管理框架測(cè)試
對(duì)智能應(yīng)用管理框架進(jìn)行了App上注、App管理、數(shù)據(jù)庫(kù)應(yīng)用、軟件重構(gòu)的測(cè)試,見(jiàn)表4。App上注對(duì)上注數(shù)量和上注方式進(jìn)行了測(cè)試,并對(duì)App的管理功能(安裝、啟動(dòng)、停止、更新、卸載)進(jìn)行了驗(yàn)證。數(shù)據(jù)庫(kù)應(yīng)用測(cè)試采用SQLite工具,測(cè)試了空間遙感數(shù)據(jù)的插入、刪除、更新、查詢(xún)功能。軟件重構(gòu)功能完成了應(yīng)用程序和配置文件的更換測(cè)試,應(yīng)用程序包括遙控遙測(cè)模塊、App管理模塊,配置文件包括App配置文件、操作系統(tǒng)配置文件。
表4 管理框架測(cè)試
4)壓力測(cè)試
對(duì)操作系統(tǒng)通過(guò)Linux測(cè)試平臺(tái)(LTP)測(cè)試環(huán)境進(jìn)行壓力測(cè)試,可以獲取到資源利用率的情況。本測(cè)試選擇8點(diǎn)到22點(diǎn)之間共8個(gè)時(shí)間段的測(cè)試結(jié)果,如圖10所示。
圖10 進(jìn)程負(fù)載情況
從圖10測(cè)試結(jié)果可知,用戶(hù)進(jìn)程負(fù)載、內(nèi)核進(jìn)程負(fù)載、IO進(jìn)程負(fù)載、空閑進(jìn)程負(fù)載、內(nèi)存占用情況。其中系統(tǒng)運(yùn)行時(shí)用戶(hù)進(jìn)程最大CPU占用率為96.05%,內(nèi)存最大占用為76.2%,系統(tǒng)運(yùn)行穩(wěn)定。
本文從星載智能應(yīng)用的可靠性、安全性、好用易用性需求出發(fā),對(duì)Linux進(jìn)行改進(jìn)設(shè)計(jì)。經(jīng)過(guò)單機(jī)功能性能測(cè)試及整星各個(gè)階段的工程驗(yàn)證,改進(jìn)后的星載操作系統(tǒng)的功能性能提升明顯,滿足了工程預(yù)定目標(biāo)。設(shè)計(jì)的星載操作系統(tǒng)對(duì)整星數(shù)管系統(tǒng)的星上數(shù)據(jù)處理能力、星上數(shù)據(jù)傳輸能力、星上智能化應(yīng)用模式都有較大整體性促進(jìn)作用。對(duì)于高算力硬件平臺(tái),基于Linux內(nèi)核的星載操作系統(tǒng)通過(guò)多核調(diào)度和并行計(jì)算,提高了數(shù)管系統(tǒng)的星上算力水平和數(shù)據(jù)處理能力。改進(jìn)后的星上操作系統(tǒng)可支持PCIE接口高速傳輸數(shù)據(jù),提高了數(shù)管系統(tǒng)的數(shù)據(jù)傳輸性能和數(shù)據(jù)吞吐量。在軟件重構(gòu)功能上,改進(jìn)后的星上操作系統(tǒng)支持多種智能應(yīng)用的上注與在軌管理,實(shí)現(xiàn)了數(shù)管系統(tǒng)軟件定義衛(wèi)星的理念。
本系統(tǒng)基于NVIDIA Jetson Tegra TX2處理器平臺(tái)和Linux開(kāi)源操作系統(tǒng),開(kāi)展支持衛(wèi)星智能應(yīng)用的操作系統(tǒng)設(shè)計(jì),具有自主可控、兼容性廣泛、輕量化、普適性強(qiáng)的特點(diǎn)?;贚inux開(kāi)源分支進(jìn)行改進(jìn)設(shè)計(jì),代碼自主可控。本操作系統(tǒng)除了適用于NVIDIA Jetson Tegra TX2處理器,也可兼容NVIDIA Jetson Tegra系列的多種處理器平臺(tái)。經(jīng)過(guò)裁剪,本操作系統(tǒng)去除應(yīng)用基礎(chǔ)庫(kù)占用大小為52 Mbyte,適用于多種智能應(yīng)用場(chǎng)景,為多種智能應(yīng)用提供了一個(gè)平臺(tái)。下一步將開(kāi)展星載操作系統(tǒng)人工智能應(yīng)用、并行計(jì)算的研究,使得操作系統(tǒng)能更高好的發(fā)揮應(yīng)用效能。