目前,大量的嵌入式系統(tǒng)均采用了單片機,并且這樣的應用正在更進一步擴展;但是多年以來人們一直為單片機系統(tǒng)的可靠性問題所困惑。在一些要求高可靠性的控制系統(tǒng)中,這往往成為限制其應用的主要原因。
1 單片機系統(tǒng)的失效分析
一個單片機系統(tǒng)的可靠性是其自身軟硬件與其所處工作環(huán)境綜合作用的結果,因此系統(tǒng)的可靠性也應從這兩個方面去分析與設計。對于系統(tǒng)自身而言,能不能在保證系統(tǒng)各項功能實現(xiàn)的同時,對系統(tǒng)自身運行過程中出現(xiàn)的各種干擾信號及直接來自于系統(tǒng)外部的干擾信號進行有效的抑制,是決定系統(tǒng)可靠性的關鍵。有缺陷的系統(tǒng)往往只從邏輯上去保證系統(tǒng)功能的實現(xiàn),而對于系統(tǒng)運行過程中可能出現(xiàn)的潛在的問題考慮欠缺,采取的措施不足,在干擾信號真正襲來的時候,系統(tǒng)就可能會陷入困境。任何系統(tǒng)的可靠性都是相對的,在一種環(huán)境下能夠很好工作的系統(tǒng)在另一種環(huán)境下卻有可能是很不穩(wěn)定的。這就充分說明環(huán)境對系統(tǒng)可靠運行的重要性。在針對系統(tǒng)運行環(huán)境去設計系統(tǒng)的同時,應盡量采取措施改善系統(tǒng)運行的環(huán)境,降低環(huán)境干擾,但這樣的措施往往比較有限。
2 提高可靠性的措施
提高單片機系統(tǒng)可靠性的方法與措施很多。一般地,應根據(jù)系統(tǒng)所面臨的具體的可靠性問題,針對引起或影響系統(tǒng)不可靠的因素采取不同的處理措施。這些措施一般從這樣兩個目的出發(fā):第一,盡量減少引起系統(tǒng)不可靠或影響系統(tǒng)可靠的外界因素;第二,盡量提高系統(tǒng)自身抗干擾能力及降低自身運行的不穩(wěn)定性。例如,為了抑制電源的噪聲和環(huán)境干擾信號而采用的濾波技術、隔離技術、屏蔽技術等都是出于第一個目的;另外,針對系統(tǒng)自身而采用的看門狗電路、軟件抗干擾技術、備份技術等均是出于第二個目的而采取的措施。其中第一類的措施較常使用,其使用簡單而且效果也較好,但其對系統(tǒng)可靠性的提高是有限的,許多情況下不能滿足系統(tǒng)的要求。第二類措施的使用可以更進一步提高系統(tǒng)的可靠性,往往在高可靠性的系統(tǒng)設計中被廣泛使用。下面就第二類技術使用中的一些相關問題作進一步的分析。
2.1 用監(jiān)視定時器技術提高系統(tǒng)的可靠性
監(jiān)視定時器(Watchdog)技術現(xiàn)在使用得非常廣泛,技術已較為成熟,這一技術的支持手段也很多。目前,各處理器的生產廠家?guī)缀醵荚谏a內置有看門狗定時器的單片機產品,市場上還有許多獨立的看門狗定時器芯片可供選擇。要實現(xiàn)這樣的電路已經較為容易,因此這里對于如何實現(xiàn)這一技術的一般細節(jié)不作詳細的論述,僅就采用此技術所導致的可重人性問題進行分析。采用監(jiān)視定時器技術后,一旦程序跑飛,系統(tǒng)立即會被監(jiān)視定時器復位掉,從頭重新啟動系統(tǒng),從而退出不正常的運行狀態(tài),但是這樣使用時必須注意系統(tǒng)的可重人性。所謂系統(tǒng)的可重人性可以這樣來定義:當一個微處理器系統(tǒng)在重新復位啟動以后,系統(tǒng)對外的執(zhí)行操作不因重新啟動而改變,或者說這種改變是能夠容忍的,從而保證整個系統(tǒng)對外操作的連續(xù)性和順序性,也就是系統(tǒng)最終的安全性和可靠性。對于一個系統(tǒng),如果它對外的控制操作只與系統(tǒng)當前的輸入狀態(tài)有關,那么這個系統(tǒng)就幾乎具有完全的重入性能;相反,如一個系統(tǒng)對外的輸出操作不僅與系統(tǒng)當前的輸入相關,而且與系統(tǒng)的歷史狀態(tài)有關,那么如果系統(tǒng)重入時系統(tǒng)的歷史狀態(tài)沒有保留或者歷史狀態(tài)被破壞,那么此時系統(tǒng)對外的操作就可能完全是錯誤的,這樣的系統(tǒng)雖然在看門狗定時器的作用下退出了不正常的運行狀態(tài),但重入的狀態(tài)也不會正常,那么這樣的系統(tǒng)也只能是病態(tài)的系統(tǒng),不能使用。因此,對于采用了看門狗電路來提高可靠性的系統(tǒng),必須嚴格保證系統(tǒng)的可重入性。
對于與歷史狀態(tài)相關的系統(tǒng),為保證其重入性能,可以把其歷史狀態(tài)保存在系統(tǒng)的RAM中,即在單片機系統(tǒng)的內存或其擴展的外部存儲器中,開辟出專用于保存歷史狀態(tài)的緩沖區(qū)。在確保系統(tǒng)不掉電的情況下,這些歷史數(shù)據(jù)在系統(tǒng)重入時可以被重新使用。如果不能保證系統(tǒng)的電源穩(wěn)定,還必須考慮采用備用電池供電,以保證RAM數(shù)據(jù)的安全穩(wěn)定;對于時間不是太敏感的系統(tǒng),還可以采用E2PROM或Flash ROM來保存歷史數(shù)據(jù)。
2.2軟件抗干擾技術
一個系統(tǒng)可能由于存在著各種干擾及不穩(wěn)定因素而出現(xiàn)運行故障。為解決這一問題,可以從程序的設計方面采取一些措施。傳統(tǒng)的為抑制系統(tǒng)的干擾信號而經常采用的軟件濾波技術、軟件冗余設計就是這一類的典型應用。根據(jù)設計經驗,通常還可以采用軟件鎖設計、程序陷阱設計。這一類方法主要是針對程序跑飛的情況而采用的。當系統(tǒng)在干擾信號的作用下發(fā)生程序跑飛時,程序指針有可能指向兩個區(qū)域:一種可能正好轉到程序區(qū)的其他地址進行執(zhí)行,一種可能轉移到程序空間的盲區(qū)進行執(zhí)行。所謂盲區(qū),就是說那里并沒有存放有效的程序指令。對于第一種情況,可以采取軟件鎖加以抑制。例如為保證對外操作的安全,在軟件鎖設計中,對于每一個相對獨立的程序塊在其執(zhí)行以前或執(zhí)行中對一個預先設定好的密碼進行校驗,只有當這一密碼相符時執(zhí)行才真正有效,也只有程序是通過正常的轉移途徑轉移過來時,才會由上一級的程序設定正確的密碼;否則,會根據(jù)校驗錯而使程序強制發(fā)生轉移,錯誤狀態(tài)得到處理,并恢復程序的正常運行狀態(tài)。可以看下面的一個例子:假設有順序執(zhí)行的三個程序塊,每一個程序塊執(zhí)行時都對其設定的密碼進行校驗。
當程序順序執(zhí)行時,每一個程序塊都能夠得到有效正確的執(zhí)行。現(xiàn)在假設程序由于干擾而發(fā)生跑飛,由SUB—PRO1的塊處理跳到了程序SUB-PR03處開始執(zhí)行,那么在執(zhí)行中密碼校驗會出錯,程序將轉移到錯誤處理程序進行處理,避免進行錯誤的操作。
設計程序陷阱的目的,主要是為了防止程序跑飛到程序盲區(qū)進行執(zhí)行。一般情況下,對于程序代碼空間以外的ROM空間的處理是采用空置的方法。固化程序時,這些空置空間被全寫為1或全寫為O,這樣程序跳入這一區(qū)域將不可控。為了捕獲跳入此區(qū)的程序,可以采用程序陷阱來予以實現(xiàn)。下面通過例子來說明:假設某系統(tǒng)程序空間為32KB,程序編譯后共生成18 KB的代碼,那么,還有14 KB的程序空間未被使用,可以在該區(qū)域放置下面的陷阱程序:
用上面程序段重復覆蓋剩余的程序空間陷阱程序里的每一段含有的NOP指令的多少對于捕獲的成功率及捕獲的時間有影響。NOP指令放置的越多捕獲的成功率就越高,但花費的時間就越長,程序失控的時間也越長;否則,情況則相反。因為只有程序跳轉到NOP指令或LJMP指令的首個字節(jié)時,才能成功捕獲;當程序跳到LJMP指令的后兩個字節(jié)時,可能會出現(xiàn)不可預知的執(zhí)行結果。被捕獲的程序如果跳到程序的起始處執(zhí)行時,還必須考慮程序的可重人性。
2.3采用備份系統(tǒng)提高可靠性
備份系統(tǒng)在許多重要控制系統(tǒng)中已被廣泛使用,但多在工控機中或較大型的系統(tǒng)中采用。備份系統(tǒng)可根據(jù)具體的情況分為在線備份系統(tǒng)和后備備份系統(tǒng)。對于在線備份系統(tǒng),系統(tǒng)中的兩個CPU均處于工作狀態(tài),有可能兩個CPU處在對等的位置,也可能一個處在主CPU的位置,而另一個處在從CPU的位置。在對等的情況下,兩個CPU共同決定系統(tǒng)對外的操作,任何一個CPU出錯都將
引起對外操作的禁止。對于一主一從的情況,往往是主CPU負責系統(tǒng)控制邏輯的實現(xiàn),而從CPU負責對主CPU的工作狀態(tài)進行監(jiān)控。當監(jiān)控到主CPU工作異常時,從CPU通過強行復位主CPU等操作使主CPU恢復正常,同時,為確保從CPU工作正常,從CPU的工作狀態(tài)也被主CPU監(jiān)控;當從CPU的工作狀態(tài)不正常時,主CPU也可采取措施使從CPU恢復正常工作,即實現(xiàn)互相監(jiān)控的目的。在具體的設計中,主從CPU進行信息交換的途徑非常靈活、多樣。例如,采用公用的存儲器來實現(xiàn)監(jiān)控信息的交換(如把公用信息存入雙口RAM),采用握手信號的方法實現(xiàn)監(jiān)控信息的交換等。
3 提高系統(tǒng)可靠性的綜合設計方法
在一個具體的系統(tǒng)設計中,為提高系統(tǒng)的穩(wěn)定性和可靠性,往往要綜合采用多種措施來達到滿意的效果,這是全面提高系統(tǒng)可靠性的必由之路。系統(tǒng)不同,其具體的控制對象就可能不同,運行環(huán)境也會千差萬別,因而其面臨的主要干擾問題就不同,采取的措施也就不同;但僅采取某項措施就希望全面提高系統(tǒng)的可靠性常常是不現(xiàn)實的,而要針對主要問題綜合采取多項措施聯(lián)合提高可靠性。
4 設計實例
下面給出一個設計實例,以進一步說明提高系統(tǒng)可靠性設計的一些常用方法。
在某衛(wèi)星通信系統(tǒng)中,為了降低系統(tǒng)的相噪,要求其前置低噪聲放大器(LNA)的工作溫度保持恒定(40℃);而該放大器在野外工作的環(huán)境溫度范圍為一40~+60℃之間,因此必須把該放大器放入特制的恒溫箱中。該恒溫箱應具有既能制熱又能制冷的功能。制熱采用電阻絲加熱器,制冷采用半導體制冷片來實現(xiàn)。為防止恒溫箱因控制器失靈而造成溫度失控甚至損壞低噪聲放大器,破壞整個系統(tǒng)的正常工作,恒溫箱的設計主要采用了主從雙CPU系統(tǒng)來提高系統(tǒng)的可靠性。除此以外,還采用了如電源監(jiān)控技術、看門狗技術、軟件陷阱技術、光電隔離技術等措施綜合提高系統(tǒng)的可靠性。該系統(tǒng)的結構框圖如圖1所示。
主CPU負責加熱器、制冷片及箱內箱外溫度的檢測,擔負主要的控制任務。主CPU選AT89S52單片機,內含看門狗定時器,在芯片外加MAX707作為電源監(jiān)控電路;除可以向主CPU提供可靠的復位信號以外,還可以檢測掉電中斷申請信號,當?shù)綦姲l(fā)生時及時保存現(xiàn)場數(shù)據(jù)。加熱棒使用交流220V供電,制冷片采用15V直流穩(wěn)壓電源供電。為防止高電壓強電流對弱電部分的干擾,主CPU
產生的控制信號都經過光電隔離送向驅動電路,以提高系統(tǒng)的可靠性。
從CPU選AT89C2051,主要負責對主CPU工作情況的監(jiān)控及電源供電電壓的監(jiān)視。當?shù)綦姮F(xiàn)象發(fā)生時,AT89C2051內的電壓比較器會檢測到這種變化,并由后備電池供電,通過485口向監(jiān)控臺報告。
主從CPU之間的監(jiān)控是相互的。主從CPU通過它們之間的I/O口線握手,彼此監(jiān)視對方的工作狀態(tài),并采取相應的處置措施,保證系統(tǒng)對外操作的安全。通過上述措施的實施,系統(tǒng)的可靠性非常出色,自投入運行以來一直穩(wěn)定可靠,無不明原因的死機或失控現(xiàn)象發(fā)生,充分說明了系統(tǒng)設計的成功。而根據(jù)以往的經驗,如不采用上述的綜合設計方法,這樣的系統(tǒng)通常在連續(xù)運行1~2周后就很可能產生問題。
結 語
本文詳細分析了單片機系統(tǒng)失效的原因,討論了提高系統(tǒng)可靠性的措施,并提出了提高系統(tǒng)可靠性的綜合設計方法。在低噪聲放大器恒溫控制器中的成功應用,表明這種設計方法是行之有效的,系統(tǒng)的可靠性得到了充分的保障。
責任編輯;zl
評論
查看更多