?

一種VxWorks平臺下的軟件看門狗設計缺陷及改進方法

2016-10-18 07:48蹇彪李佳
現代計算機 2016年16期
關鍵詞:看門狗嵌入式軟件中斷

蹇彪,李佳

(工業和信息化部電子第五研究所,廣州510610)

一種VxWorks平臺下的軟件看門狗設計缺陷及改進方法

蹇彪,李佳

(工業和信息化部電子第五研究所,廣州510610)

介紹VxWorks平臺下基于定時器實現的軟件看門狗的一種設計缺陷,提供一種利用VxWorks中的信號量同步和任務優先級實現的改進方法。測試結果表明改進后的看門狗能夠有效地提高系統運行的可靠性。

VxWorks;看門狗;定時器;設計缺陷

0 引言

國防工業系統中,尤其是航空航天領域中的一些利用嵌入式計算機軟件作為控制核心的系統,如飛控系統、發動機控制系統等,通常需要工作在惡劣環境中,因此對系統可靠性的要求都比較高。這些系統的嵌入式軟件在運行過程中,可能由于硬件電路的干擾,造成軟件的異常跳轉,從而形成非設計的死循環,導致軟件“跑飛”、功能失效等異常情況,這時候軟件若不能及時復位重新恢復正常運行,可能導致整個系統任務失敗的嚴重后果。為了提高系統可靠性,這些系統通常都需要設計看門狗,在系統發生錯誤“跑飛”時,能夠及時地對系統進行復位,使系統從故障狀態下恢復正常運行。

1 看門狗

看門狗是指在系統中通過軟件或硬件方式在一定的時間周期內監控系統的運行狀況,如果在規定的時間內沒有收到來自系統的觸發信號,則將系統強制復位,以保證系統在受到干擾或故障時仍然能夠維持正常的工作狀態[1]。

單片機等無操作系統的嵌入式軟件屬于單任務應用,看門狗一般由寄存器、定時器和看門狗電路等部件構成,其原理如圖1所示。CPU正常工作過程中,寄存器計數值需要在一定的延時周期內被清零,如果沒有清零動作,看門狗電路將產生一個復位信號使系統重新啟動或者通過一個非屏蔽中斷執行故障恢復子程序。軟件設計邏輯如圖2所示,清看門狗計數器的命令必須在主程序內,如果看門狗沒有被清零,復位后軟件將從啟動程序(地址0x0000)開始運行[2]。因此設計看門狗時需要計算主程序的運行時間,通常選擇看門狗延時周期遠遠高于計算出的循環時間,或者在測試到的循環時間基礎上預留較大余量。

圖1 微處理器通過計數清除看門狗定時器

VxWorks、uC/OS、Linux等嵌入式操作系統都能夠支持多任務環境,因此這些平臺下嵌入式軟件的軟件結構也不再由單一的主循環和中斷服務函數構成,而是由若干個不同優先級的任務和中斷服務函數構成。由于操作系統在一定程度上降低了應用系統中軟件設計的工作量,所以這些平臺下嵌入式軟件的看門狗設計一般通過軟件方式實現。設計方式根據實際使用需求的不同可以分為以下兩種。一種是僅需要提供應用軟件的基本運行保護,通過設計一個看門狗定時中斷,在中斷服務程序中執行“喂狗”操作即可。當中斷服務程序異常,即系統已無法提供最基本的服務時執行復位重啟。另一種是需要保護特定的核心任務,通過設置一個更低級別的看門狗任務來守護核心任務,在看門狗任務中執行“喂狗”操作,當核心任務失敗時執行復位重啟[3]。

圖2 應用看門狗的程序設計基本流程

2 設計缺陷介紹

某機載系統的嵌入式軟件運行在VxWorks平臺下,該軟件作為整個系統的控制中樞,使用VxWorks的看門狗定時器設計了軟件看門狗,用于提高系統的運行可靠性。軟件結構如圖3所示??撮T狗定時器設計在看門狗任務中,當軟件運行異常,看門狗任務無法輪詢分配到CPU運行時間時,看門狗定時器計數無法被及時清零,觸發看門狗“狗叫”,VxWorks系統復位,軟件重新啟動運行。

圖3 軟件結構圖

為了驗證看門狗對系統安全保護措施的有效性,在軟件測試過程中通過故障注入方式分別在各工作任務和通信任務中插樁注入包含延時語句的故障代碼,模擬軟件“跑飛”的異常運行情況。注入的故障代碼的觸發條件由與被測軟件通信的上位機下發的通信指令決定,以保證故障的觸發條件和觸發時機可控。測試結果如表1所示。

表1 看門狗測試結果

