国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式系統(tǒng)的可靠性措施

2016-09-28 10:21洪妙婷
甘肅科技 2016年15期
關(guān)鍵詞:看門狗監(jiān)控器線程

洪妙婷

(廈門ABB低壓電器設(shè)備有限公司,福建 廈門 361006)

嵌入式系統(tǒng)的可靠性措施

洪妙婷

(廈門ABB低壓電器設(shè)備有限公司,福建廈門361006)

工業(yè)控制中的嵌入式系統(tǒng)可靠性是至關(guān)重要。文章結(jié)合實際,闡述了在嵌入式系統(tǒng)的軟件設(shè)計所采取的一些措施。

嵌入式系統(tǒng);可靠性;軟件

1 概述

隨著嵌入式系統(tǒng)在工業(yè)控制領(lǐng)域廣泛的應(yīng)用,應(yīng)用的復(fù)雜度不斷提高,使人們對它的穩(wěn)定性和可靠性的要求越來越高。特別是在工業(yè)應(yīng)用下,這樣的要求更是嚴苛。如果系統(tǒng)在某段時間無法完成預(yù)期服務(wù),可能就會導(dǎo)致用戶巨大的損失。本文主要探討在嵌入式系統(tǒng)開發(fā)過程所采取的一系列提供軟件可靠性的措施,在實際應(yīng)用中驗證這些措施是行之有效的。

2 提高嵌入式系統(tǒng)可靠性的軟件措施

2.1嵌入式系統(tǒng)的任務(wù)調(diào)度監(jiān)控

實時嵌入式系統(tǒng)中任務(wù)之間是優(yōu)先級搶占式調(diào)度,相同優(yōu)先級任務(wù)之間是時間片輪轉(zhuǎn)進行調(diào)度。這樣可以保證重要的任務(wù)最先運行。當任務(wù)發(fā)生異常,如除零、數(shù)據(jù)溢出或者訪問一個非法內(nèi)存地址,CPU就會觸發(fā)異常,系統(tǒng)會默認將任務(wù)掛起。異常之后CPU忽略掛起任務(wù)的調(diào)度,系統(tǒng)不會自動把有任務(wù)掛起的消息自動傳遞給用戶,所以在任務(wù)的調(diào)度時系統(tǒng)會忽略處于掛起狀態(tài)的任務(wù),這樣某些重要的任務(wù)由于掛起而被系統(tǒng)忽略,系統(tǒng)變得不穩(wěn)定,用戶任務(wù)得不到執(zhí)行,用戶需求得不到滿足等等,甚至造成系統(tǒng)死機。

為了避免任務(wù)調(diào)度異常而引發(fā)的系統(tǒng)問題,就所有的任務(wù)調(diào)度進行調(diào)度監(jiān)控,并且某個任務(wù)出現(xiàn)錯誤后,進行及時修復(fù)。因此在多個實時任務(wù)系統(tǒng)中應(yīng)用了軟件喂狗結(jié)合硬件喂狗方法。在主程序中首先創(chuàng)建一個監(jiān)控器任務(wù)線程,它的優(yōu)先級高于其他線程。監(jiān)控線程在其他被監(jiān)控的線程正常工作的情況下,一定時間內(nèi)對看門狗進行喂狗操作,喂狗操作通過調(diào)用軟件喂狗完成。如果某個線程出現(xiàn)故障,監(jiān)控線程監(jiān)控并記錄該線程的看門狗計數(shù)器 和看門狗超時次數(shù)。當該線程累加看門狗超時大于預(yù)定的告警次數(shù),就自動重啟的該線程。如果監(jiān)控線程自身出現(xiàn)故障,不能及時執(zhí)行硬件喂狗操作,看門狗也自動復(fù)位重啟。

我們設(shè)計中看門狗通過檢查各應(yīng)用任務(wù)是否在規(guī)定的時間內(nèi)對其 “軟件喂狗”來確定各任務(wù)的運行狀態(tài),硬件看門狗通過檢查軟件看門狗是否在規(guī)定的時間內(nèi)對其 “喂狗”來實現(xiàn)對監(jiān)視器任務(wù)的監(jiān)視.我們的設(shè)計使用UCLinux為操作系統(tǒng),系統(tǒng)為每個任務(wù)設(shè)定優(yōu)先級和分配看門狗計時變量.系統(tǒng)具體的執(zhí)行操作如下:

1)監(jiān)控器任務(wù)在系統(tǒng)中有最高優(yōu)先級,監(jiān)控器的執(zhí)行周期是1ms,其執(zhí)行周期也是所有任務(wù)里最短的。監(jiān)控器在執(zhí)行周期會對每個被監(jiān)控任務(wù)的軟件看門狗計數(shù)累加。

系統(tǒng)中每個被監(jiān)控的任務(wù)有一個軟件看門狗計數(shù)器,周期性地對每個被監(jiān)控任務(wù)“軟件喂狗”,就是對軟件看門狗計數(shù)清零處理。

