Reset與嵌入式系統(tǒng)應(yīng)用的穩(wěn)定性
在RTOS實時多任務(wù)操作系統(tǒng)軟件中,添加一任務(wù),設(shè)置網(wǎng)絡(luò)狀態(tài)標志位來監(jiān)視網(wǎng)絡(luò)狀態(tài),當手機沒有信號時設(shè)置某標志;通過適當?shù)呐袚?jù),確認是否Reset,如果達到Reset條件就迅速地軟件復位,軟件重新初始化,如圖6所示。復位過程只能是“偷偷地”快速進行,不能讓用戶察覺,否則用戶體驗極為不好;要保持用戶界面,底層快速重啟,不知不覺地完成重啟。重啟后,網(wǎng)絡(luò)正常,用戶使用正常,巧妙地緩解,當然最終還是從本質(zhì)上去解決問題。
5外設(shè)的復位及穩(wěn)定性設(shè)計
5.1外設(shè)復位的特殊性與可控性
嵌入式系統(tǒng)通常有LCD顯示、攝像頭和無線通信模塊等外設(shè)。外設(shè)正常工作也需要正確的復位。有些設(shè)計直接將外設(shè)的復位引腳與處理器的復位引腳連在一起,共用一個外部硬件復位源,如圖7(a)所示。這種連接方式存在一些問題。首先,這要求復位電路有足夠的復位時間,才能保證處理器和外設(shè)都正確復位;其次,一旦外設(shè)出問題,那么處理器也需要復位,整個系統(tǒng)都需重新初始化;最后,容易產(chǎn)生非同步復位,在處理器復位后,對外設(shè)寫入命令時,可能被外設(shè)所復位掉,導致初始化出錯。
這些問題可以從硬件和軟件兩個方面來處理。硬件方面,對處理器和外設(shè)的復位分別進行復位電路設(shè)計,適當展寬復位脈沖。軟件方面,采用延時法,CPU上電后延時一段時間,等待外設(shè)復位充分,再進行外設(shè)初始化。最可靠并最具操作性的是保證外設(shè)復位的可控性,使外設(shè)的復位信號與處理器復位信號分開,由處理器的某一GPIO來控制。當處理器穩(wěn)定上電完成自身的初始化后,由處理器軟件控制外設(shè)復位,適當延時后,再對外設(shè)進行初始化,如圖7(b)所示。
外設(shè)復位的可控性,對要求特殊復位時序的外設(shè)尤其有用。不同的外設(shè),其復位時序要求不同,具有個性與特殊性,系統(tǒng)應(yīng)根據(jù)具體的復位時序要求進行個性化復位,否則可能導致外設(shè)工作不正常。
對于應(yīng)用系統(tǒng)中有多個外設(shè)時,不應(yīng)該如圖8(a)那樣把多個外設(shè)的復位引腳連在一起,由處理器的一個GPIO控制,進行一次外部硬件復位。通常采用如圖8(b)的連接方式,處理器完成上電復位后,分別通過不同的GPIO控制、采用不同的延時對各外設(shè)分別進行上電及復位。系統(tǒng)運行過程中,某個外設(shè)因受干擾工作不正常時,可以單獨對該外設(shè)進行復位操作,而不影響其他外設(shè);有利于提高系統(tǒng)設(shè)計的靈活性和可靠性,能保證多個外設(shè)的可靠運行。
5.2實例分析:WiFi模塊的特殊復位信號
筆者做過一個用WiFi進行數(shù)據(jù)傳輸?shù)捻椖浚麄€系統(tǒng)如圖9所示,SoC處理器模塊采集到的數(shù)據(jù)通過UART傳送給WiFi模塊,WiFi模塊再通過2.4 GHz無線信號傳送給無線WiFi AP,最后經(jīng)以太網(wǎng)口傳送給PC,由PC把無線AP獲取的數(shù)據(jù)保存到硬盤。
調(diào)試時,發(fā)現(xiàn)前端部分工作不穩(wěn)定,WiFi模塊啟動不穩(wěn)定,各次啟動現(xiàn)象不一致,有時能正常啟動,有時不能正常啟動。最后,找到問題的所在點:WiFi模塊上電啟動時,沒有得到正確的復位。系統(tǒng)上電的RC復位電路產(chǎn)生的Reset信號并不能完全使系統(tǒng)穩(wěn)定,需要再加一個脈沖信號,如圖10(a)所示。WiFi模塊的Reset時序包括兩個階段:大于20 ms的上電Reset和大于1 ms的硬件脈沖信號。微處理器SoC上電復位并初始化后,由I/O控制WiFi模塊上電及復位,按需求進行了特殊復位處理,采用特殊的Reset信號和時序,如圖10(b)所示,模塊可以穩(wěn)定啟動,工作正常,問題解決。
評論