掉電保護在嵌入式係統中的設計應用
發布時間:2012-01-06
中心議題:
在嵌入式係統設計過程中,係統的掉電保護越來越受到重視。本文介紹的方法是在用ARM7係列芯片S3C4510B和μClinux構建的嵌入式平台上實現的。整個掉電保護實現的基本思路是:產生掉電信號,捕捉掉電信號和處理掉電信號。重點介紹這個過程的具體實現。
係統防掉電設計的目的是:采用一種機製,使得係統在意外失去供電的情況下,可以保證係統運行狀態的確定性以及記錄數據的完整性;dangxitonggongdianhuifuhou,xianchangshujukeyijishihuifu,bimianyingyongxitongchanshenghunluan。womenzhidao,zaiqianrushixitongshejiyukaifazhongyuelaiyueduodiyingyongqianrushicaozuoxitong。youyucaozuoxitongdeyinru,shujudeduxiewangwangshitongguowenjiandefangshiwancheng,erbushizhijieduicunchudanyuandizhicaozuo。yongwenjianduxiefangshicaozuoshuju,zaichengxudeyunxingguochengzhongwangwangjiangshujuzancunzaiyishixingdecunchukongjian,ruSDRAM,一yi旦dan係xi統tong意yi外wai失shi電dian,這zhe些xie數shu據ju往wang往wang被bei丟diu失shi。因yin此ci,當dang係xi統tong意yi外wai失shi電dian時shi必bi須xu采cai取qu一yi定ding的de措cuo施shi進jin行xing係xi統tong的de掉diao電dian保bao護hu,以yi避bi免mian係xi統tong產chan生sheng混hun亂luan。總zong的de說shuo來lai,防fang掉diao電dian程cheng序xu的de主zhu要yao思si路lu就jiu是shi:產生掉電信號,捕捉掉電信號,處理掉電信號和數據以及現場狀態的恢複。
如果不引入操作係統,直接對存儲單元進行數據操作,每次操作的數據量小,可以利用中斷服務的方式進行掉電保護;而er用yong文wen件jian的de方fang式shi進jin行xing數shu據ju操cao作zuo,數shu據ju量liang一yi般ban比bi較jiao大da,因yin此ci基ji於yu中zhong斷duan服fu務wu的de方fang式shi進jin行xing掉diao電dian保bao護hu已yi經jing不bu再zai可ke靠kao。本ben文wen研yan究jiu的de對dui象xiang是shi基ji於yu操cao作zuo係xi統tong的de較jiao為wei複fu雜za的de嵌qian入ru式shi係xi統tong設she計ji過guo程cheng中zhong的de掉diao電dian保bao護hu。
1 掉電保護方案實現的係統基礎
掉電保護是在由ARM體係的硬件平台和μClinux嵌入式操作係統的基礎上實現的。
ARM7係列的微處理器支持八種類型的中斷處理。外部中斷請求會在外部中斷引腳有效(一般是低電平),並且程序狀態寄存器相關位(即CPSR的I控製位)設置為允許時得到處理器響應。響應後處理器進入中斷工作模式,PC被裝人中斷向量0x00000018。zaizhegedizhidanyuancunfangzhongduanfuwuchengxurenkoudizhi,zhongduanfuwuchengxujiukeyibeizhixing。zaidiaodianbaohufanganzhong,zhongduanfuwuchengxuhenjiandan,jiushijiangbiaoshidiaodiandequanjubianliangzhiweijike。zheyangkeyisuoduanchengxuzhixingshijian。
Flash存儲器是一種可在係統(in system)進行電擦寫,電後信息不丟失的存儲器。它具有低功耗、大容量、可整片或分扇區在係統編程(燒寫)、擦除等特點,並且可由內部嵌入的算法完成對芯片的操作,因而在各種嵌入式係統中得到了廣泛的應用。作為一種非易失性存儲器。Flash在係統中通常用於存放程序代碼、常量表以及一些在係統掉電後需要保存的用戶數據等。常用的Flash為8位或16位的數據寬度,編程電壓為單3.3V。與Flash存儲器相比較,SDRAM不具有掉電保持數據的特性,但其存取速度大大高於Flash存儲器,且具有讀/寫的屬性,因此,SDRAM在係統中主要用作程序的運行空間、數據及堆棧區。當係統啟動時,CPU首先從複位地址0x0處讀取啟動代碼,在完成係統的初始化後,程序代碼一般應調入SDRAM中運行,以提高係統的運行速度,同時,係統及用戶堆棧、運行數據也都放在SDRAM中。SDRAM的存儲單元可以理解為一個電容,總是傾向於放電,為避免數據丟失,必須定時刷新(充電)。因此,要在係統中使用SDRAM,就(jiu)要(yao)求(qiu)微(wei)處(chu)理(li)器(qi)具(ju)有(you)刷(shua)新(xin)控(kong)製(zhi)邏(luo)輯(ji),或(huo)在(zai)係(xi)統(tong)中(zhong)另(ling)外(wai)加(jia)入(ru)刷(shua)新(xin)控(kong)製(zhi)邏(luo)輯(ji)電(dian)路(lu),特(te)別(bie)的(de)情(qing)況(kuang)是(shi)在(zai)係(xi)統(tong)失(shi)電(dian)後(hou),要(yao)采(cai)取(qu)一(yi)種(zhong)有(you)效(xiao)的(de)機(ji)製(zhi)確(que)保(bao)將(jiang)sDRAM中的數據寫入F1ash中。
2 基於掉電保護方案的硬件設計
圖1是一種典型的嵌入式係統硬件設計方案。係統的微處理器采用S3c4510B,是基於ARM7體係結構的。SDRAM是一種易失性存儲器作為程序的運行空間,類似於PC機的內存;Flash作為程序存儲空間是非易失性的。程序運行過程中的數據往往緩存在sDRAM中,在係統失電時必須寫往Flash。
[page]
在係統中,需要使用5V和3.3V的直流穩壓電源。其中,S3C4510B及部分外圍器件需3.3V電源,另外部分器件需5V電源。為簡化係統電源電路的設計,要求整個係統的輸入電壓為高質量的5V的de直zhi流liu穩wen壓ya電dian源yuan。有you別bie於yu一yi般ban的de電dian源yuan回hui路lu設she計ji,本ben係xi統tong的de電dian源yuan回hui路lu設she計ji過guo程cheng中zhong增zeng加jia了le有you關guan掉diao電dian保bao護hu的de設she計ji。包bao含han這zhe個ge設she計ji的de係xi統tong電dian源yuan電dian路lu如ru圖tu2所示。
這個電源回路除了可以提供5v和3.3v的電源以外,還為係統掉電保護提供了延時及預警功能,通過軟件的配合可以實現係統的掉電保護機製。正常情況下,由供電回路1給整個係統供電。當係統由於意外原因掉電時,由於輸入的比較電壓降低,這樣MAX809 模塊輸出電壓產生翻轉為係統提供掉電中斷預警信號,中斷請求通過外部中斷引腳XREQ0產生;同時供電回路2開始啟用。通過大電容C3、c4放電,繼續為係統提供一段供電電壓,支持掉電中斷服務程序完成。供電回路2隻給最小係統供電,並不給耗電量大的外圍部件供電。這樣,給最小係統的供電時間足夠長,可以完成敏感數據的保護操作。
通過軟件測算,電容放電可供最小係統工作時間在0.5~4.5S之間。這種測算方法很簡單.編寫一個掉電中斷服務子程序,這個程序隻是不斷進行時間刷新操作。同樣,可以通過軟件測定在這段時間裏向Flash擦寫2~3MB。可見,在采用這種硬件體製的情況下,係統掉電保護能夠得到可靠的保證。
3 掉電信號處理軟件方法的實現
在μClinux係統下,掉電信號的捕捉有兩種方式可以進行。一種是運用係統調用,即采用void(*signal(intslg,void(*func)(int)))(int)。這個函數可以為特定的中斷信號安排製訂的執行函數,用參數func傳遞。在μCllnux中,共有31個係統中斷信號,其中掉電信號為SIGPWR。假設掉電中斷服務處理程序為void interrupt-service(int),則中斷服務與信號關聯的方式為:signal(SIGPWR,interrupt_service)。這種方式充分利用係統調用,實現簡單。在掉電保護方案設計初期也是采用這種機製。但事實證明這種機製並不可靠,其原因是Linux內核產生和管理信號的機製並不完善,有可能存在信號丟失。查閱有關Unix或L1nux的相關資料,可以發現這種狀況也普遍存在於某些其他版本的Linux和Unix中。
另ling一yi種zhong方fang式shi是shi采cai用yong守shou候hou進jin程cheng的de方fang式shi,開kai通tong一yi個ge進jin程cheng,此ci進jin程cheng專zhuan門men等deng待dai中zhong斷duan信xin號hao。主zhu程cheng序xu根gen據ju數shu據ju操cao作zuo對dui象xiang的de不bu同tong,將jiang自zi己ji的de流liu程cheng方fang案an劃hua分fen成cheng若ruo幹gan原yuan子zi操cao作zuo,所suo謂wei原yuan子zi操cao作zuo即ji劃hua定ding的de程cheng序xu塊kuai要yao麼me完wan全quan執zhi行xing,要yao麼me不bu執zhi行xing。每mei個ge操cao作zuo對dui應ying惟wei一yi狀zhuang態tai標biao誌zhi。在zai每mei個ge原yuan子zi操cao作zuo前qian,主zhu進jin程cheng都dou將jiang會hui通tong過guo管guan道dao通tong信xin的de方fang式shi閱yue讀du中zhong斷duan信xin號hao。如ru果guo中zhong斷duan信xin號hao產chan生sheng,主zhu進jin程cheng首shou先xian保bao存cun狀zhuang態tai標biao誌zhi,然ran後hou將jiang相xiang關guan數shu據ju寫xie往wangFlash後退出,電源恢複後,主進程首先根據標誌字確定係統恢複方案。圖3用流程圖的方式實現這一過程。
[page]
下麵是實現這一過程的程序片斷:
結語
基於該方案設計的稅控收款機在實際運行過程中,掉電保護功能完備。此掉電保護設計方法應用對象基於ARM和μClinux構建的嵌入式係統,在32位嵌入式係統開學中具有典玨型代表意義。因此在嵌人式係統設計中具有推廣價值。
- 掉電保護在嵌入式係統中的設計應用
- 基於掉電保護方案的硬件設計
- 在S3C4510B和μClinux構建的嵌入式平台實現
- 使用5V和3.3V的直流穩壓電源
- 采用守候進程的方式
在嵌入式係統設計過程中,係統的掉電保護越來越受到重視。本文介紹的方法是在用ARM7係列芯片S3C4510B和μClinux構建的嵌入式平台上實現的。整個掉電保護實現的基本思路是:產生掉電信號,捕捉掉電信號和處理掉電信號。重點介紹這個過程的具體實現。
係統防掉電設計的目的是:采用一種機製,使得係統在意外失去供電的情況下,可以保證係統運行狀態的確定性以及記錄數據的完整性;dangxitonggongdianhuifuhou,xianchangshujukeyijishihuifu,bimianyingyongxitongchanshenghunluan。womenzhidao,zaiqianrushixitongshejiyukaifazhongyuelaiyueduodiyingyongqianrushicaozuoxitong。youyucaozuoxitongdeyinru,shujudeduxiewangwangshitongguowenjiandefangshiwancheng,erbushizhijieduicunchudanyuandizhicaozuo。yongwenjianduxiefangshicaozuoshuju,zaichengxudeyunxingguochengzhongwangwangjiangshujuzancunzaiyishixingdecunchukongjian,ruSDRAM,一yi旦dan係xi統tong意yi外wai失shi電dian,這zhe些xie數shu據ju往wang往wang被bei丟diu失shi。因yin此ci,當dang係xi統tong意yi外wai失shi電dian時shi必bi須xu采cai取qu一yi定ding的de措cuo施shi進jin行xing係xi統tong的de掉diao電dian保bao護hu,以yi避bi免mian係xi統tong產chan生sheng混hun亂luan。總zong的de說shuo來lai,防fang掉diao電dian程cheng序xu的de主zhu要yao思si路lu就jiu是shi:產生掉電信號,捕捉掉電信號,處理掉電信號和數據以及現場狀態的恢複。
如果不引入操作係統,直接對存儲單元進行數據操作,每次操作的數據量小,可以利用中斷服務的方式進行掉電保護;而er用yong文wen件jian的de方fang式shi進jin行xing數shu據ju操cao作zuo,數shu據ju量liang一yi般ban比bi較jiao大da,因yin此ci基ji於yu中zhong斷duan服fu務wu的de方fang式shi進jin行xing掉diao電dian保bao護hu已yi經jing不bu再zai可ke靠kao。本ben文wen研yan究jiu的de對dui象xiang是shi基ji於yu操cao作zuo係xi統tong的de較jiao為wei複fu雜za的de嵌qian入ru式shi係xi統tong設she計ji過guo程cheng中zhong的de掉diao電dian保bao護hu。
1 掉電保護方案實現的係統基礎
掉電保護是在由ARM體係的硬件平台和μClinux嵌入式操作係統的基礎上實現的。
ARM7係列的微處理器支持八種類型的中斷處理。外部中斷請求會在外部中斷引腳有效(一般是低電平),並且程序狀態寄存器相關位(即CPSR的I控製位)設置為允許時得到處理器響應。響應後處理器進入中斷工作模式,PC被裝人中斷向量0x00000018。zaizhegedizhidanyuancunfangzhongduanfuwuchengxurenkoudizhi,zhongduanfuwuchengxujiukeyibeizhixing。zaidiaodianbaohufanganzhong,zhongduanfuwuchengxuhenjiandan,jiushijiangbiaoshidiaodiandequanjubianliangzhiweijike。zheyangkeyisuoduanchengxuzhixingshijian。
Flash存儲器是一種可在係統(in system)進行電擦寫,電後信息不丟失的存儲器。它具有低功耗、大容量、可整片或分扇區在係統編程(燒寫)、擦除等特點,並且可由內部嵌入的算法完成對芯片的操作,因而在各種嵌入式係統中得到了廣泛的應用。作為一種非易失性存儲器。Flash在係統中通常用於存放程序代碼、常量表以及一些在係統掉電後需要保存的用戶數據等。常用的Flash為8位或16位的數據寬度,編程電壓為單3.3V。與Flash存儲器相比較,SDRAM不具有掉電保持數據的特性,但其存取速度大大高於Flash存儲器,且具有讀/寫的屬性,因此,SDRAM在係統中主要用作程序的運行空間、數據及堆棧區。當係統啟動時,CPU首先從複位地址0x0處讀取啟動代碼,在完成係統的初始化後,程序代碼一般應調入SDRAM中運行,以提高係統的運行速度,同時,係統及用戶堆棧、運行數據也都放在SDRAM中。SDRAM的存儲單元可以理解為一個電容,總是傾向於放電,為避免數據丟失,必須定時刷新(充電)。因此,要在係統中使用SDRAM,就(jiu)要(yao)求(qiu)微(wei)處(chu)理(li)器(qi)具(ju)有(you)刷(shua)新(xin)控(kong)製(zhi)邏(luo)輯(ji),或(huo)在(zai)係(xi)統(tong)中(zhong)另(ling)外(wai)加(jia)入(ru)刷(shua)新(xin)控(kong)製(zhi)邏(luo)輯(ji)電(dian)路(lu),特(te)別(bie)的(de)情(qing)況(kuang)是(shi)在(zai)係(xi)統(tong)失(shi)電(dian)後(hou),要(yao)采(cai)取(qu)一(yi)種(zhong)有(you)效(xiao)的(de)機(ji)製(zhi)確(que)保(bao)將(jiang)sDRAM中的數據寫入F1ash中。
2 基於掉電保護方案的硬件設計
圖1是一種典型的嵌入式係統硬件設計方案。係統的微處理器采用S3c4510B,是基於ARM7體係結構的。SDRAM是一種易失性存儲器作為程序的運行空間,類似於PC機的內存;Flash作為程序存儲空間是非易失性的。程序運行過程中的數據往往緩存在sDRAM中,在係統失電時必須寫往Flash。

