Reset與嵌入式系統應用的穩定性
嵌入式系統的應用領(lǐng)域越來(lái)越廣泛,干擾或者惡劣環(huán)境常影響嵌入式系統運行的穩定性和可靠性。Reset是維護系統穩定的一個(gè)關(guān)鍵因素,正確地設計復位電路,巧妙地應用復位操作,能使整個(gè)系統更可靠、穩定地運行。本文結合實(shí)際項目經(jīng)驗分析Reset的相關(guān)應用與設計,展示Reset對系統穩定性的重要性。
引言
在嵌入式系統電子設備的運行中,當出現程序跑飛的情況或程序跳轉時(shí),可用手動(dòng)或自動(dòng)的方法發(fā)信號給硬件特定接口,使軟件的運行恢復到特定的程序段運行,這一操作就是復位(Reset);這一過(guò)程中,手動(dòng)或自動(dòng)發(fā)給硬件特定接口的信號,就是復位信號。為了克服系統由于內因(時(shí)鐘振蕩源的穩定性)和外因(射頻干擾)所引起的運行不穩定的情況,在嵌入式系統軟件和硬件上,必須作相應的處理和保護。復位操作是一種行之有效的保護措施,同時(shí)復位系統本身也是引起嵌入式系統運行不穩定的因素,在設計時(shí)需特別注意。
本文結合筆者親身經(jīng)歷的實(shí)例來(lái)說(shuō)明Reset的重要性,巧妙地運用Reset使系統工作更穩定可靠。
1 Reset方式及手段
在嵌入式應用系統中,復位操作包括兩個(gè)方面——處理器本身的復位和系統中外設(外接功能模塊)的復位,如圖1所示。
總的說(shuō)來(lái),嵌入式復位方式主要分硬件復位和軟件復位。硬件復位,即采用硬件的手段、通過(guò)硬件復位信號對系統處理器或者外設進(jìn)行復位。只要在RST端出現一定時(shí)間(具體看系統和處理器的機器周期)的復位電平信號,由CPU采樣復位信號,啟動(dòng)復位時(shí)序,即可完成復位操作。硬件復位一般包括上電復位、按鍵復位、電壓監控復位和看門(mén)狗復位等,這些復位信號,在系統設計時(shí)可用邏輯電路組合起來(lái)加載到系統的RST端。軟件復位,即通過(guò)軟件手段,在軟件框架里對系統復位,重新初始化系統。
按處理器內外來(lái)劃分,又分為芯片內復位和芯片外復位。于是,硬件復位又分外部硬件復位和內部硬件復位。
對于硬件復位,按復位信號電平高低又可分為高電平復位和低電平復位。高電平復位是高電平有效,并在復位脈沖的下降沿完成復位過(guò)程;低電平復位是低電平有效,并在復位脈沖的上升沿完成復位。具體用什么復位信號,視嵌入式系統本身而定,但大多采用低電平復位,這與TTL的功耗有關(guān),因為T(mén)TL電路中高電平的吸收電流要遠小于低電平的吸收電流。
2上電復位的實(shí)現及穩定性設計
2.1上電復位
上電復位(Power On Reset,POR),即系統上電時(shí)通過(guò)復位電路,在RST引腳提供一個(gè)足夠長(cháng)時(shí)間的復位電平信號,直至系統電源穩定后,再撤銷(xiāo)復位電平。在嵌入式系統中,上電復位是系統啟動(dòng)初始化復位,全面而系統地復位處理器內的所有邏輯單元與模塊,將初始化內部邏輯操作,如存儲器控制器、中斷控制器和I/O引腳等的配置。
上電復位是保證嵌入式系統正常運行的基本操作。通常處理器芯片內部自帶上電復位電路,圖2(a)所示為某MCU(微控制器)Reset引腳示意圖,內部自帶上電復位電路。MCU芯片上電時(shí),片內POR將產(chǎn)生內部復位信號以初始化芯片內的數字模塊,其時(shí)序如圖2(b)所示。
有的處理器芯片通過(guò)在片外添加RC延時(shí)電路來(lái)得到上電復位信號。RC復位電路的復位脈沖寬度由芯片要求的復位時(shí)間決定,持續時(shí)間取決于RC電路參數,電容太大復位時(shí)間很長(cháng),電容太小復位時(shí)間不夠,不足以穩定復位。
2.2上電復位失效及應對措施
實(shí)際工作時(shí),由于各方面的原因,上電復位會(huì )失效。由于受到干擾、電源波動(dòng)、誤操作等原因,短暫的電壓下降造成供電恢復時(shí)由于電壓沒(méi)有滿(mǎn)足POR的發(fā)生條件,復位端的低電平復位信號無(wú)法再次啟動(dòng)系統重新復位工作,此時(shí)會(huì )出現系統死機;電源二次開(kāi)關(guān)時(shí)間間隔太短時(shí),復位不可靠;當電源電壓中有浪涌現象時(shí),可能在浪涌消失后不能產(chǎn)生復位脈沖。這些現象盡管并不頻繁,但對于某些特殊應用場(chǎng)景,如不能隨時(shí)進(jìn)行手動(dòng)復位的遠程自動(dòng)控制系統,卻是致命的。
出現失效時(shí),常采用提高復位門(mén)限來(lái)應對,使復位門(mén)限位于處理器正常工作電壓范圍內,且接近處理器正常工作時(shí)的最低門(mén)限。另一應對措施是延長(cháng)復位信號時(shí)間,讓復位信號在電壓值恢復后維持足夠長(cháng)的時(shí)間。電源穩定后還要經(jīng)過(guò)一定的延時(shí)才撤銷(xiāo)復位信號,以防止電源開(kāi)關(guān)或電源捕頭分一合過(guò)程中引起的抖動(dòng)影響復位。另外,為了解決電源毛刺和電源緩慢下降(電池電壓不足)等問(wèn)題引起的POR不可靠現象,有設計人員在RC電路中增加了二極管放電回路,在電源電壓瞬間下降時(shí)使電容迅速放電,這樣,一定寬度的電源毛刺也可令系統可靠復位。
2.3實(shí)例分析:快速開(kāi)關(guān)機單片機啟動(dòng)不穩定
筆者曾經(jīng)做過(guò)一個(gè)ZigBee物聯(lián)網(wǎng)項目,采用ZigBeeSoC芯片,硬件結構如圖3所示,主要包括一個(gè)8051的MCU核和ZigBee收發(fā)器。調試時(shí),發(fā)現ZigBee模塊快速關(guān)機然后快速開(kāi)機,即二次開(kāi)機時(shí)不穩定,有時(shí)啟動(dòng)不正常,功能不能實(shí)現。在軟件里加Trace信息,發(fā)現當快速開(kāi)關(guān)機時(shí)MCU并沒(méi)有正常啟動(dòng),沒(méi)有進(jìn)入所需要的初始化和主循環(huán)。避免快速關(guān)機開(kāi)機,則可以正常啟動(dòng)。當嵌入式系統關(guān)機后立即再開(kāi)機,有時(shí)不能正常工作,是因為復位不充分,這是嵌入式系統的共同點(diǎn)。
最后發(fā)現,由于SoC芯片里有內部POR,所以片外沒(méi)有加RC復位電路。而工作電源VDD_3V上有20μF電容,下電時(shí)不能快速放電。添加外部RC復位電路(100 kΩ電阻和1μF電容),延長(cháng)復位時(shí)間,電源穩定后再取消復位。Reset功能在芯片上下電時(shí)更穩定,問(wèn)題得以解決。有時(shí)候電阻電容這種“小器件”往往可以解決“大問(wèn)題”。
3電壓檢測復位
為了防止系統在上電、突然掉電或者電網(wǎng)瞬間欠壓引起嵌入式系統操作失誤,更常用和有效的方法是采用具有復位信號輸出的電壓監測電路。電壓監測電路提供多種保護功能:在系統上電、瞬間欠壓時(shí)提供系統復位信號;系統突然斷電、瞬間欠壓時(shí)輸出監測信號,以供系統實(shí)施保護措施,如數據保護、I/O安全設置;可連接備用電源,保證備用電源的投、切控制。
對于供電系統的容差范圍較大、壓值精度較低的情況,或者是遇到電網(wǎng)長(cháng)期工作在欠壓狀態(tài)下時(shí),可能會(huì )造成系統在正常工作條件下頻繁復位。這種情況更應該監控電源電壓,當監測到電壓波動(dòng)時(shí),監控芯片向處理器發(fā)送電壓異常信號,處理器響應該信號并中斷正在運行的程序,進(jìn)入掉電保護子程序,設置復位狀態(tài)寄存器,避免下次上電時(shí)由于寄存器狀態(tài)錯誤而無(wú)法啟動(dòng)上電復位。
電壓監測復位,可以解決電源毛刺等造成系統不穩定。復位電路可以采用分立元件搭建,目前常用專(zhuān)用集成電路芯片,閾值電壓和復位信號有些可通過(guò)編程修改。圖4是一個(gè)典型的電壓監控復位芯片與微處理器的連接圖。
4看門(mén)狗復位
看門(mén)狗復位(即程序運行監視復位)可保證程序非正常運行時(shí)能及時(shí)進(jìn)入復位狀態(tài)??撮T(mén)狗分硬件看門(mén)狗和軟件看門(mén)狗。
4.1硬件看門(mén)狗復位
硬件看門(mén)狗的基本原理是,為電路提供一個(gè)用于監視系統運行的信號線(xiàn),當系統正常運行時(shí),應在規定的時(shí)間內給信號線(xiàn)提供一個(gè)特定信號;如在規定的時(shí)間內無(wú)這個(gè)信號,自動(dòng)復位電路就認為系統運行不正常,并重新對系統進(jìn)行復位。具體方式是通過(guò)處理器的定時(shí)復位計數器來(lái)實(shí)現。此復位電路的可靠性還與軟件有關(guān),即將向復位電路發(fā)出脈沖的程序放在何處,在哪里插入“喂狗”指令,需作優(yōu)化。
硬件看門(mén)狗復位主要有三種形式:使用內部帶WDT功能單元的電路,外部增設WDT電路和專(zhuān)用集成WDT芯片。圖5是一個(gè)看門(mén)狗芯片的工作方式圖。
4.2軟件復位
軟件復位可以節約電路板的空間和成本;軟件復位方式更靈活,更便捷。尤其是對一些功能模塊或者外設的監控,借鑒硬件看門(mén)狗思想,采用軟件看門(mén)狗更有優(yōu)越性。用軟件來(lái)監測功能模塊或者外設的工作情況,一旦認為功能模塊或者外設工作異常,通過(guò)設定特殊的標記,達到Reset判據時(shí),則通過(guò)處理器強行復位并重新初始化工作異常的功能模塊或者外設,而其他功能模塊或者外設照常工作。當然,有時(shí)也需要重新復位并初始化整個(gè)系統,使系統更穩定地運行。有些系統人為操作硬件復位(按鍵復位或者上下電)很不方便時(shí),或者有些系統和產(chǎn)品不便于讓用戶(hù)知道其重啟時(shí),就可采用軟件復位。
4.3實(shí)例分析:手機找網(wǎng)問(wèn)題
筆者做過(guò)一個(gè)功能手機(feature phone)項目,由于手機平臺剛推出,平臺不太穩定,軟件存在一些Bug,尤其是底層Layer1部分。手機找不到網(wǎng),或者手機有網(wǎng)但過(guò)一段時(shí)間又沒(méi)有網(wǎng)的現象,發(fā)生概率很小,很難Debug.當時(shí)軟件找了很長(cháng)時(shí)間的Bug,并把問(wèn)題反饋給平臺廠(chǎng)商,但沒(méi)能及時(shí)給出解決方法。情急之下,只好做了應急之便,采用軟件復位的方法來(lái)救急。
評論