薛楠 張樂樂 逯計劃 胡靖宇
摘要:航電網絡系統(tǒng)中,每一個網絡節(jié)點都有其獨立的嵌入式操作系統(tǒng)和基于此操作系統(tǒng)所開發(fā)的驅動軟件以及應用,而操作系統(tǒng)又決定了此網絡節(jié)點相關驅動軟件和應用的開發(fā)方式,間接也影響了此網絡節(jié)點的穩(wěn)定性、可靠性和安全性。因此,在PCI/PCIe驅動軟件設計中,操作系統(tǒng)平臺的選擇和驅動軟件的開發(fā)方式是非常重要的。該文介紹了基于嵌入式實時多分區(qū)操作系統(tǒng)平臺下PCI/PCIe驅動軟件的設計和開發(fā)方式以及驅動軟件的應用場景。
關鍵詞:航電網絡;網絡總線驅動;分區(qū)操作系統(tǒng)
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2018)29-0069-02
1 引言
隨著航空電子技術的快速發(fā)展,航電網絡也在不斷創(chuàng)新,規(guī)模和復雜度也在不斷擴充。而整個航電網絡是由一個個網絡節(jié)點組成的,網絡節(jié)點的設計標準、應用的使用規(guī)范直接影響網絡節(jié)點自身的穩(wěn)定性、可靠性,也間接影響整個航電網絡系統(tǒng)的安全性。一般航電網絡節(jié)點的設計從底層到上層的順序依次是底層硬件相關層、操作系統(tǒng)服務層、上層驅動和應用層[1]。由于操作系統(tǒng)在航電網絡節(jié)點中的位置介于底層硬件層和上層軟件層之間,所以操作系統(tǒng)的穩(wěn)定性是航電網絡節(jié)點乃至整個航電網絡系統(tǒng)穩(wěn)定性的前提。
機載嵌入式操作系統(tǒng)分為非分區(qū)操作系統(tǒng)和分區(qū)操作系統(tǒng),其中非分區(qū)操作系統(tǒng)相當于沒有分區(qū)層只有內核層。若要在軟件設計上實現不同功能模塊的獨立性,需將航電網絡系統(tǒng)綜合化和模塊化,系統(tǒng)設計需要采用嵌入式實時多分區(qū)操作系統(tǒng),保證應用軟件在不同應用模塊下實現時間和空間上的隔離性。
2 分區(qū)操作系統(tǒng)介紹
根據美國航電委員會制定的ARINC653標準,規(guī)定了分區(qū)操作系統(tǒng)應用程序接口標準,并且提出了分區(qū)操作系統(tǒng)必須具有的三層軟件結構:應用軟件層、操作系統(tǒng)支持層和硬件支持層。其中航電網絡節(jié)點的應用軟件在應用軟件層實現,且運行在對應的應用分區(qū)中,時間和空間受限于分區(qū)[1]。不同功能的應用運行在對應分區(qū)中,各個分區(qū)實現了時間和空間的隔離,保證了使用獨立性和安全性。
操作系統(tǒng)本身也分為分區(qū)操作系統(tǒng)和核心操作系統(tǒng),其中分區(qū)操作系統(tǒng)存在于分區(qū)中,管理分區(qū)內部的數據資源,包括分區(qū)進程管理和相關調度等;核心操作系統(tǒng)駐留于內核中,主要負責分區(qū)之間的通信、分區(qū)調度管理、分區(qū)故障監(jiān)控、分區(qū)資源管理等功能[1]。應用軟件在分區(qū)操作系統(tǒng)和核心操作系統(tǒng)共同協作下完成其在航電網絡系統(tǒng)中的功能,核心操作系統(tǒng)的代碼和驅動程序運行在系統(tǒng)層,分區(qū)操作系統(tǒng)的代碼、驅動程序和用戶的應用軟件運行在上層[1,2]。不同于非分區(qū)操作系統(tǒng),基于分區(qū)操作系統(tǒng)下的驅動軟件設計在地址訪問方面比較復雜,且一般情況下分區(qū)層和核心層之間的訪問有限制,實現數據的隔離性和安全性。嵌入式實時多分區(qū)操作系統(tǒng)的架構如圖1所示:
3 驅動軟件設計實現
3.1 分區(qū)層與核心層訪問
分區(qū)操作系統(tǒng)為PCI/PCIe設備驅動軟件開發(fā)提供了虛端口、虛分區(qū)、擴展系統(tǒng)調用和設備管理等方式,本文重點研究基礎擴展系統(tǒng)調用下驅動軟件的開發(fā)。在一般的分區(qū)操作系統(tǒng)下,為了安全和保護數據,核心層來管理各個分區(qū)層,但是分區(qū)層一般不能直接訪問核心層。由于分區(qū)層和核心層的訪問權限不同,若用戶應用需要調用核心層的接口,則必須通過系統(tǒng)調用功能來使用核心層的接口。底層硬件將中斷傳至核心層,核心層收到中斷信息后,使用虛中斷的方式將中斷信息從核心層發(fā)至分區(qū)層再告知用戶應用進行相關處理,核心層也可以將自身的命令通過虛中斷方式發(fā)至分區(qū)層通知分區(qū)進行相關處理。如果操作系統(tǒng)配置允許,分區(qū)層中不同分區(qū)之間或者分區(qū)層與核心層之間也可以通過配置好的共享數據區(qū)進行數據的交互。
3.2驅動軟件分層實現
鑒于分區(qū)操作系統(tǒng)的特殊性,在此操作系統(tǒng)下PCI/PCIe驅動軟件的設計就要考慮到分區(qū)層和核心層兩層關系。由于用戶應用運行在分區(qū)層,而驅動軟件本身要調用核心層操作系統(tǒng)提供的系統(tǒng)接口,所以要在分區(qū)層和核心層都要有驅動軟件的代碼實現,并用系統(tǒng)調用方式實現分區(qū)層訪問核心層接口,用虛中斷的方式實現中斷消息從核心層傳遞至分區(qū)層。在兩層驅動軟件的設計中,要同時兼顧分區(qū)操作系統(tǒng)使用的特殊性以及驅動軟件自身的維護兩個方面,保證驅動軟件的穩(wěn)定性和安全性。
在分區(qū)層,若用戶應用在多個分區(qū)都使用了驅動軟件所提供的接口對應的功能,那么要在軟件設計上就要考慮可以同時用于多分區(qū)調用的函數接口,保證應用可以同時在多個分區(qū)使用從而來實現應用的需求[2]。
3.3 驅動軟件地址分配和轉換
在非分區(qū)操作系統(tǒng)開發(fā)的驅動軟件中,若有兩個或更多任務接口調用同一個函數,則調用的是同一個地址空間中的函數和對應變量,如果是同時調用且需要修改全局變量的值,那么就可能會產生調用沖突甚至導致變量內容錯誤,高度并發(fā)訪問處理會導致嚴重的資源競爭。若在分區(qū)操作系統(tǒng)中實現并發(fā)調用同一個函數訪問同一個地址,在分區(qū)層看到是使用同一個邏輯地址,但是對應在物理地址上是不同的,不會產生調用沖突。
在分區(qū)操作系統(tǒng)下,開發(fā)PCI/PCIe驅動軟件所使用的地址空間包含虛擬地址、物理地址和PCI地址三個。其中物理地址指的是實實在在存在的地址,相當于非分區(qū)操作系統(tǒng)中直接可以訪問的地址;虛擬地址是在分區(qū)層應用看到并可以訪問的地址,不是真實的物理地址,但是和某一塊物理地址空間存在一一對應的關系,在核心層根據需要也可能設計有核心層的虛擬地址,和真正的物理地址也是一一對應關系;PCI地址指的是若CPU上面掛接了PCI設備,PCI設備要訪問CPU內存時所使用的地址空間。根據三種地址空間的含義,需在光纖網絡總線驅動軟件設計中,針對不同的地址空間需要進行對應的操作處理。分區(qū)層驅動軟件只能操作分區(qū)層虛擬地址,在設計核心層驅動軟件時要進行準確的PCI地址和虛擬地址的轉換,才能保證用戶應用在使用驅動軟件時對CPU內存物理地址操作的準確性,保證網絡節(jié)點應用使用的安全性。
4 應用實例
在航電網絡設備當中,硬件的設計模式決定了驅動軟件中關于地址空間的分配和訪問方式。在使用分區(qū)操作系統(tǒng)的航電網絡節(jié)點中,使用最多的就是單CPU上面掛接一個或者幾個PCI設備(PCI/PCIe硬件設備),此時主機訪問和PCI設備訪問CPU的內存地址是一樣的,即都是操作同一個虛擬地址映射的物理地址,此種硬件結構的訪問方式決定了驅動軟件在設計中,不需要進行地址轉換,對應的PCI地址和虛擬地址是同一個地址。具體內存地址訪問方式如圖2所示。
另外一種比較復雜的應用情形,就是航電網絡節(jié)點中有多個CPU,一個主CPU上面掛接一個或者多個從CPU,PCI設備掛接在其中某一個從CPU上面,整體是通過PCI交換設備連接的星型物理結構。CPU存儲空間分為IO空間、RAM空間、PCIE配置空間等,其中主CPU的PCIE配置空間給從CPU以及外接PCI設備分配對應的使用空間,僅當第一個CPU正常運行時,才能給其他從CPU以及PCI設備分配資源,保證其正常運行使用,用戶的應用軟件運行在主CPU之上。這種情況下,PCI設備的PCI地址就不是驅動軟件里面的虛擬地址了。在光纖網絡總線驅動軟件的實現中,必須通過一層地址轉換關系,才能得到PCI設備的PCI地址從而實現PCI設備訪問主CPU分配給它的虛擬地址。此種方式的內存地址訪問方式如圖3所示:
目前,在航電系統(tǒng)某型號飛機某網絡節(jié)點上正在使用多分區(qū)操作系統(tǒng)的多CPU掛接PCI設備的硬件結構模式,機載應用和驅動軟件基于此種模式的操作系統(tǒng)和硬件結構進行針對性設計。經過長時間的測試和驗證,此節(jié)點應用功能正常,穩(wěn)定性強。
5 結束語
嵌入式實時多分區(qū)操作系統(tǒng)所應用的硬件環(huán)境復雜,且針對不同的應用環(huán)境驅動軟件的設計架構也略有不同,要根據對應的操作系統(tǒng)類型、硬件環(huán)境模式以及用戶應用的使用方式的不同針對性地進行驅動軟件的開發(fā),保證驅動軟件的穩(wěn)定性。在開發(fā)驅動軟件時基于多分區(qū)特性,在多分區(qū)操作系統(tǒng)下進行驅動軟件和航電網絡應用程序的開發(fā),可以很大程度上提高航電網絡系統(tǒng)的安全性。
參考文獻:
[1] 仝敏,張東.嵌入式實時多分區(qū)操作系統(tǒng)兩態(tài)訪問的研究[J].航空計算技術, 2014,44(6): 88-91.
[2] 楊曉寧,曹原. 嵌入式實時分區(qū)操作系統(tǒng)中健康監(jiān)控機制的設計與實現[J].現代導航, 2013,21(13):101-103.
[3] 徐曉光,折楠,邢亮.分區(qū)操作系統(tǒng)下的BIT 軟件的設計[J]. 電子設計工程, 2013,21(13):187-190.
【通聯編輯:代影】