你的位置:首頁 > 電源管理 > 正文

掉電保護在嵌入式系統(tǒng)中的設(shè)計應(yīng)用

發(fā)布時間:2012-01-06

中心議題:
  • 掉電保護在嵌入式系統(tǒng)中的設(shè)計應(yīng)用
  • 基于掉電保護方案的硬件設(shè)計
解決方案:
  • 在S3C4510B和μClinux構(gòu)建的嵌入式平臺實現(xiàn)
  • 使用5V和3.3V的直流穩(wěn)壓電源
  • 采用守候進程的方式

在嵌入式系統(tǒng)設(shè)計過程中,系統(tǒng)的掉電保護越來越受到重視。本文介紹的方法是在用ARM7系列芯片S3C4510B和μClinux構(gòu)建的嵌入式平臺上實現(xiàn)的。整個掉電保護實現(xiàn)的基本思路是:產(chǎn)生掉電信號,捕捉掉電信號和處理掉電信號。重點介紹這個過程的具體實現(xiàn)。

系統(tǒng)防掉電設(shè)計的目的是:采用一種機制,使得系統(tǒng)在意外失去供電的情況下,可以保證系統(tǒng)運行狀態(tài)的確定性以及記錄數(shù)據(jù)的完整性;當(dāng)系統(tǒng)供電恢復(fù)后,現(xiàn)場數(shù)據(jù)可以及時恢復(fù),避免應(yīng)用系統(tǒng)產(chǎn)生混亂。我們知道,在嵌入式系統(tǒng)設(shè)計與開發(fā)中越來越多地應(yīng)用嵌入式操作系統(tǒng)。由于操作系統(tǒng)的引入,數(shù)據(jù)的讀寫往往是通過文件的方式完成,而不是直接對存儲單元地址操作。用文件讀寫方式操作數(shù)據(jù),在程序的運行過程中往往將數(shù)據(jù)暫存在易失性的存儲空間,如SDRAM,一旦系統(tǒng)意外失電,這些數(shù)據(jù)往往被丟失。因此,當(dāng)系統(tǒng)意外失電時必須采取一定的措施進行系統(tǒng)的掉電保護,以避免系統(tǒng)產(chǎn)生混亂??偟恼f來,防掉電程序的主要思路就是:產(chǎn)生掉電信號,捕捉掉電信號,處理掉電信號和數(shù)據(jù)以及現(xiàn)場狀態(tài)的恢復(fù)。

如果不引入操作系統(tǒng),直接對存儲單元進行數(shù)據(jù)操作,每次操作的數(shù)據(jù)量小,可以利用中斷服務(wù)的方式進行掉電保護;而用文件的方式進行數(shù)據(jù)操作,數(shù)據(jù)量一般比較大,因此基于中斷服務(wù)的方式進行掉電保護已經(jīng)不再可靠。本文研究的對象是基于操作系統(tǒng)的較為復(fù)雜的嵌入式系統(tǒng)設(shè)計過程中的掉電保護。

1 掉電保護方案實現(xiàn)的系統(tǒng)基礎(chǔ)

掉電保護是在由ARM體系的硬件平臺和μClinux嵌入式操作系統(tǒng)的基礎(chǔ)上實現(xiàn)的。

ARM7系列的微處理器支持八種類型的中斷處理。外部中斷請求會在外部中斷引腳有效(一般是低電平),并且程序狀態(tài)寄存器相關(guān)位(即CPSR的I控制位)設(shè)置為允許時得到處理器響應(yīng)。響應(yīng)后處理器進入中斷工作模式,PC被裝人中斷向量0x00000018。在這個地址單元存放中斷服務(wù)程序人口地址,中斷服務(wù)程序就可以被執(zhí)行。在掉電保護方案中,中斷服務(wù)程序很簡單,就是將表示掉電的全局變量置位即可。這樣可以縮短程序執(zhí)行時間。

Flash存儲器是一種可在系統(tǒng)(in system)進行電擦寫,電后信息不丟失的存儲器。它具有低功耗、大容量、可整片或分扇區(qū)在系統(tǒng)編程(燒寫)、擦除等特點,并且可由內(nèi)部嵌入的算法完成對芯片的操作,因而在各種嵌入式系統(tǒng)中得到了廣泛的應(yīng)用。作為一種非易失性存儲器。Flash在系統(tǒng)中通常用于存放程序代碼、常量表以及一些在系統(tǒng)掉電后需要保存的用戶數(shù)據(jù)等。常用的Flash為8位或16位的數(shù)據(jù)寬度,編程電壓為單3.3V。與Flash存儲器相比較,SDRAM不具有掉電保持?jǐn)?shù)據(jù)的特性,但其存取速度大大高于Flash存儲器,且具有讀/寫的屬性,因此,SDRAM在系統(tǒng)中主要用作程序的運行空間、數(shù)據(jù)及堆棧區(qū)。當(dāng)系統(tǒng)啟動時,CPU首先從復(fù)位地址0x0處讀取啟動代碼,在完成系統(tǒng)的初始化后,程序代碼一般應(yīng)調(diào)入SDRAM中運行,以提高系統(tǒng)的運行速度,同時,系統(tǒng)及用戶堆棧、運行數(shù)據(jù)也都放在SDRAM中。SDRAM的存儲單元可以理解為一個電容,總是傾向于放電,為避免數(shù)據(jù)丟失,必須定時刷新(充電)。因此,要在系統(tǒng)中使用SDRAM,就要求微處理器具有刷新控制邏輯,或在系統(tǒng)中另外加入刷新控制邏輯電路,特別的情況是在系統(tǒng)失電后,要采取一種有效的機制確保將sDRAM中的數(shù)據(jù)寫入F1ash中。

