提高單片機應(yīng)用系統(tǒng)可靠性的軟件技術(shù)
1 可靠性設(shè)計模型與概述
本文引用地址:http://m.ptau.cn/article/171822.htm可靠性設(shè)計模型表達了單片機應(yīng)用系統(tǒng)從激勵到響應(yīng)的唯一性過程。可靠性設(shè)計模型如圖1所示,按照可靠性設(shè)計模型,軟件設(shè)計的主要任務(wù)是保證在過程空間中,應(yīng)用系統(tǒng)程序按照給定順序有序地運行。軟件設(shè)計的可靠性保障是軟件設(shè)計中的本質(zhì)可靠性與可靠性控制。它保障了最少的軟件錯誤以及在軟件出錯后仍保證系統(tǒng)能正常運行或安全運行。
2 本質(zhì)可靠性的軟件設(shè)計
2.1 最大限度地減少錯誤及缺陷
在應(yīng)用軟件中,唯一的有序性(編程指定的)與無限的激勵因素,導(dǎo)致了軟件測試仿真的不完全性,其結(jié)果是軟件的缺陷與軟件并存。軟件的缺陷與錯誤通??煞譃轱@性與隱性兩大類。顯性缺陷與錯誤發(fā)生在程序正常運行中。這些缺陷和錯誤大部分都可通過仿真調(diào)試進行糾正;隱性缺陷與錯誤通常都在系統(tǒng)非正常運行中顯露出來。容錯能力弱的系統(tǒng)存在較多的隱性錯誤。
2.2 要有足夠的時序余度
時序是程序設(shè)計中必須考慮的問題。在應(yīng)用程序設(shè)計應(yīng)考慮的時序有系統(tǒng)復(fù)位時序、狀態(tài)時序、器件工作時序及總線運行時序。
(1)系統(tǒng)復(fù)位時序
①MCU復(fù)位時序要求。MCU有上電復(fù)位(冷啟動復(fù)位,如開機)與信號復(fù)位(熱啟動,如按鍵復(fù)位)。上電復(fù)位有電源建立及時鐘系統(tǒng)起振過程和電路狀態(tài)復(fù)位。信號復(fù)位是在MCU工作狀態(tài)下的復(fù)位,沒有電源建立及時鐘起振過程的時序要求。
②應(yīng)用系統(tǒng)中多個復(fù)位端的時序要求。當一個系統(tǒng)中,除單片機外,還有其他可編程外圍器件,如8155有復(fù)位要求時,系統(tǒng)中便出現(xiàn)了多個復(fù)位控制要求。解決系統(tǒng)中多個器件復(fù)位時序的原則是:保證MCU在系統(tǒng)中最后復(fù)位或MCU對外圍可編程器件的初始化,必須確保在該器件復(fù)位后進行。
③程序設(shè)計中的復(fù)位處理原則。
·MCU上電后延遲片刻,確保外圍器件復(fù)位完畢,再對外圍器件初始化。
·在確保MCU對有復(fù)位控制端口的外圍器件初始化是完全初始化操作時,可將外圍器件的復(fù)位端接成非復(fù)位狀態(tài)。
(2)器件工作時序
器件工作時序是器件應(yīng)用程序設(shè)計的基礎(chǔ)。程序設(shè)計中必須保證時序工作的正確性,而且要有足夠的余度。在考慮器件運行時序時,MCU的操作必須保證時序信號的銜接控制和時序信號的時序余度。
(3)狀態(tài)轉(zhuǎn)換時序
在狀態(tài)轉(zhuǎn)換的程序設(shè)計中,應(yīng)根據(jù)狀態(tài)轉(zhuǎn)換的時序特點,進行精心的時序控制設(shè)計。通常,MCU本身的狀態(tài)轉(zhuǎn)換,如復(fù)位、ID、PD方式的進入或退出,片內(nèi)外圍集成電路單元的關(guān)斷與運行,都有自動監(jiān)視、自動運行管理功能。程序設(shè)計只須按MCU數(shù)據(jù)手冊及指令系統(tǒng)的操作要求進行即可。對于有較長過渡時間的外圍狀態(tài)轉(zhuǎn)換過程,可采取足夠的延時等待或設(shè)置提前轉(zhuǎn)換狀態(tài)的辦法。
(4)總線時序
在單片機應(yīng)用系統(tǒng)中,有并行總線與串行總線。串行總線中又有通信總線和擴展總線。這些總線在規(guī)范化操作時,其時序由數(shù)據(jù)通信協(xié)議保證。在非規(guī)范運行,例如在虛擬總線方式下,其虛擬總線運行的可靠性在于時序的準確模擬。在并行總線中要保證讀、寫操作指令運行下的讀、寫時序;同步串行總線要保證時鐘線控制下的同步運行時序;串行異步時序則要考慮波特率對數(shù)據(jù)傳送的影響。
2.3 足夠的容錯設(shè)計
(1)超時管理的容錯設(shè)計
在系統(tǒng)程序中,除了專門設(shè)置的循環(huán)等待程序外,系統(tǒng)中的許多操作都是時間有界的。由于非正常激勵的入侵,導(dǎo)致任務(wù)操作無法結(jié)束,形成超時現(xiàn)象。解決措施:在程序設(shè)計中采用超時管理辦法,使程序從非正常激勵造成的“死機”中退出。
(2)超界管理的容錯設(shè)計
系統(tǒng)中實際運行的參數(shù)都是有界的。系統(tǒng)運行中要考慮的超界管理參數(shù)有:
①物理參數(shù)。這些參數(shù)主要是系統(tǒng)的輸入?yún)?shù),它包括激勵參數(shù)、采集處理中的運行參數(shù)和處理結(jié)束的結(jié)果參數(shù)。合理設(shè)定這些邊界,將超出邊界的參數(shù)都視為非正常激勵或非正常響應(yīng)進行出錯處理。
②資源參數(shù)。這些參數(shù)主要是系統(tǒng)中的電路、器件、功能單元的資源,如存儲器容量、存儲單元長度、堆棧深度。在程序設(shè)計中,對資源參數(shù)不允許超界使用。
③應(yīng)用參數(shù)。這些應(yīng)用參數(shù)常表現(xiàn)為一些器件、功能單元的應(yīng)用條件。如E2PROM的擦寫次數(shù)與數(shù)據(jù)存儲時間等應(yīng)用參數(shù)界限。
④過程參數(shù)。指系統(tǒng)運行中的有序變化的參數(shù)。
(3)有序化的容錯設(shè)計
有序化是程序正常運行的重要標志,是程序設(shè)計人員賦予的。有序化的容錯設(shè)計是要保證在眾多的非正常激勵和出現(xiàn)非正常響應(yīng)時,要最大限度地保證原來程序設(shè)計時給定的有序的正常程序操作。
3 可靠性控制的軟件設(shè)計
3.1 噪聲失敏控制技術(shù)
(1)噪聲失敏與噪聲失敏率
噪聲失敏是利用CPU停止運行或關(guān)閉MCU外圍電路,使其對外界噪聲干擾失去響應(yīng)能力的可靠性控制技術(shù)。噪聲失敏率NTOUT是在實際系統(tǒng)中,采取噪聲控制后,系統(tǒng)或電路對噪聲失敏的時間概率,
NTOUT可由下式估算:
TLOP為系統(tǒng)運行總時間,通常為系統(tǒng)開機時間;TOP為MCU中CPU的運行時間或電路系統(tǒng)的工作狀態(tài)時間;
TLOP-TOP為單片機CPU停止運行或外圍電路被關(guān)斷的時間。
(2)噪聲失敏控制的軟件技術(shù)
①按噪聲失敏設(shè)計最有效的程序結(jié)構(gòu)。盡量減少應(yīng)用程序中的循環(huán)等待;盡量集中安排任務(wù)和任務(wù)中的有效運行時間;及時關(guān)斷不在有效運行的電路單元。
②MCU的休眠與掉電。通常,與CPU停止運行的低功耗方式主要有關(guān)斷CPU時鐘的休閑ID方式和關(guān)斷系統(tǒng)時鐘的掉電PD方式。
③外圍電路關(guān)斷。外圍電路可通過電源供電的關(guān)斷控制。具有關(guān)斷功能的外圍電路,可采取引腳控制關(guān)斷或編程控制的辦法,使之進入失敏狀態(tài)。
3.2 程序失控的回復(fù)技術(shù)
(1)程序失控后的快速凍結(jié)與回復(fù)
①WDT(Watch Dog Timer)的失控回復(fù)。如圖2所示。在程序失控后,程序跳逸出正常路徑,無法對WDT清零,致使WDT溢出。溢出端輸出信號使MCU復(fù)位。
②指令的失控恢復(fù)。如89C51中采用LJMP0000H的軟件陷阱時,將輸入陷阱的失控程序強行跳轉(zhuǎn)到復(fù)位入口0000H處。
(2)失控回復(fù)后的處理
①回復(fù)狀態(tài)檢測?;貜?fù)是指程序失控后又轉(zhuǎn)回到正常路徑的起點,即復(fù)位入口地址。程序失控回復(fù)后要進行回復(fù)狀態(tài)檢測,以判斷是上電復(fù)位還是WDT復(fù)位或指令拉回。通常采用的檢測方法是利用上電標志。有些單片機內(nèi)沒有上電標志,可利用上電復(fù)位時SRAM的隨機態(tài)與信號復(fù)位或程序拉回時,SRAM中數(shù)據(jù)不變的特點來判別。系統(tǒng)上電后,在SRAM區(qū)寫入特殊上電標志數(shù)據(jù)。待回復(fù)后先檢查上電標志是否存在,若存在即為WDT復(fù)位或指令拉回。
②回復(fù)后的初始化處理。圖3是上電復(fù)位與程序失控回復(fù)初始化處理框圖。0000H是MCU的復(fù)位入口,程序啟動后,首先判斷是上電復(fù)位(冷啟動),還是程序失控回復(fù)(熱啟動)。上電復(fù)位是開機操作,要建立上電標志,并進行系統(tǒng)的完全初始化。程序失控回復(fù)應(yīng)進行相關(guān)資源的檢查與修復(fù),以防止運行出錯。另外根據(jù)系統(tǒng)的特點,需要保留一些過程數(shù)據(jù)。
不得進行完全初始化時,只進行部分初始化。
3.3 安保、自檢與修復(fù)技術(shù)
在高可靠性等級的單片機應(yīng)用系統(tǒng)中,軟件設(shè)計中應(yīng)有安保、自檢與自修復(fù)軟件。
(1)安保程序設(shè)計。安保設(shè)計要求有非正常響應(yīng)時,對象的完全性保障和系統(tǒng)的可持續(xù)運行。為了能在系統(tǒng)出現(xiàn)非正常響應(yīng)時,立即獲得安全保護,應(yīng)設(shè)置關(guān)鍵部位的失控檢測,如I/O口輸出狀態(tài)實時檢測;機器人軌跡檢測等。檢測到非正常響應(yīng)后,應(yīng)快速進入安保狀態(tài)設(shè)置,首先使系統(tǒng)進入安全態(tài),然后保護系統(tǒng)的關(guān)鍵資源不受侵害,以保證系統(tǒng)具有后續(xù)運行的操作的能力。
(2)實際系統(tǒng)中的自檢。在實際的單片機應(yīng)用軟件中,應(yīng)充分利用其智能化特點,設(shè)置各種自檢程序以提高其可靠性與安全性。通常,應(yīng)用系統(tǒng)中的自檢程序有自診斷,失控后的回復(fù)檢查和程序關(guān)鍵處的查驗。程序自診斷通常是開機后對系統(tǒng)的例行檢查;失控回復(fù)后的檢查重點是數(shù)據(jù)區(qū),I/O狀態(tài),SFR狀態(tài),外圍電路的狀態(tài)等。程序關(guān)鍵處的查驗有界限檢查、冗余性檢查與邏輯性檢查。
3.4 系統(tǒng)的結(jié)構(gòu)冗余
由于系統(tǒng)結(jié)構(gòu)的簡化,電路的集成趨勢,器件成本的下降,邏輯控制能力的提高,在關(guān)鍵部位可采取冗余的備份結(jié)構(gòu)來提高系統(tǒng)的可靠性。圖4為實際應(yīng)用中某監(jiān)控系統(tǒng)的具有獨立仲裁器的雙機冗余系統(tǒng)。仲裁器的輸入邏輯接收兩個系統(tǒng)的輸出數(shù)據(jù)與故障信息;輸出邏輯接收比較器A、B的比較結(jié)果和故障處理信號發(fā)生器的切換信號。仲裁器的故障判斷原理如下:對兩個同步工作系統(tǒng)輸出的數(shù)據(jù)進行比較,比較結(jié)果一致表明兩個系統(tǒng)均無故障;比較結(jié)果不同表明,必有一個系統(tǒng)出現(xiàn)故障,然后強令兩個系統(tǒng)進入自檢程序,用預(yù)先設(shè)定的參數(shù)進行測試,并與預(yù)定結(jié)果比較,相符者為正常開機,不符者為故障機。若為暫時性故障,重新復(fù)位即可排除,若為永久性故障則輸出故障信號并進入單機運行。
4 結(jié)束語
可靠性是一個綜合性、經(jīng)驗性較強的問題,是單片機控制器能否成功應(yīng)用的關(guān)鍵問題。上述提高單片機應(yīng)用系統(tǒng)可靠性的軟件技術(shù)與方法應(yīng)用于多項應(yīng)用工程,使多項工程在高可靠性硬件基礎(chǔ)上,保障了最少的軟件錯誤以及在軟件出錯后仍保證系統(tǒng)正常運行或安全運行。
參考文獻:
[1]楊華舒,復(fù)濤.單片計算機系統(tǒng)抗干擾的軟件途徑[J].電子技術(shù)應(yīng)用,2001,(3).
[2]何立民.單片機高級教程[M].北京:北京航空航天出版社,2001.
評論