在係統中,需要使用5V和3.3V的直流穩壓電源。其中,S3C4510B及部分外圍器件需3.3V電源,另外部分器件需5V電源。為簡化係統電源電路的設計,要求整個係統的輸入電壓為高質量的5V的de直zhi流liu穩wen壓ya電dian源yuan。有you別bie於yu一yi般ban的de電dian源yuan回hui路lu設she計ji,本ben係xi統tong的de電dian源yuan回hui路lu設she計ji過guo程cheng中zhong增zeng加jia了le有you關guan掉diao電dian保bao護hu的de設she計ji。包bao含han這zhe個ge設she計ji的de係xi統tong電dian源yuan電dian路lu如ru圖tu2所示。

這個電源回路除了可以提供5v和3.3v的電源以外,還為係統掉電保護提供了延時及預警功能,通過軟件的配合可以實現係統的掉電保護機製。正常情況下,由供電回路1給整個係統供電。當係統由於意外原因掉電時,由於輸入的比較電壓降低,這樣MAX809 模塊輸出電壓產生翻轉為係統提供掉電中斷預警信號,中斷請求通過外部中斷引腳XREQ0產生;同時供電回路2開始啟用。通過大電容C3、c4放電,繼續為係統提供一段供電電壓,支持掉電中斷服務程序完成。供電回路2隻給最小係統供電,並不給耗電量大的外圍部件供電。這樣,給最小係統的供電時間足夠長,可以完成敏感數據的保護操作。
通過軟件測算,電容放電可供最小係統工作時間在0.5~4.5S之間。這種測算方法很簡單.編寫一個掉電中斷服務子程序,這個程序隻是不斷進行時間刷新操作。同樣,可以通過軟件測定在這段時間裏向Flash擦寫2~3MB。可見,在采用這種硬件體製的情況下,係統掉電保護能夠得到可靠的保證。
3 掉電信號處理軟件方法的實現
在μClinux係統下,掉電信號的捕捉有兩種方式可以進行。一種是運用係統調用,即采用void(*signal(intslg,void(*func)(int)))(int)。這個函數可以為特定的中斷信號安排製訂的執行函數,用參數func傳遞。在μCllnux中,共有31個係統中斷信號,其中掉電信號為SIGPWR。假設掉電中斷服務處理程序為void interrupt-service(int),則中斷服務與信號關聯的方式為:signal(SIGPWR,interrupt_service)。這種方式充分利用係統調用,實現簡單。在掉電保護方案設計初期也是采用這種機製。但事實證明這種機製並不可靠,其原因是Linux內核產生和管理信號的機製並不完善,有可能存在信號丟失。查閱有關Unix或L1nux的相關資料,可以發現這種狀況也普遍存在於某些其他版本的Linux和Unix中。
另ling一yi種zhong方fang式shi是shi采cai用yong守shou候hou進jin程cheng的de方fang式shi,開kai通tong一yi個ge進jin程cheng,此ci進jin程cheng專zhuan門men等deng待dai中zhong斷duan信xin號hao。主zhu程cheng序xu根gen據ju數shu據ju操cao作zuo對dui象xiang的de不bu同tong,將jiang自zi己ji的de流liu程cheng方fang案an劃hua分fen成cheng若ruo幹gan原yuan子zi操cao作zuo,所suo謂wei原yuan子zi操cao作zuo即ji劃hua定ding的de程cheng序xu塊kuai要yao麼me完wan全quan執zhi行xing,要yao麼me不bu執zhi行xing。每mei個ge操cao作zuo對dui應ying惟wei一yi狀zhuang態tai標biao誌zhi。在zai每mei個ge原yuan子zi操cao作zuo前qian,主zhu進jin程cheng都dou將jiang會hui通tong過guo管guan道dao通tong信xin的de方fang式shi閱yue讀du中zhong斷duan信xin號hao。如ru果guo中zhong斷duan信xin號hao產chan生sheng,主zhu進jin程cheng首shou先xian保bao存cun狀zhuang態tai標biao誌zhi,然ran後hou將jiang相xiang關guan數shu據ju寫xie往wangFlash後退出,電源恢複後,主進程首先根據標誌字確定係統恢複方案。圖3用流程圖的方式實現這一過程。