監(jiān)控器被監(jiān)控任務(wù)的軟件看門狗計數(shù)累加值,比較歷史記錄的最大看門狗計數(shù)值,就可以記錄每個被監(jiān)控任務(wù)最大間隔執(zhí)行時間。

2)當某個被監(jiān)控任務(wù)掛起或中斷運行,軟件看門狗的計數(shù)就會不斷累加,且其計數(shù)器值超過預(yù)定的告警時間,該任務(wù)的看門狗喂狗超時告警次數(shù)進行累加記錄。若該任務(wù)喂狗超時次數(shù)累計大于預(yù)設(shè)允許值,系統(tǒng)就會自動重啟該任務(wù)。如果在設(shè)定的次數(shù)內(nèi)不能夠有效啟動該任務(wù),軟件看門狗則延時喂內(nèi)置硬件看門狗,硬件看門狗計數(shù)器溢出,自動重啟系統(tǒng)。各個任務(wù)的最大間隔執(zhí)行時間和喂狗超時告警次數(shù)為被存儲在永久存儲空間,保證數(shù)據(jù)不會因為系統(tǒng)故障重啟而丟失,這些數(shù)據(jù)可以用于日后的系統(tǒng)故障分析和性能評估。

3)監(jiān)控器任務(wù)在每個循環(huán)周期性會進行硬件喂狗,累計硬件看門狗計數(shù),并統(tǒng)計自身任務(wù)調(diào)度間隔時間。若監(jiān)控器任務(wù)掛起,則硬件看門狗會因為超時而引發(fā)自動重啟系統(tǒng),以確保系統(tǒng)長時間穩(wěn)定運行。如圖1所示。

圖1 監(jiān)控器周期循環(huán)

2.2系統(tǒng)容錯處理措施

在工業(yè)控制中,由于系統(tǒng)的運行環(huán)境是比較惡劣,常存在干擾源,如環(huán)境溫度、電場、磁場等。干擾的信號可能導(dǎo)致數(shù)據(jù)采集失效、控制失靈或系統(tǒng)運行失常。那么在軟件設(shè)計為消除或降低干擾影響采取一些措施。

2.2.1系統(tǒng)‘死鎖’的對策

嵌入式系統(tǒng)運行過程中,由于干擾信號的破壞某個接口的狀態(tài),系統(tǒng)錯誤地進入外設(shè)服務(wù),如等待接受數(shù)據(jù),但實際沒有數(shù)據(jù)到此接口,系統(tǒng)的資源因此就被一直占用而不能釋放,其他的任務(wù)不能執(zhí)行,系統(tǒng)出現(xiàn)‘死鎖’現(xiàn)象。為了杜絕系統(tǒng)‘死鎖’問題 ,在代碼編碼過程中,針對每個接口對外設(shè)的響應(yīng)時間,分配最大允許響應(yīng)時間。在每個接口服務(wù)加上超時判斷。當干擾信號改變接口狀態(tài)系統(tǒng)誤操作,由于外設(shè)的數(shù)據(jù)一直無效,等待一段時間該外設(shè)服務(wù)任務(wù)超時退出,系統(tǒng)的正常執(zhí)行周期不會被影響,從而解決系統(tǒng)‘死鎖’的問題。

2.2.2軟件濾波的方法

現(xiàn)代工業(yè)控制系統(tǒng)的硬件設(shè)計越來越復(fù)雜,相互干擾越來越強烈,模擬濾波電路已經(jīng)不能滿足要求。軟件濾波是利用一定的算法,運用CPU運算和控制功能,可以實現(xiàn)高難度的復(fù)雜信號處理。軟件濾波具有抗干擾性強,改變靈活,工作穩(wěn)定等特性。實時系統(tǒng)中對于信號輸入,可以通過多次重復(fù)采樣,利用這些方法進行數(shù)字濾波處理,有算術(shù)平均濾波法、程序判斷濾波法、加權(quán)遞推平均濾波法、中位值濾波法等。對于信號輸出,可以采用重復(fù)輸出。輸出的重復(fù)周期要盡可能短,這樣干擾信號影響執(zhí)行部件之前,正確信號又出現(xiàn)。

2.2.3數(shù)據(jù)的備份

工業(yè)控制系統(tǒng)一些關(guān)鍵數(shù)據(jù)需要定期進行備份,并且至少有兩個以上的備份副本。這樣的數(shù)據(jù)備份時,需要將數(shù)據(jù)以及數(shù)據(jù)的校驗和一起保存起來。讀取數(shù)據(jù)也需要對數(shù)據(jù)和校驗和一起比較從而保證數(shù)據(jù)的正確性。在操作這些數(shù)據(jù)時,可以把主、副本數(shù)據(jù)進行比較,若發(fā)現(xiàn)數(shù)據(jù)變化,要分析原因并采取預(yù)定的方法處理。

2.3故障診斷措施

嵌入式系統(tǒng)在運行過程中可能出現(xiàn)異常導(dǎo)致系統(tǒng)重啟或死機,異常又不容易重現(xiàn),這樣造成故障原因難于定位和解決。

