《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 電源技術(shù) > 設(shè)計(jì)應(yīng)用 > 嵌入式系統(tǒng)掉電保護(hù)的設(shè)計(jì)方案
嵌入式系統(tǒng)掉電保護(hù)的設(shè)計(jì)方案
摘要: 在嵌入式系統(tǒng)設(shè)計(jì)過(guò)程中,,系統(tǒng)的掉電保護(hù)越來(lái)越受到重視。本文介紹的方法是在用ARM7系列芯片S3C4510B和μClinux構(gòu)建的嵌入式平臺(tái)上實(shí)現(xiàn)的,。整個(gè)掉電保護(hù)實(shí)現(xiàn)的基本思路是:產(chǎn)生掉電信號(hào),,捕捉掉電信號(hào)和處理掉電信號(hào)。重點(diǎn)介紹這個(gè)過(guò)程的具體實(shí)現(xiàn),。系統(tǒng)防掉電設(shè)計(jì)的目的是:采用一種機(jī)制,,使得系統(tǒng)在意外失去供電的情況下,可以保證系統(tǒng)運(yùn)行狀態(tài)的確定性以及記錄數(shù)據(jù)的完整性;當(dāng)系統(tǒng)供電恢復(fù)后,,現(xiàn)場(chǎng)數(shù)據(jù)可以及時(shí)恢復(fù),,避免應(yīng)用系統(tǒng)產(chǎn)生混亂。我們知道,,在嵌入式系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)中越來(lái)越多地應(yīng)用嵌入式操作系統(tǒng),。由于操作系統(tǒng)的引入,數(shù)據(jù)的讀寫(xiě)往往是通過(guò)文件的方式完成,,而不是直接對(duì)存儲(chǔ)單元地址操作,。用文件讀寫(xiě)方式操作數(shù)據(jù),在程序的運(yùn)行過(guò)程中往往將數(shù)據(jù)暫存在易失性的存儲(chǔ)空間,,如SDRAM,,一旦系統(tǒng)意外失電,這些數(shù)據(jù)往往被丟失,。因此,,當(dāng)系統(tǒng)意外失電時(shí)必須采取一定的措施進(jìn)行系統(tǒng)的掉電保護(hù),以避免系統(tǒng)產(chǎn)生混亂,??偟恼f(shuō)來(lái),防掉電程序的主要思路就是:產(chǎn)生掉電信號(hào),,捕捉掉電信號(hào),,處理掉電信號(hào)和數(shù)據(jù)以及現(xiàn)場(chǎng)狀態(tài)的恢復(fù)。如果不引入操作系統(tǒng),,直接對(duì)存儲(chǔ)單元進(jìn)行數(shù)據(jù)操作,,每次操作的數(shù)據(jù)量小,,可以利用中斷服務(wù)的方式進(jìn)行掉電保護(hù);而用文件的方式進(jìn)行數(shù)據(jù)操作,,數(shù)
Abstract:
Key words :

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

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

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

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

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

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

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

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

  圖1是一種典型的嵌入式系統(tǒng)硬件設(shè)計(jì)方案,。系統(tǒng)的微處理器采用S3c4510B,,是基于ARM7體系結(jié)構(gòu)的,。SDRAM是一種易失性存儲(chǔ)器作為程序的運(yùn)行空間,類(lèi)似于PC機(jī)的內(nèi)存;Flash作為程序存儲(chǔ)空間是非易失性的,。程序運(yùn)行過(guò)程中的數(shù)據(jù)往往緩存在sDRAM中,,在系統(tǒng)失電時(shí)必須寫(xiě)往Flash。

  

 

  在系統(tǒng)中,,需要使用5V和3.3V的直流穩(wěn)壓電源,。其中,S3C4510B及部分外圍器件需3.3V電源,另外部分器件需5V電源,。為簡(jiǎn)化系統(tǒng)電源電路的設(shè)計(jì),,要求整個(gè)系統(tǒng)的輸入電壓為高質(zhì)量的5V的直流穩(wěn)壓電源。有別于一般的電源回路設(shè)計(jì),,本系統(tǒng)的電源回路設(shè)計(jì)過(guò)程中增加了有關(guān)掉電保護(hù)的設(shè)計(jì),。包含這個(gè)設(shè)計(jì)的系統(tǒng)電源電路如圖2所示。

  

 

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

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

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

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

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

  

 

  下面是實(shí)現(xiàn)這一過(guò)程的程序片斷:

  

 

  

 

  結(jié)語(yǔ)

  基于該方案設(shè)計(jì)的稅控收款機(jī)在實(shí)際運(yùn)行過(guò)程中,,掉電保護(hù)功能完備,。此掉電保護(hù)設(shè)計(jì)方法應(yīng)用對(duì)象基于ARM和μClinux構(gòu)建的嵌入式系統(tǒng),,在32位嵌入式系統(tǒng)開(kāi)學(xué)中具有典玨型代表意義,。因此在嵌人式系統(tǒng)設(shè)計(jì)中具有推廣價(jià)值。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。