新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式系統掉電保護的設計方案

        嵌入式系統掉電保護的設計方案

        作者: 時間:2010-11-27 來源:網絡 收藏


        本文引用地址:http://www.104case.com/article/151305.htm

          在中,需要使用5V和3.3V的直流穩壓電源。其中,S3C4510B及部分外圍器件需3.3V電源,另外部分器件需5V電源。為簡化電源電路的,要求整個的輸入電壓為高質量的5V的直流穩壓電源。有別于一般的電源回路,本系統的電源回路過程中增加了有關掉電的設計。包含這個設計的系統電源電路如圖2所示。

          

          這個電源回路除了可以提供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中。

          另一種方式是采用守候進程的方式,開通一個進程,此進程專門等待中斷信號。主程序根據數據操作對象的不同,將自己的流程劃分成若干原子操作,所謂原子操作即劃定的程序塊要么完全執行,要么不執行。每個操作對應惟一狀態標志。在每個原子操作前,主進程都將會通過管道通信的方式閱讀中斷信號。如果中斷信號產生,主進程首先保存狀態標志,然后將相關數據寫往Flash后退出,電源恢復后,主進程首先根據標志字確定系統恢復。圖3用流程圖的方式實現這一過程。

          

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 青田县| 榕江县| 平泉县| 日喀则市| 南充市| 余江县| 龙陵县| 芦溪县| 凤庆县| 昌平区| 通河县| 南京市| 贵港市| 高雄市| 深州市| 沙河市| 辉南县| 昔阳县| 常山县| 绥棱县| 怀柔区| 留坝县| 桂阳县| 永嘉县| 杭锦旗| 江城| 钟山县| 大余县| 彰化县| 通山县| 综艺| 十堰市| 黄陵县| 奉化市| 合山市| 武强县| 扶余县| 无为县| 金溪县| 监利县| 平原县|