下麵是實現這一過程的程序片斷:


結語
基於該方案設計的稅控收款機在實際運行過程中,掉電保護功能完備。此掉電保護設計方法應用對象基於ARM和μClinux構建的嵌入式係統,在32位嵌入式係統開學中具有典玨型代表意義。因此在嵌人式係統設計中具有推廣價值。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 芯科科技Tech Talks與藍牙亞洲大會聯動,線上線下賦能物聯網創新
- 冬季續航縮水怎麼辦?揭秘熱管理係統背後的芯片力量
- 從HDMI 2.1到UFS 5.0:SmartDV以領先IP矩陣夯實邊緣計算基石
- 小空間也能實現低噪供電!精密測量雙極性電源選型指南,覆蓋小功率到大電流全場景
- 直擊藍牙亞洲大會 2026:Nordic 九大核心場景演繹“萬物互聯”新體驗
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
風力渦輪機
風能
風扇
風速風向儀
風揚高科
輔助駕駛係統
輔助設備
負荷開關
複用器
伽利略定位
幹電池
幹簧繼電器
感應開關
高頻電感
高通
高通濾波器
隔離變壓器
隔離開關
個人保健
工業電子
工業控製
工業連接器
工字型電感
功率表
功率電感
功率電阻
功率放大器
功率管
功率繼電器
功率器件



