周庭梁 夏 偉 蔣建金 傅林泰
(卡斯柯信號(hào)有限公司,200071,上海//第一作者,高級(jí)工程師)
安全計(jì)算機(jī)平臺(tái)作為軌道交通信號(hào)系統(tǒng)的基礎(chǔ)安全苛求設(shè)備,采用故障導(dǎo)向安全的機(jī)制,支撐平臺(tái)之上的信號(hào)系統(tǒng)的安全運(yùn)行,是負(fù)責(zé)軌道交通安全的核心設(shè)備,其安全等級(jí)必須達(dá)到SIL4(EN系列最高安全等級(jí))。
目前我國尚缺乏成熟的基于自主安全嵌入式操作系統(tǒng)且符合SIL4高安全等級(jí)的自主化軌道交通安全計(jì)算機(jī)平臺(tái)。其中,嵌入式實(shí)時(shí)操作系統(tǒng)作為嵌入式軟件產(chǎn)業(yè)鏈的底層基礎(chǔ),具有相當(dāng)?shù)拈_發(fā)難度,需要較長(zhǎng)的開發(fā)周期和較高的開發(fā)成本,因此逐漸作為一個(gè)獨(dú)立的研發(fā)領(lǐng)域向?qū)I(yè)化、模塊化和商業(yè)化發(fā)展,形成產(chǎn)業(yè)鏈中重要一環(huán)。目前在國內(nèi)市場(chǎng)上流行的實(shí)時(shí)操作系統(tǒng)主要包括VxWork、PSOS、VRTX、Nucleus、QNX、UC/OS-II和WinCE等,國產(chǎn)的實(shí)時(shí)操作系統(tǒng)主要包括ReWorks、Delta OS、Hopen OS、CASSPDA和HBOS等。
本文將研究安全計(jì)算機(jī)平臺(tái)的架構(gòu)設(shè)計(jì),通過自主操作系統(tǒng)的替換,擺脫對(duì)進(jìn)口基礎(chǔ)軟件的依賴,以及通過安全中間件的開發(fā),支持安全計(jì)算機(jī)平臺(tái)所需要的基礎(chǔ)軟件功能。
安全計(jì)算機(jī)平臺(tái)的典型安全架構(gòu)主要包括基于編碼的、基于雙機(jī)熱備結(jié)構(gòu)的、三取二架構(gòu)的以及二乘二取二架構(gòu)的安全平臺(tái)。
基于編碼的安全平臺(tái)如圖1所示。這類型的安全平臺(tái)采用基于編碼的安全原理,其核心運(yùn)算模塊上的I/O(輸入/輸出)處理和計(jì)算部分均進(jìn)行編碼。根據(jù)此類平臺(tái)對(duì)編碼運(yùn)算結(jié)果的處理方式,又可以分為圖1中的類型I和類型II兩類安全平臺(tái)。類型I的安全平臺(tái),采用獨(dú)立的校驗(yàn)板對(duì)編碼結(jié)果進(jìn)行校驗(yàn),以實(shí)現(xiàn)每周期對(duì)于處理結(jié)果的實(shí)時(shí)安全檢查,校驗(yàn)不通過時(shí)將導(dǎo)向安全側(cè);類型II的安全平臺(tái),本身的編碼系統(tǒng)安全原理就能夠保證在計(jì)算結(jié)果出錯(cuò)或有可能導(dǎo)致危險(xiǎn)的輸出時(shí),相應(yīng)編碼的校驗(yàn)碼部分能檢測(cè)相應(yīng)的出錯(cuò)故障,并且將相關(guān)故障反映到校驗(yàn)碼中。
圖1 基于編碼的安全平臺(tái)
雙機(jī)熱備的安全平臺(tái)如圖2所示。其基本工作原理是兩個(gè)模塊接收相同的輸入數(shù)據(jù)并進(jìn)行邏輯運(yùn)算,其中一個(gè)模塊為主機(jī),另一個(gè)為熱備機(jī),只有主機(jī)才有對(duì)外控制權(quán)。每個(gè)模塊一般均為單CPU(中央處理器)處理單元,單個(gè)模塊構(gòu)成獨(dú)立的子系統(tǒng)。主備機(jī)都具有故障檢測(cè)功能,在其工作過程中,若主機(jī)自檢發(fā)現(xiàn)自身出現(xiàn)故障時(shí),通過切換單元進(jìn)行切換,備機(jī)升為主機(jī)運(yùn)行;若熱備機(jī)出現(xiàn)故障,則不進(jìn)行切換。
圖2 雙機(jī)熱備的安全平臺(tái)
圖3 三取二架構(gòu)的安全平臺(tái)
三取二架構(gòu)的安全平臺(tái)如圖3所示。該平臺(tái)由3個(gè)模塊組成。正常工作時(shí),3個(gè)模塊接收相同的輸入數(shù)據(jù),并平行地對(duì)數(shù)據(jù)進(jìn)行處理,然后通過表決單元對(duì)運(yùn)算結(jié)果進(jìn)行多數(shù)表決;只要有2個(gè)模塊的運(yùn)算結(jié)果一致,則認(rèn)為系統(tǒng)處于正常工作狀態(tài),產(chǎn)生控制命令并輸出。三取二架構(gòu)在其中一個(gè)模塊出現(xiàn)故障退出工作時(shí),降級(jí)為二取二架構(gòu)。通過這種降級(jí)處理方式,增強(qiáng)了可用性,使整體系統(tǒng)能夠繼續(xù)工作,實(shí)際上起到了熱備的作用。
二乘二取二架構(gòu)的安全平臺(tái)如圖4所示。該平臺(tái)由兩系4個(gè)模塊組成,其中2個(gè)模塊構(gòu)成1個(gè)子系統(tǒng),形成二取二結(jié)構(gòu),通過比較器實(shí)時(shí)比較。兩系構(gòu)成熱備冗余結(jié)構(gòu),和雙機(jī)熱備原理相同。其中一系為主系,另一系為備系,當(dāng)主系內(nèi)雙機(jī)比較不一致或出現(xiàn)故障時(shí),則系統(tǒng)切換到備系工作;若備系內(nèi)雙機(jī)比較不一致或出現(xiàn)故障時(shí),則不需要切換。該結(jié)構(gòu)采用二取二比較來保證系統(tǒng)的安全性,同時(shí)采用雙機(jī)切換來保證系統(tǒng)的可靠性。目前國內(nèi)外的安全平臺(tái)廣泛采用二乘二取二架構(gòu),本文將以該架構(gòu)作為設(shè)計(jì)與實(shí)現(xiàn)的基礎(chǔ)來進(jìn)行討論。
圖4 二乘二取二架構(gòu)的安全平臺(tái)
目前,自主化的軌道交通運(yùn)控系統(tǒng)研發(fā)與集成應(yīng)用發(fā)展較為迅速,已具備了商用條件,但難以突破國外的技術(shù)體系制約,尤其是安全計(jì)算機(jī)的核心部件仍然被國外控制,其涉及的核心基礎(chǔ)軟件高安全嵌入式操作系統(tǒng)主要都是采用國外Intel、QNX、Micrium等公司的高安全認(rèn)證產(chǎn)品,無法擺脫對(duì)進(jìn)口基礎(chǔ)軟件的依賴。
實(shí)時(shí)操作系統(tǒng)是當(dāng)今流行的嵌入式系統(tǒng)的軟件開發(fā)平臺(tái),在軌道交通安全計(jì)算機(jī)平臺(tái)中引入高安全嵌入式實(shí)時(shí)操作系統(tǒng),可以有效地解決系統(tǒng)的高安全性和底層硬件抽象化的難題,從而有利于系統(tǒng)“故障-安全”的實(shí)現(xiàn),提高系統(tǒng)的安全性、可移植性和可維護(hù)性,縮短了新產(chǎn)品的開發(fā)周期。
本文擬采用ReWorks-Cert操作系統(tǒng),實(shí)現(xiàn)自主化安全計(jì)算機(jī)平臺(tái)的基礎(chǔ)軟件自主化替代。作為國內(nèi)唯一通過IEC 61508 SIL3和EN 50128 SIL3安全認(rèn)證的自主可控嵌入式實(shí)時(shí)操作系統(tǒng),ReWorks-Cert操作系統(tǒng)由中國電子科技集團(tuán)公司第三十二研究所自主研制,采用操作系統(tǒng)功能安全完整性最高等級(jí)的標(biāo)準(zhǔn)進(jìn)行研制。
作為一款微內(nèi)核操作系統(tǒng),ReWorks-Cert操作系統(tǒng)不僅能夠提供基于優(yōu)先級(jí)的搶占式實(shí)時(shí)調(diào)度和多任務(wù)管理機(jī)制,支持基于中斷優(yōu)先級(jí)的中斷嵌套和共享中斷的異常/中斷管理,還能支持互斥量、信號(hào)量、消息隊(duì)列及事件等多種任務(wù)通信機(jī)制,能夠滿足軌道交通安全計(jì)算機(jī)平臺(tái)對(duì)于實(shí)時(shí)操作系統(tǒng)的苛刻需求。ReWorks-Cert操作系統(tǒng)安全平臺(tái)結(jié)構(gòu)圖如圖5所示。
圖5 ReWorks-Cert操作系統(tǒng)安全平臺(tái)結(jié)構(gòu)圖
本文基于高安全自主化國產(chǎn)實(shí)時(shí)嵌入式ReWorks-Cert操作系統(tǒng),通過研發(fā)嵌入式安全中間件技術(shù),構(gòu)建軌道交通信號(hào)控制系統(tǒng)的多子系統(tǒng)共用的、符合SIL4高安全等級(jí)的二乘二取二架構(gòu)自主化安全計(jì)算機(jī)平臺(tái)。
中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,位于操作系統(tǒng)之上,管理計(jì)算機(jī)資源和網(wǎng)絡(luò)通信,為應(yīng)用軟件提供運(yùn)行環(huán)境,幫助用戶靈活、高效地開發(fā)和集成復(fù)雜的應(yīng)用軟件。使用中間件技術(shù)可以使應(yīng)用軟件在設(shè)計(jì)開發(fā)時(shí)無需直接接觸復(fù)雜的計(jì)算機(jī)最底層的數(shù)據(jù)(如操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)庫等)。利用軌道交通信號(hào)各子系統(tǒng)之間的共性需求來構(gòu)建安全的計(jì)算機(jī)中間件,應(yīng)用開發(fā)人員通過調(diào)用中間件提供的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口),只需關(guān)注與應(yīng)用相關(guān)的功能開發(fā),而無需考慮安全平臺(tái)相關(guān)的功能開發(fā),與平臺(tái)共性且相關(guān)的功能由通用安全中間件系統(tǒng)實(shí)現(xiàn),這樣可以大大縮短系統(tǒng)的研發(fā)及測(cè)試周期,減少資金的重復(fù)投入,降低軟件的部署及維護(hù)難度。
操作系統(tǒng)中自帶的網(wǎng)絡(luò)協(xié)議棧或商用協(xié)議棧本身對(duì)于安全計(jì)算機(jī)平臺(tái)而言是不可見的黑盒,無法做到高安全、透明化、自主可控等要求。為了解決該問題,本文參考RFC標(biāo)準(zhǔn)[2-7],根據(jù)實(shí)際需求,開發(fā)出為安全計(jì)算機(jī)平臺(tái)提供協(xié)議的集合(PROSTACK)。PROSTACK是由卡斯柯信號(hào)有限公司完全自主研發(fā)的,并且通過EN 50128 SIL4級(jí)安全認(rèn)證。
PROSTACK的架構(gòu)如圖6所示,包括IP[2]、TCP、UDP[3]、ICMP[6]、TFTP[7]、SNMP及SNTP等通用網(wǎng)絡(luò)協(xié)議,以及FSFB2、SACEM、RSSP1、RSSP2等多種安全通信協(xié)議。PROSTACK可用于安全計(jì)算機(jī)平臺(tái)中安全消息、維護(hù)消息、軟件鏡像、時(shí)鐘消息等各種數(shù)據(jù)的傳輸。通過虛擬IP技術(shù)建立內(nèi)部子網(wǎng)接口,實(shí)現(xiàn)以太網(wǎng)、串口和CAN(控制器局域器)總線等構(gòu)件之間消息的互聯(lián)互通。
圖6 PROSTACK架構(gòu)圖
PROSTACK通過對(duì)傳輸過程數(shù)據(jù)統(tǒng)計(jì)、故障數(shù)據(jù)檢測(cè)、錯(cuò)誤數(shù)據(jù)記錄等技術(shù)方法,提高了傳輸過程的安全性與可控性;提供POSIX接口,提高代碼開發(fā)及移植效率;安全通信協(xié)議采用序列號(hào)、時(shí)間戳、源和目的地標(biāo)志符、消息鑒定安全碼、CRC(循環(huán)冗余校驗(yàn)碼)編碼等防御措施以抵御傳輸系統(tǒng)中的相關(guān)威脅和風(fēng)險(xiǎn)。
自檢測(cè)技術(shù)(BIT)[1]是為了盡早地暴露單通道的故障而采取的一種技術(shù)。安全平臺(tái)的自檢測(cè)分為上電自檢和在線自檢。上電自檢的檢測(cè)內(nèi)容主要包括檢測(cè)系統(tǒng)是否為熱重啟、檢測(cè)硬件是否存在故障、檢測(cè)可執(zhí)行文件在拷貝過程中是否被修改等,一旦檢測(cè)不通過,系統(tǒng)立即導(dǎo)向安全側(cè);在線自檢按照一定時(shí)間周期循環(huán)執(zhí)行,檢測(cè)內(nèi)容主要包括檢測(cè)CPU和內(nèi)存是否發(fā)生故障、可執(zhí)行文件是否被修改、通信通道(串口、CAN及GPIO)是否發(fā)生故障等,一旦檢測(cè)不通過,系統(tǒng)立即導(dǎo)向安全側(cè)。
CPU檢測(cè)分為寄存器測(cè)試和指令測(cè)試,其中寄存器采用匯編程序,指令測(cè)試采用C語言程序。CPU寄存器測(cè)試方法為將一串RAM(隨機(jī)存取存儲(chǔ)器)中測(cè)試字寫入寄存器,再從寄存器中將數(shù)據(jù)讀出存入RAM,然后比較讀寫數(shù)據(jù)的一致性;指令測(cè)試采用輸入一組高診斷覆蓋率的檢測(cè)數(shù)據(jù),進(jìn)行算術(shù)運(yùn)算、邏輯運(yùn)算、移位操作等指令運(yùn)算,比較實(shí)際運(yùn)算結(jié)果與預(yù)期結(jié)果的一致性。
內(nèi)存檢測(cè)對(duì)SDRAM(同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器)、SRAM(靜態(tài)隨機(jī)存儲(chǔ)器)、FLASH等進(jìn)行完整性測(cè)試,每次測(cè)試均要訪問多個(gè)字節(jié)的數(shù)據(jù),與安全相關(guān)的常量數(shù)據(jù)通常采用計(jì)算得到的CRC進(jìn)行比較。測(cè)試結(jié)果需要進(jìn)行雙通道比較,如果失敗或不一致,系統(tǒng)將導(dǎo)向安全側(cè)。
安全平臺(tái)中間件可擴(kuò)展接口如圖7所示。其中,安全中間件需要提供統(tǒng)一的接口供平臺(tái)調(diào)用,同時(shí)平臺(tái)封裝這些接口提供給應(yīng)用使用。安全中間件的接口主要包括以下幾種:
圖7 安全平臺(tái)中間件可擴(kuò)展接口
1) 獲取操作系統(tǒng)服務(wù)的接口(I_OS):獲取ReWorks-Cert操作系統(tǒng)提供的信號(hào)量管理、內(nèi)存管理、消息隊(duì)列管理、任務(wù)管理、時(shí)間管理、事件標(biāo)志管理、中斷管理和鉤子函數(shù)管理等服務(wù)。
2) 人機(jī)界面接口(I_HMI):訪問板卡上的LED(發(fā)光二極管)燈、數(shù)碼管等顯示功能。
3) 以太網(wǎng)通信接口(I_Net):與外部的設(shè)備進(jìn)行通信,傳遞安全數(shù)據(jù)、維護(hù)數(shù)據(jù)及時(shí)間數(shù)據(jù)等。
4) 串行總線接口(I_SPI):訪問串行FLASH,獲取配置數(shù)據(jù),并寫入事件日志等。
5) 并行總線接口(I_Parallel):讀取電子戳與軟件熔絲,同時(shí)讀寫配置數(shù)據(jù)。
6) CAN總線接口(I_CAN):通過CAN總線接口與其他模塊交互信息。
7) 應(yīng)用接口(I_API):開放接口與應(yīng)用軟件交互信息。
根據(jù)EN 50128[8]、IEC 61508[9]等標(biāo)準(zhǔn)中關(guān)于安全苛求系統(tǒng)開發(fā)的相關(guān)要求,系統(tǒng)的功能、性能、RAMS(可靠性、可用性、可維修性、安全性)等需求應(yīng)分配到軟件或硬件中實(shí)現(xiàn),是一個(gè)自上而下的過程。對(duì)應(yīng)地,測(cè)試過程分成軟硬件級(jí)、系統(tǒng)級(jí)的確認(rèn)和驗(yàn)證,同樣亦是一個(gè)自下而上的過程,如圖8所示。
圖8 系統(tǒng)級(jí)測(cè)試過程
針對(duì)安全平臺(tái)的軟件測(cè)試包括軟件需求和軟件架構(gòu),要求通過軟件確認(rèn)測(cè)試和集成測(cè)試來確保軟件需求及軟件模塊的接口被正確實(shí)現(xiàn)。對(duì)于軟件編碼階段,要求進(jìn)行靜態(tài)分析,主要來驗(yàn)證編碼對(duì)于編碼規(guī)則的符合性。對(duì)于每一個(gè)軟件函數(shù),根據(jù)EN 50128的要求,必須做到語句覆蓋、分支覆蓋和MC/DC(修訂條件/判定覆蓋)覆蓋達(dá)到100%。
硬件測(cè)試和軟件測(cè)試類似,區(qū)別是對(duì)于硬件板卡,其單元測(cè)試無明確的語句或者分支覆蓋率要求,所要做的是功能覆蓋的100%,同時(shí)要根據(jù)硬件設(shè)計(jì)的經(jīng)驗(yàn)進(jìn)行信號(hào)完整性、電源完整性、安規(guī)測(cè)試等性能和電氣安全等測(cè)試。
為了驗(yàn)證ReWorks-Cert操作系統(tǒng)可以滿足安全平臺(tái)對(duì)實(shí)時(shí)操作系統(tǒng)的性能要求,需要對(duì)安全計(jì)算機(jī)平臺(tái)的行為進(jìn)行全系統(tǒng)的確認(rèn),確保每一條需求都被設(shè)計(jì)正確實(shí)現(xiàn)。
為了測(cè)試ReWorks-Cert操作系統(tǒng)的性能參數(shù),將安全計(jì)算機(jī)平臺(tái)分別運(yùn)行于ReWorks-Cert操作系統(tǒng)和某國外主流實(shí)時(shí)操作系統(tǒng) (簡(jiǎn)稱RTOS)之上,兩者硬件環(huán)境相同。通過統(tǒng)計(jì)一些基準(zhǔn)性能測(cè)試參數(shù)(響應(yīng)時(shí)間)進(jìn)行比較,測(cè)試條件為:①編譯器的編譯優(yōu)化選項(xiàng)為2級(jí);②使能處理器指令緩存并關(guān)閉數(shù)據(jù)緩存;③所有操作系統(tǒng)使用的全局變量最后存放在處理器內(nèi)部靜態(tài)內(nèi)存SRAM。
系統(tǒng)穩(wěn)定運(yùn)行2周,隨機(jī)采樣100次數(shù)據(jù)并取平均值,統(tǒng)計(jì)結(jié)果如圖9所示。
圖9 基準(zhǔn)性能參數(shù)平均值比較
對(duì)試驗(yàn)結(jié)果進(jìn)行分析,得到:
1) 對(duì)于單次協(xié)同調(diào)度,ReWorks-Cert操作系統(tǒng)較RTOS的執(zhí)行時(shí)間快13.6%;
2) 對(duì)于單次搶占式調(diào)度,ReWorks-Cert操作系統(tǒng)比RTOS的執(zhí)行時(shí)間快16.6%;
3) 對(duì)于單次中斷處理(無搶占發(fā)生),ReWorks-Cert操作系統(tǒng)比RTOS的執(zhí)行時(shí)間快4.8%;
4) 對(duì)于單次搶占式中斷處理,ReWorks-Cert操作系統(tǒng)比RTOS的執(zhí)行時(shí)間快30.1%;
5) 對(duì)于單次消息隊(duì)列處理(考慮任務(wù)阻塞和帶超時(shí)參數(shù)),ReWorks-Cert操作系統(tǒng)比RTOS的執(zhí)行時(shí)間快9.4%;
6) 對(duì)于單次簡(jiǎn)單任務(wù)同步(信號(hào)量),ReWorks-Cert操作系統(tǒng)比RTOS的執(zhí)行時(shí)間慢7.3%;
7) 對(duì)于單次(事件)標(biāo)志處理(考慮任務(wù)阻塞和帶超時(shí)參數(shù)),ReWorks-Cert操作系統(tǒng)比RTOS的執(zhí)行時(shí)間快20%。
對(duì)于安全協(xié)議棧的測(cè)試,需要滿足EN 50128標(biāo)準(zhǔn)中對(duì)SIL4軟件功能、性能測(cè)試的方法的要求,采用邊界值分析、等價(jià)類劃分、錯(cuò)誤猜測(cè)等測(cè)試技術(shù)。測(cè)試人員通過設(shè)計(jì)模擬器發(fā)送消息來完成測(cè)試,測(cè)試架構(gòu)如圖10所示。測(cè)試結(jié)果表明:安全計(jì)算機(jī)平臺(tái)功能實(shí)現(xiàn)正確,并且滿足EN 50128、IEC 61508等標(biāo)準(zhǔn)中關(guān)于安全苛求系統(tǒng)開發(fā)的相關(guān)要求。
圖10 PROSTACK測(cè)試架構(gòu)圖
本文以基于自主操作系統(tǒng)的安全計(jì)算機(jī)平臺(tái)的開發(fā)為目標(biāo),突破軌道交通安全計(jì)算機(jī)平臺(tái)在安全認(rèn)證過程中面臨的進(jìn)口基礎(chǔ)軟件的知識(shí)產(chǎn)權(quán)限制,補(bǔ)齊軌道交通產(chǎn)業(yè)鏈在基礎(chǔ)軟件層面的短板,增強(qiáng)我國軌道交通“走出去”的核心競(jìng)爭(zhēng)力。目前,基于自主操作系統(tǒng)的安全計(jì)算機(jī)平臺(tái)已經(jīng)通過第三方SIL4級(jí)安全認(rèn)證,并將在實(shí)際軌道交通線路試點(diǎn)示范應(yīng)用,并進(jìn)一步形成適用于軌道交通行業(yè)的通用安全基礎(chǔ)軟件的安全接口、定義和規(guī)范。