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