測試結果表明,該軟件看門狗僅能夠保護比看門狗任務優先級高的工作任務,無法保護低優先級任務。并且在高優先級的通信任務異常時,看門狗不但未成功復位,系統還出現了“假死機”現象。通過對問題現象的隔離分析,發現系統失去響應是因為看門狗定時器中斷執行復位失敗。當通信任務“跑飛”觸發看門狗定時器回調函數執行REBOOT進行復位時,系統需要先保存中斷現場,并將程序指針重新指向程序入口地址。但是由于此時通信任務正在轉發處理通信數據,堆棧數據量較大,導致中斷現場保存時間過長,定時器中斷被其他外部中斷打斷了處理過程而未能及時返回。軟件復位最終未能完成,程序指針未能成功指向程序入口地址,引起了VxWorks操作系統的任務調度紊亂、喪失實時性。

通過以上分析,定位了該軟件導致看門狗保護策略失效的設計缺陷為:①僅能保護比看門狗任務優先級高的任務;②在定時器中斷回調函數中執行了會導致中斷阻塞的REBOOT操作。

3 設計改進方法

VxWorks提供了二進制、互斥和計數等三種信號量用于實現任務間的通信、同步和互斥。由于互斥信號量不可以在中斷服務程序中釋放,計數信號量只是在二進制信號量基礎上增加了對信號量釋放次數的計數,而二進制信號量在經過高度優化后,是所有任務間通信機制中,速度最快、最常用的手段[4-5]。因此,針對上述軟件設計缺陷,利用二進制信號量對看門狗功能進行了設計改進。改進后的軟件結構如圖4所示。

主要改進措施為:①更改了看門狗喂狗操作所在任務和需要保護的工作任務的任務優先級,將看門狗喂狗操作放到低優先級任務中,比所有需要保護的工作任務的優先級低;②新建一個具有最高優先級的看門狗復位執行任務,以確保REBOOT復位動作能夠立即被執行;③刪除看門狗定時器中斷回調函數中的REBOOT操作語句,改為釋放復位信號量的方式通知具有最高優先級的看門狗復位任務執行REBOOT操作。

圖4 改進后的軟件結構圖

對改進后的軟件看門狗按照表1執行了回歸測試,所有測試結果均為通過。測試結果表明,任意工作任務、通信任務等出現異?!芭茱w”情況下,系統均能夠觸發看門狗成功地執行復位重啟。

4 結語

本文介紹了VxWorks平臺下某機載系統嵌入式軟件中存在的一種看門狗設計缺陷,通過對軟件缺陷原因進行分析,提出了利用信號量同步和任務優先級實現的改進方法。通過回歸測試驗證表明,改進后的看門狗設計方法能夠有效地提高嵌入式系統運行的可靠性,具有較強的工程應用價值。

[1]李觀文,衣平,鄧英華.看門狗技術在改善系統可靠性中的應用.機床電氣[J],2005,1:26-27.

[2]王彬,李文新,李得天,劉禮.通過看門狗軟件設計提高抗干擾能力的方法.計算機技術與發展[J],2012,22(10):188-189.

[3]Kovacs G,Kiss B,Eric N.Watchdog–A Practical Approach of Fault Detection[C].Information Control Problems in Manufacturing.[s.l.]: [s.n.],2006:124-126.

[4]王才善,陳光武.基于VxWorks的實時多任務程序設計機制分析.鐵路計算機應用[J],2009,18(5):12-15.

[5]武華,劉軍偉.基于VxWorks的多任務程序設計.計算機技術與發展[J],2011,21(9):163-165.

JIAN Biao,LI Jia
(Research Center of Software Quality Engineering,CEPREI,Guangzhou 510610)

Introduces the design detect of software watchdog,which is implemented based on timer of VxWorks,provides an improvement method, which uses synchronized semaphore and task priority.Test results show that this method improves the reliability effectively of the system.

VxWorks;Watchdog;Timer;Design Detect

1007-1423(2016)16-0047-04DOI:10.3969/j.issn.1007-1423.2016.16.014

蹇彪(1987-),男,湖南常寧人,碩士,研究方向為嵌入式軟件測試

2016-05-04

2016-05-25Design Defect of Software Watchdog and Its Improvement Method Based on VxWorks

李佳(1988-),女,湖南長沙人,本科,研究方向為軟件可靠性

猜你喜歡
看門狗嵌入式軟件中斷
嵌入式軟件測試數據傳輸穩定性檢測方式分析
把他叫醒
基于安全性分析的嵌入式軟件測試
“單片機中斷概述”微課教學設計
一種考慮GPS信號中斷的導航濾波算法
Linux中斷線程化分析及中斷延時測試
全景相機遙控器嵌入式軟件V1.0 相關操作分析
基于VPRS方法的汽車嵌入式軟件品質評估
跟蹤導練(二)(5)
把它叫醒
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合