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