2 基于掉電保護方案的硬件設(shè)計

圖1是一種典型的嵌入式系統(tǒng)硬件設(shè)計方案。系統(tǒng)的微處理器采用S3c4510B,是基于ARM7體系結(jié)構(gòu)的。SDRAM是一種易失性存儲器作為程序的運行空間,類似于PC機的內(nèi)存;Flash作為程序存儲空間是非易失性的。程序運行過程中的數(shù)據(jù)往往緩存在sDRAM中,在系統(tǒng)失電時必須寫往Flash。
 
[page]
在系統(tǒng)中,需要使用5V和3.3V的直流穩(wěn)壓電源。其中,S3C4510B及部分外圍器件需3.3V電源,另外部分器件需5V電源。為簡化系統(tǒng)電源電路的設(shè)計,要求整個系統(tǒng)的輸入電壓為高質(zhì)量的5V的直流穩(wěn)壓電源。有別于一般的電源回路設(shè)計,本系統(tǒng)的電源回路設(shè)計過程中增加了有關(guān)掉電保護的設(shè)計。包含這個設(shè)計的系統(tǒng)電源電路如圖2所示。

這個電源回路除了可以提供5v和3.3v的電源以外,還為系統(tǒng)掉電保護提供了延時及預(yù)警功能,通過軟件的配合可以實現(xiàn)系統(tǒng)的掉電保護機制。正常情況下,由供電回路1給整個系統(tǒng)供電。當(dāng)系統(tǒng)由于意外原因掉電時,由于輸入的比較電壓降低,這樣MAX809 模塊輸出電壓產(chǎn)生翻轉(zhuǎn)為系統(tǒng)提供掉電中斷預(yù)警信號,中斷請求通過外部中斷引腳XREQ0產(chǎn)生;同時供電回路2開始啟用。通過大電容C3、c4放電,繼續(xù)為系統(tǒng)提供一段供電電壓,支持掉電中斷服務(wù)程序完成。供電回路2只給最小系統(tǒng)供電,并不給耗電量大的外圍部件供電。這樣,給最小系統(tǒng)的供電時間足夠長,可以完成敏感數(shù)據(jù)的保護操作。

通過軟件測算,電容放電可供最小系統(tǒng)工作時間在0.5~4.5S之間。這種測算方法很簡單.編寫一個掉電中斷服務(wù)子程序,這個程序只是不斷進行時間刷新操作。同樣,可以通過軟件測定在這段時間里向Flash擦寫2~3MB??梢?,在采用這種硬件體制的情況下,系統(tǒng)掉電保護能夠得到可靠的保證。

3 掉電信號處理軟件方法的實現(xiàn)

在μClinux系統(tǒng)下,掉電信號的捕捉有兩種方式可以進行。一種是運用系統(tǒng)調(diào)用,即采用void(*signal(intslg,void(*func)(int)))(int)。這個函數(shù)可以為特定的中斷信號安排制訂的執(zhí)行函數(shù),用參數(shù)func傳遞。在μCllnux中,共有31個系統(tǒng)中斷信號,其中掉電信號為SIGPWR。假設(shè)掉電中斷服務(wù)處理程序為void interrupt-service(int),則中斷服務(wù)與信號關(guān)聯(lián)的方式為:signal(SIGPWR,interrupt_service)。這種方式充分利用系統(tǒng)調(diào)用,實現(xiàn)簡單。在掉電保護方案設(shè)計初期也是采用這種機制。但事實證明這種機制并不可靠,其原因是Linux內(nèi)核產(chǎn)生和管理信號的機制并不完善,有可能存在信號丟失。查閱有關(guān)Unix或L1nux的相關(guān)資料,可以發(fā)現(xiàn)這種狀況也普遍存在于某些其他版本的Linux和Unix中。

另一種方式是采用守候進程的方式,開通一個進程,此進程專門等待中斷信號。主程序根據(jù)數(shù)據(jù)操作對象的不同,將自己的流程方案劃分成若干原子操作,所謂原子操作即劃定的程序塊要么完全執(zhí)行,要么不執(zhí)行。每個操作對應(yīng)惟一狀態(tài)標(biāo)志。在每個原子操作前,主進程都將會通過管道通信的方式閱讀中斷信號。如果中斷信號產(chǎn)生,主進程首先保存狀態(tài)標(biāo)志,然后將相關(guān)數(shù)據(jù)寫往Flash后退出,電源恢復(fù)后,主進程首先根據(jù)標(biāo)志字確定系統(tǒng)恢復(fù)方案。圖3用流程圖的方式實現(xiàn)這一過程。
[page]
下面是實現(xiàn)這一過程的程序片斷:
 
 
結(jié)語

基于該方案設(shè)計的稅控收款機在實際運行過程中,掉電保護功能完備。此掉電保護設(shè)計方法應(yīng)用對象基于ARM和μClinux構(gòu)建的嵌入式系統(tǒng),在32位嵌入式系統(tǒng)開學(xué)中具有典玨型代表意義。因此在嵌人式系統(tǒng)設(shè)計中具有推廣價值。
要采購微處理器么,點這里了解一下價格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
壓控振蕩器 壓力傳感器 壓力開關(guān) 壓敏電阻 揚聲器 遙控開關(guān) 醫(yī)療電子 醫(yī)用成像 移動電源 音頻IC 音頻SoC 音頻變壓器 引線電感 語音控制 元件符號 元器件選型 云電視 云計算 云母電容 真空三極管 振蕩器 振蕩線圈 振動器 振動設(shè)備 震動馬達 整流變壓器 整流二極管 整流濾波 直流電機 智能抄表
?

關(guān)閉

?

關(guān)閉