李 洋
(曲阜師范大學 計算機科學學院,山東 日照 276826)
嵌入式系統,即Embedded system,是一種“完全嵌入受控器件內部,為特定應用而設計的專用計算機系統”。根據英國電氣工程師協會的總結定義,嵌入式系統是為控制、監視、輔助設備、機器或用于工廠運作而產生的設備。在國內,嵌入式系統也擁有另一種定義方式,即以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。
嵌入式設備的工作通常情況下只針對預先定義的某一項具有特殊要求的任務。這個特點也使得嵌入式系統的設計人員和使用人員能夠對它進行優化和縮小,節約大量成本和空間。
嵌入式系統并不能滿足信息數字時代對它的要求,為此它又有了新的方向:(1)強大的硬件開發工具以及軟件包支持;(2)結構更加復雜,功能更加完整;(3)網絡互聯;(4)精算系統內核和算法,降低功耗和軟硬件成本;(5)提供友好的多功能人機界面。
面對這些新的方向和挑戰,嵌入式系統需要更加確保其電源供應,防止掉電產生。而現在的嵌入式系統卻掉電頻發,安全性不足,通過研究發現軟件容錯和掉電保護能夠很好地降低掉電對嵌入式系統的影響。
掉電保護設計的目的是通過采用這種機制,保證系統在某種意外情況下失去供電時完整記錄系統運行狀態和正在處理的數據,并且在供電情況恢復正常時及時恢復現場數據,降低系統混亂、丟失數據的風險。這種機制的主要設計方式是沿著系統產生掉電信號、捕捉掉電信號、記錄和處理掉電信號及數據、恢復現場的流程,確保掉電情況下能夠保護數據、記錄現場。
下面以ARM 體系硬件和μClinux 嵌入式操作系統為例簡單說明掉電保護機制的實現。

圖1 嵌入式系統硬件設計
如圖1 所示,是嵌入式系統的一種典型的硬件設計方案,在ARM 體系上采用S3C4510B 微處理器,并且硬件中的SDRAM 是易失性存儲器,系統運行時的數據通常狀況下都存在SDRAM 中,掉電時容易丟失。而FLASH 是非易失性存儲器,因此在掉電發生時數據和現場運行情況必須寫入FLASH 保留下來用于系統恢復。

圖2 添加電源保護的電路設計圖
由于與掉電關聯最緊密的是電源和電路設計,因此,電源保護也至關重要,如圖2,將其添加到電路設計中就能夠進一步降低掉電的發生。而且輸電電壓也要進行嚴格的控制,S3C4510B需3.3V 電壓,部分器件需5V 電壓,因此輸電電壓應控制在5V直流電壓。
在μClinux 系統中,要想捕捉電信號可以采用兩種方式:一是系統調用的方式,采用調用語句void (*signal(intslg,void(*func)(int)))(int),語句中的參數func負責傳遞掉電信號SIGPWR,這種方式簡單易操作,但是由于系統機制的問題易丟失信號,并不常用。二是守候進程,即在系統中專門設置一個進程用來觀察等待中斷信號。這種機制的實現基礎是系統以原子操作方式執行程序,當產生中斷信號時,系統會在執行原子操作前利用管道的方式讀取信號,并保存系統狀態,將數據及現場寫入FLASH,之后退出,等待電源恢復后恢復現場。
掉電保護機制很好地減少了由于掉電產生的數據丟失,在嵌入式系統的開發中具有重要的推廣意義。
嵌入式系統的應用越來越廣泛,數字信息時代對它的要求也越來越高,它不僅要具有高強度的工作能力,其安全可靠性也至關重要。軟件容錯技術和掉電保護對提高其可靠性起到了重要作用。使用嵌入式的同時,選擇正確的保護和防止措施才能最大程度地發揮嵌入式系統的作用。
[1]電子科技大學計算機學院.CRTOS x86/pm 嵌入式實時操作系統原理與應用設計[Z].增補版.成都:電子科技大學,2011.
[2]趙秋云,魏樂,劉文清.嵌入式軟件的構件化開發研究[J].科技資訊,2011.
[3]王田苗,魏洪興.嵌入式系統設計與實例開發(第3 版.清華大學出版社,2008.