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