我們的設(shè)計中使用ARM芯片和UCLinux操作系統(tǒng),ARM提供了一些異常向量并且Linux的內(nèi)核系統(tǒng)可以對這些向量進行異常處理。當異常發(fā)生時,ARM根據(jù)當前的工作模式跳轉(zhuǎn)到不同的異常地址并執(zhí)行異常例程。系統(tǒng)異常發(fā)生后利用Backtrace可以在程序異常退出時尋找錯誤原因。是其原理是回溯堆棧,列出函數(shù)的調(diào)用關(guān)系。也就是在異常例程里對CPU寄存器現(xiàn)場的分析,找到異常發(fā)生時的函數(shù)地址和堆棧的幀地址,再分析上層函數(shù)的堆棧,再找再上層的幀地址……一直找到最頂層為止。幀地址指的是一塊在堆棧上存放局部變量,上層返回地址,及寄存器值的空間。因此我們利用Linux提供的庫函數(shù)Backtrace并加以改進,在異常處理例程里將系統(tǒng)異常時被調(diào)用的函數(shù)地址列表和CPU寄存器保存到永久存儲空間作為故障日志。我們的設(shè)計的實現(xiàn)是將程序編譯成ELF二進制格式的,只有使用這樣的格式才能獲取系統(tǒng)所有的函數(shù)名稱和偏移地址的列表。在系統(tǒng)出現(xiàn)異常的時候,系統(tǒng)在出錯時使用的CPU寄存器和被調(diào)用函數(shù)地址列表被記錄到跟蹤日志。由于系統(tǒng)上電加載的起始地址是動態(tài)變化的,跟蹤日志也記錄了系統(tǒng)加載運行時主程序入口地址。根據(jù)跟蹤日志記錄的出錯函數(shù)地址與主程序入口地址的差值就是函數(shù)的偏移地址,對照系統(tǒng)函數(shù)名稱和偏移地址列表,就可以定位出錯的函數(shù)名稱了。

圖2 系統(tǒng)異常函數(shù)關(guān)系

如圖2所示,系統(tǒng)異常發(fā)生是的函數(shù)及其的函數(shù)調(diào)用關(guān)系就可以清晰的呈現(xiàn)出,系統(tǒng)異常出現(xiàn)在touch_wdt(),其函數(shù)調(diào)用鏈為 timer_thread()Timer_FeedWD()Timer_touch_wdt()touch_wdt().這樣設(shè)計人員可以更容易地分析出錯原因和更快地修正問題。

4 結(jié)束語

本文概述了在嵌入式系統(tǒng)開發(fā)過程中為了提高系統(tǒng)的可靠性采取的一些軟件技術(shù)措施。這些措施是在軟件設(shè)計上一些經(jīng)驗總結(jié),而提高系統(tǒng)的可靠性是一項系統(tǒng)工程,還需要針對具體的產(chǎn)品需求,把系統(tǒng)的硬件和軟件有效的結(jié)合起來,才能設(shè)計出高質(zhì)量、高可靠性的系統(tǒng)。

[1]唐明.WatchDog在嵌入式應(yīng)用中的問題[J].單片機與嵌入式系統(tǒng)應(yīng)用,2007(11):70-71.

[2] Jean J.Labrosse.嵌入式實時操作系統(tǒng)uC/OS-Ⅲ[M]宮輝等譯.北京:航空航天大學(xué)出版社,2012.

[3] 凌忠興.嵌入式系統(tǒng)中數(shù)字濾波的算法及軟件流程 [J].電測與儀表,2007.1:58-61,17.

[4] 符意德,陸陽.嵌入式系統(tǒng)原理及接口技術(shù)[M].北京:清華大學(xué)出版社,2007.

[5] 白國政.嵌入式軟件異常處理機制的研究[J].微機發(fā)展,2005.(10):88-89,107.

TP311

猜你喜歡
看門狗監(jiān)控器線程
基于C#線程實驗探究
一種嵌入式計算機系統(tǒng)的看門狗設(shè)計
關(guān)于MK10 型下滑儀近場監(jiān)控參數(shù)超標的故障檢修
基于國產(chǎn)化環(huán)境的線程池模型研究與實現(xiàn)
把他叫醒
淺談linux多線程協(xié)作
一種自動監(jiān)控系統(tǒng)的輸液監(jiān)控器的設(shè)計
把它叫醒
把它叫醒
國家標準委批準發(fā)布強制性國家標準《防火門監(jiān)控器》
庆云县| 桐庐县| 藁城市| 皮山县| 高陵县| 上高县| 久治县| 临泉县| 高青县| 惠来县| 山阴县| 上蔡县| 南宁市| 田林县| 资阳市| 江陵县| 宜城市| 诸城市| 大安市| 榆林市| 龙里县| 日照市| 通辽市| 若尔盖县| 驻马店市| 宣城市| 青铜峡市| 廉江市| 榆社县| 兴业县| 库车县| 将乐县| 镇安县| 嘉禾县| 甘南县| 河源市| 浠水县| 都江堰市| 增城市| 上犹县| 古交市|