同濟大學軟件學院 楊 嘯
隨著嵌入式系統(tǒng)的廣泛應用,產品的功能安全性已成為設計的重點問題之一,尤其在汽車領域。目前電子工業(yè)中最普遍的功能安全標準是IEC 61508[1]。
IEC 61508提出功能安全的概念,功能安全作為安全性的一部分,取決于系統(tǒng)或設備正確地響應其輸入。功能安全性的保障是通過對潛在危險情況進行檢測,并采取相應的安全措施或機制,來防止危害性事件發(fā)生或緩解其造成的危害。因此,監(jiān)測產品是否發(fā)生故障對保證功能安全有重要意義。
在嵌入式環(huán)境的實時監(jiān)測已有相關的研究,Donal Heffernan和Ciaran MacNamee將實時驗證擴展到功能安全性的驗證[2]。在他們的工作中,設計了硬件電路用于監(jiān)測控制網(wǎng)(CAN)的消息,以實時驗證安全性。,然而通過CAN總線無法監(jiān)測軟件內部變量,因此無法驗證嵌入式應用本身是否發(fā)生故障。
本文旨在對嵌入式產品提供故障實時檢測方案。設計了一個FPGA硬件模塊,通過SPI(Serial Peripheral Interface)總線,在嵌入式產品運行階段獲取需要監(jiān)測的變量信息,并根據(jù)FPGA內設計的驗證模塊檢測故障是否發(fā)生。
Amir Pnueli[3]定義了線性時間邏輯(LTL),它為復雜系統(tǒng)的簡化提供了強大的形式化體系。文獻[4]使用LTL表達故障,并將其用于模型檢驗。
例如一個圖像識別應用的故障是攝像頭未啟動或捕獲圖像超時或檢測時間超時。用LTL公式表達如下:
為了能夠在運行階段檢測應用的行為,監(jiān)控模塊需要獲得相關的變量,被檢測應用通過SPI總線將變量信息傳輸?shù)奖O(jiān)控模塊。在研究中,假設傳輸是無誤的并且足夠快,以使驗證能夠實時地進行。
本設計使用Xilinx ZYNQ全可編程片上系統(tǒng)(All Programmable Systems on Chips, APSoCs)以軟硬件協(xié)同的設計方法實現(xiàn)故障檢測系統(tǒng)。系統(tǒng)主要包括五個功能模塊:數(shù)據(jù)通信、數(shù)據(jù)解析、AP評估、公式驗證和計時器。其中AP評估和公式驗證使用FPGA實現(xiàn),以保證結果輸出的實時性,另外對于計時器,也使用FPGA硬件電路實現(xiàn),以獲得真實的物理時間。數(shù)據(jù)通信使用FPGA實現(xiàn)SPI從機接收功能,將接收到的數(shù)據(jù)存放在寄存器中,然后由軟件部分讀取并進行解析,獲得所需變量的值。
系統(tǒng)整體架構如圖1所示,ZYNQ分為PL和PS兩部分,PL是可編程邏輯(Programmable Logic),由FPGA硬件電路實現(xiàn);PS即處理器系統(tǒng)(Processing System),運行于ARM處理器。
圖1 硬件監(jiān)控模塊架構框圖
在接收到全局變量所需的值后,AP評估模塊故障表達式的每個基本事件進行評估。故障表達式的最終結果在公式驗證模塊中實時評估,以檢測故障是否發(fā)生。為了評估與時間有關的原子命題,在電路中設計了一個獨立的時鐘。外部接口用于向用戶顯示結果,或將結果發(fā)送給其他應用程序以實現(xiàn)安全性控制。
評估環(huán)境配置如圖2所示。實時檢測系統(tǒng)運行于ZYNQ,嵌入式應用通過SPI連接,并將檢測結果顯示在用戶界面(PC)。
在實驗中,通過在嵌入式應用運行期間注入故障,實時檢測模塊能夠及時輸出檢測結果,并顯示檢測用時。根據(jù)檢測結果和用時驗證實時檢測系統(tǒng)的有效性。
圖2 實驗評估環(huán)境
本實驗使用前文提到的故障示例進行測試,測試結果如表1所示。其中第四項故障,由于并未設計在實時檢測模塊內,因此未檢測到違反。檢測結果表名實時檢測系統(tǒng)能夠在應用運行期間正確地檢測到故障發(fā)生。
檢測用時如表2所示。以視頻常用幀率30fps,則圖像采集周期為30ms,而故障檢測用時遠小于這一周期,可見FPGA具有良好的實時性。
表1 功能測試結果
表2 實時性測試結果(ms)
為了保證嵌入式產品的安全性,產品故障必須及時發(fā)現(xiàn),否則當系統(tǒng)失效或事故發(fā)生,無法及時采取安全措施,或已經(jīng)對環(huán)境和人員造成損害。
本文設計一個獨立的實時檢測系統(tǒng)模塊,在軟件的運行階段,實時接收軟件變量信息,并根據(jù)故障表達式判斷故障是否發(fā)生。故障注入的測試表明,實時檢測系統(tǒng)在軟件發(fā)生故障時,能夠準確和及時給出檢測結果。
本文的研究工作設計了故障實時檢測的原型系統(tǒng),證明了在軟件運行階段檢測故障的合理性,為保證產品安全提供有效依據(jù)。
[1]靳江紅,吳宗之,胡玢.對功能安全基礎標準IEC61508的研究[J].中國安全生產科學技術,2009,5(02):71-75.
[2]D.Heffernan,C.MacNamee,Runtime observation of functional safety properties in an automotive control network[J].Journal of Systems Architecture 68(2016):38–50.
[3]A.Pnueli,The temporal logic of programs,in:Foundations of Computer Science,1977,18th Annual Symposium on,IEEE,1977, pp.46–57.
[4]馬琳. 基于故障樹的航電軟件系統(tǒng)安全性驗證方法研究[D].南京航空航天大學,2012.