本發(fā)明涉及存儲系統(tǒng)技術領域,特別是涉及一種電源切換方法及系統(tǒng)。
背景技術:
在云計算時代,存儲系統(tǒng)在技術領域中占據(jù)的地位愈加的明顯,存儲系統(tǒng)在運行過程中,確保數(shù)據(jù)的有效性,實時性以及穩(wěn)定性。而對于存儲系統(tǒng)最主要的方面一是主程序的可靠性,另外就是存儲系統(tǒng)硬件電源的可靠性。而電源是存儲系統(tǒng)最基礎的保證,如果在存儲系統(tǒng)中電源供電出現(xiàn)異常,而運行過程中未對該異常進行監(jiān)測或監(jiān)測到未進行有效的處理,存儲系統(tǒng)會停止處理當前業(yè)務,丟失客戶的數(shù)據(jù)資料,給客戶造成重大損失。
技術實現(xiàn)要素:
本發(fā)明的目的在于提出一種電源切換方法及系統(tǒng),
基于上述問題,本發(fā)明提出了一種存儲系統(tǒng)電源掉電監(jiān)測的機制,通過采用硬件cpld進行初級電源掉電監(jiān)測,切換備用電源供電,縮短電源掉電處理流程的時間,從而有效確保存儲系統(tǒng)對掉電異常實時處理的有效性。
為達到上述目的,本發(fā)明提供了以下技術方案:
一種電源切換方法,采用cpld復雜可編程邏輯處理器作為協(xié)處理器進行電源檢測,實現(xiàn)主電源和備用電源的切換,所述方法包括:
檢測主電源側(cè)的掉電信號;
當檢測所述主電源側(cè)的掉電信號為有效信號時,所述cpld將電源從所述主電源切換至所述備用電源;
從所述主電源切換至所述備用電源的同時,將當前內(nèi)存中所有的數(shù)據(jù)存儲至磁盤上的存儲區(qū)域。
優(yōu)選的,在所述檢測主電源側(cè)的掉電信號之前,還包括:
所述主電源正常工作狀態(tài)下,上電啟動所述cpld,將所述cpld從關閉狀態(tài)啟動到全功能狀態(tài)。
其中,所述主電源正常工作狀態(tài)下,上電啟動所述cpld,將所述cpld從關閉狀態(tài)啟動到全功能狀態(tài),包括:
所述主電源正常工作狀態(tài)下,所述cpld上電初始化管腳狀態(tài),當檢測到所述主電源的psu掉電管腳和psu在位管腳為有效信號時,則所述cpld從所述關閉狀態(tài)啟動到標準預處理狀態(tài);
所述cpld進入所述標準預處理狀態(tài),檢測pch上電管腳的狀態(tài),當所述pch上電管腳為有效信號時,則所述cpld從所述標準預處理狀態(tài)啟動到標準狀態(tài);
所述cpld進入所述標準狀態(tài),檢測所述psu上電管腳的狀態(tài),當所述psu上電管腳為無效信號時,則所述cpld進入所述關閉狀態(tài),檢測延時管腳和系統(tǒng)上電管腳,當所述延時管腳和所述系統(tǒng)上電管腳均為有效信號時,則所述cpld從所述標準狀態(tài)啟動到全功能預處理狀態(tài);
所述cpld進入所述全功能預處理狀態(tài),檢測所述psu上電管腳的狀態(tài),當所述psu上電管腳為無效信號時,則所述cpld進入所述關閉狀態(tài),檢測系統(tǒng)所有psu上電管腳和系統(tǒng)上電轉(zhuǎn)儲失敗管腳,當所有psu上電管腳和所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳均為無效信號時,則所述cpld從所述全功能預處理狀態(tài)啟動到全功能狀態(tài);
所述cpld進入所述全功能狀態(tài),檢測所述psu上電管腳的狀態(tài),當所述psu上電管腳為無效信號時,則所述cpld進入所述關閉狀態(tài),檢測所述延時管腳的狀態(tài),當所述延時管腳為無效信號時,則所述cpld從所述全功能狀態(tài)進入到標準狀態(tài)。
其中,所述當檢測所述主電源側(cè)的掉電信號為有效信號時,所述cpld將電源從所述主電源切換至所述備用電源,包括:
將所述cpld的轉(zhuǎn)儲初始化管腳設置為有效信號,所述cpld從全功能狀態(tài)進入到轉(zhuǎn)儲初始化狀態(tài);
所述cpld進入所述轉(zhuǎn)儲初始化狀態(tài),檢測所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳和所述psu上電管腳的狀態(tài),當所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳為有效信號,且所述psu上電管腳為無效信號時,則所述cpld從所述轉(zhuǎn)儲初始化狀態(tài)進入到轉(zhuǎn)儲預處理狀態(tài);
當檢測到所述系統(tǒng)所有上電管腳和所述延時管腳均為無效信號,則所述cpld從所述轉(zhuǎn)儲預處理狀態(tài)進入到備用電池測試延時狀態(tài);
所述cpld進入所述備用電池測試延時狀態(tài),則系統(tǒng)根據(jù)第一預設時間延時后進入備用電池測試狀態(tài),當檢測到電池測試延時管腳為有效信號,所述psu上電管腳為無效信號、所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳為有效信號且所述備電測試管腳為有效信號時,延遲第二預設時間后返回到所述轉(zhuǎn)儲初始化狀態(tài);
所述存儲系統(tǒng)進入所述轉(zhuǎn)儲初始化狀態(tài),則所述存儲系統(tǒng)進行io預處理操作,所述cpld將電源從所述主電源切換至所述備用電源。
其中,所述從所述主電源切換至所述備用電源的同時,將當前內(nèi)存中所有的數(shù)據(jù)存儲至磁盤上的存儲區(qū)域,包括:
所述存儲系統(tǒng)進入所述轉(zhuǎn)儲初始化狀態(tài),按照預設時間間隔進行io掉電循環(huán)監(jiān)測,當所述psu上電管腳為有效信號時,則存儲系統(tǒng)進入轉(zhuǎn)儲初始化延時狀態(tài)并重新進入初始化所述cpld進入所述轉(zhuǎn)儲初始化狀態(tài);
所述cpld進入所述轉(zhuǎn)儲初始化狀態(tài),則檢測所述系統(tǒng)掉電確認管腳的狀態(tài),當所述系統(tǒng)掉電確認管腳為有效信號時,所述cpld進入轉(zhuǎn)儲狀態(tài);
當所述存儲系統(tǒng)進入所述轉(zhuǎn)儲狀態(tài)時,則所述存儲系統(tǒng)進行數(shù)據(jù)安全保護狀態(tài),所述cpld切換到所述備用電源,將當前內(nèi)存中所有的數(shù)據(jù)存儲至磁盤上的存儲區(qū)域磁盤上的所述存儲區(qū)域。
一種電源切換系統(tǒng),采用cpld復雜可編程邏輯處理器作為協(xié)處理器進行電源檢測,實現(xiàn)主電源和備用電源的切換,所述系統(tǒng)包括:
檢測單元,用于檢測主電源側(cè)的掉電信號;
切換單元,用于當檢測所述主電源側(cè)的掉電信號為有效信號時,所述cpld將電源從所述主電源切換至所述備用電源;
存儲單元,用于從所述主電源切換至所述備用電源的同時,將當前內(nèi)存中所有的數(shù)據(jù)存儲至磁盤上的存儲區(qū)域。
優(yōu)選的,還包括:
cpld啟動單元,用于所述主電源正常工作狀態(tài)下,上電啟動所述cpld,將所述cpld從關閉狀態(tài)啟動到全功能狀態(tài)。
其中,所述cpld啟動單元包括:
第一啟動單元,用于所述主電源正常工作狀態(tài)下,所述cpld上電初始化管腳狀態(tài),當檢測到所述主電源的psu掉電管腳和psu在位管腳為有效信號時,則所述cpld從所述關閉狀態(tài)啟動到標準預處理狀態(tài);
第二啟動單元,用于所述cpld進入所述標準預處理狀態(tài),檢測pch上電管腳的狀態(tài),當所述pch上電管腳為有效信號時,則所述cpld從所述標準預處理狀態(tài)啟動到標準狀態(tài);
第三啟動單元,用于所述cpld進入所述標準狀態(tài),檢測所述psu上電管腳的狀態(tài),當所述psu上電管腳為無效信號時,則所述cpld進入所述關閉狀態(tài),檢測延時管腳和系統(tǒng)上電管腳,當所述延時管腳和所述系統(tǒng)上電管腳均為有效信號時,則所述cpld從所述標準狀態(tài)啟動到全功能預處理狀態(tài);
第四啟動單元,用于所述cpld進入所述全功能預處理狀態(tài),檢測所述psu上電管腳的狀態(tài),當所述psu上電管腳為無效信號時,則所述cpld進入所述關閉狀態(tài),檢測系統(tǒng)所有psu上電管腳和系統(tǒng)上電轉(zhuǎn)儲失敗管腳,當所有psu上電管腳和所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳均為無效信號時,則所述cpld從所述全功能預處理狀態(tài)啟動到全功能狀態(tài);
第五啟動單元,用于所述cpld進入所述全功能狀態(tài),檢測所述psu上電管腳的狀態(tài),當所述psu上電管腳為無效信號時,則所述cpld進入所述關閉狀態(tài),檢測所述延時管腳的狀態(tài),當所述延時管腳為無效信號時,則所述cpld從所述全功能狀態(tài)進入到標準狀態(tài)。
其中,所述切換單元包括:
第一切換單元,用于將所述cpld的轉(zhuǎn)儲初始化管腳設置為有效信號,所述cpld從全功能狀態(tài)進入到轉(zhuǎn)儲初始化狀態(tài);
第二切換單元,用于所述cpld進入所述轉(zhuǎn)儲初始化狀態(tài),檢測所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳和所述psu上電管腳的狀態(tài),當所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳為有效信號,且所述psu上電管腳為無效信號時,則所述cpld從所述轉(zhuǎn)儲初始化狀態(tài)進入到轉(zhuǎn)儲預處理狀態(tài);
第三切換單元,用于當檢測到所述系統(tǒng)所有上電管腳和所述延時管腳均為無效信號,則所述cpld從所述轉(zhuǎn)儲預處理狀態(tài)進入到備用電池測試延時狀態(tài);
第四切換單元,用于所述cpld進入所述備用電池測試延時狀態(tài),則系統(tǒng)根據(jù)第一預設時間延時后進入備用電池測試狀態(tài),當檢測到電池測試延時管腳為有效信號,所述psu上電管腳為無效信號、所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳為有效信號且所述備電測試管腳為有效信號時,延遲第二預設時間后返回到所述轉(zhuǎn)儲初始化狀態(tài);
第五切換單元,用于所述存儲系統(tǒng)進入所述轉(zhuǎn)儲初始化狀態(tài),則所述存儲系統(tǒng)進行io預處理操作,所述cpld將電源從所述主電源切換至所述備用電源。
其中,所述存儲單元包括:
第一轉(zhuǎn)換單元,用于所述存儲系統(tǒng)進入所述轉(zhuǎn)儲初始化狀態(tài),按照預設時間間隔進行io掉電循環(huán)監(jiān)測,當所述psu上電管腳為有效信號時,則存儲系統(tǒng)進入轉(zhuǎn)儲初始化延時狀態(tài)并重新進入初始化所述cpld進入所述轉(zhuǎn)儲初始化狀態(tài);
第二轉(zhuǎn)換單元,用于所述cpld進入所述轉(zhuǎn)儲初始化狀態(tài),則檢測所述系統(tǒng)掉電確認管腳的狀態(tài),當所述系統(tǒng)掉電確認管腳為有效信號時,所述cpld進入轉(zhuǎn)儲狀態(tài);
存儲子單元,用于當所述存儲系統(tǒng)進入所述轉(zhuǎn)儲狀態(tài)時,則所述存儲系統(tǒng)進行數(shù)據(jù)安全保護狀態(tài),所述cpld切換到所述備用電源,將當前內(nèi)存中所有的數(shù)據(jù)存儲至磁盤上的存儲區(qū)域磁盤上的所述存儲區(qū)域。
經(jīng)由上述的技術方案可知,與現(xiàn)有技術相比,本發(fā)明公開了一種電源切換方法及系統(tǒng),采用cpld復雜可編程邏輯處理器作為協(xié)處理器進行電源檢測,實現(xiàn)主電源和備用電源的切換,本發(fā)明采用cpld硬件平臺執(zhí)行掉電監(jiān)測,能夠通過并行流水的優(yōu)化方式控制各個功能硬件模塊的電源,從而改善功能模塊上電掉電實時性,與通用處理器cpu硬件控制電源模塊相比,本發(fā)明采用c語言開發(fā)并與cpld協(xié)處理器協(xié)同工作,能夠有效的改善電源控制實現(xiàn)效率,減少電源控制實現(xiàn)的開發(fā)周期。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種電源切換方法的流程示意圖;
圖2為本發(fā)明實施例面向存儲系統(tǒng)電源掉電檢測方法實現(xiàn)過程示意圖;
圖3為本發(fā)明實施例提供的一種電源切換系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
縮略詞解釋:
psu(powersupplyunit,電源供電設備);
cpld(complexprogrammablelogicdevice,復雜可編程邏輯器件);
gpio(general-purposeinput/outputports,通用i/o端口)。
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明采用c高級語言進行硬件電源掉電監(jiān)測的描述,使用通用處理器cpu進行主機端運行主程序,cpld作為協(xié)處理器進行電源監(jiān)測的硬件加速單元,通過linux內(nèi)核驅(qū)動對硬件進行實施有效的監(jiān)測,并確保軟件上層進行掉電保護機制處理的有效性。使用cpld作為協(xié)處理器,能夠有效的提升硬件監(jiān)測的執(zhí)行性能,同時這種實現(xiàn)方式能夠有效縮短硬件掉電信號到基于cpld的切換備電及cpu處理的時間,提高存儲系統(tǒng)異常處理的能力。
具體實施過程如下:采用c高級語言完成監(jiān)測機制的描述,分別生成在通用處理器cpu上運行的主機端程序,以及監(jiān)測cpld信號的內(nèi)核kernel驅(qū)動程序。然后采用gcc編譯器對主機端程序及驅(qū)動進行編譯,生成可在通用處理器上執(zhí)行的可執(zhí)行程序文件和驅(qū)動程序文件;采用quartus工具對cpld上程序進行編譯,生成可以運行pof文件。最后,燒寫cpld的程序并在通用處理器cpu上插入內(nèi)核驅(qū)動模塊,運行主機端的程序,cpu與cpld之間采用通用gpio連接,進行信號傳遞。
請參閱附圖1,圖1為本發(fā)明實施例提供的一種電源切換方法的流程示意圖。如圖1所示,本實施例提供了一種電源切換方法,采用cpld復雜可編程邏輯處理器作為協(xié)處理器進行電源檢測,實現(xiàn)主電源和備用電源的切換,所述方法具體包括如下步驟:
s101、檢測主電源側(cè)的掉電信號。
需要說明的是,在該步驟之前還包括:
主電源正常工作狀態(tài)下,上電啟動cpld,將cpld從關閉狀態(tài)啟動到全功能狀態(tài)。
具體的,主電源正常工作狀態(tài)下,上電啟動cpld,將cpld從關閉狀態(tài)啟動到全功能狀態(tài),具體包括:
主電源正常工作狀態(tài)下,cpld上電初始化管腳狀態(tài),當檢測到主電源的psu掉電管腳和psu在位管腳為有效信號時,則cpld從所述關閉狀態(tài)啟動到標準預處理狀態(tài);
cpld進入標準預處理狀態(tài),檢測pch上電管腳的狀態(tài),當pch上電管腳為有效信號時,則cpld從標準預處理狀態(tài)啟動到標準狀態(tài);
cpld進入標準狀態(tài),檢測psu上電管腳的狀態(tài),當psu上電管腳為無效信號時,則cpld進入所述關閉狀態(tài),檢測延時管腳和系統(tǒng)上電管腳,當延時管腳和系統(tǒng)上電管腳均為有效信號時,則cpld從標準狀態(tài)啟動到全功能預處理狀態(tài);
cpld進入全功能預處理狀態(tài),檢測psu上電管腳的狀態(tài),當psu上電管腳為無效信號時,則cpld進入關閉狀態(tài),檢測系統(tǒng)所有psu上電管腳和系統(tǒng)上電轉(zhuǎn)儲失敗管腳,當所有psu上電管腳和系統(tǒng)上電轉(zhuǎn)儲失敗管腳均為無效信號時,則cpld從全功能預處理狀態(tài)啟動到全功能狀態(tài);
cpld進入全功能狀態(tài),檢測psu上電管腳的狀態(tài),當psu上電管腳為無效信號時,則cpld進入關閉狀態(tài),檢測延時管腳的狀態(tài),當延時管腳為無效信號時,則cpld從全功能狀態(tài)進入到標準狀態(tài)。
s102、當檢測主電源側(cè)的掉電信號為有效信號時,cpld將電源從主電源切換至備用電源。
需要說明的是,當檢測主電源側(cè)的掉電信號為有效信號時,cpld將電源從主電源切換至備用電源,具體包括:
將cpld的轉(zhuǎn)儲初始化管腳設置為有效信號,cpld從全功能狀態(tài)進入到轉(zhuǎn)儲初始化狀態(tài);
cpld進入轉(zhuǎn)儲初始化狀態(tài),檢測系統(tǒng)上電轉(zhuǎn)儲失敗管腳和psu上電管腳的狀態(tài),當系統(tǒng)上電轉(zhuǎn)儲失敗管腳為有效信號,且psu上電管腳為無效信號時,則cpld從轉(zhuǎn)儲初始化狀態(tài)進入到轉(zhuǎn)儲預處理狀態(tài);
當檢測到系統(tǒng)所有上電管腳和延時管腳均為無效信號,則cpld從轉(zhuǎn)儲預處理狀態(tài)進入到備用電池測試延時狀態(tài);
cpld進入備用電池測試延時狀態(tài),則系統(tǒng)根據(jù)第一預設時間延時后進入備用電池測試狀態(tài),當檢測到電池測試延時管腳為有效信號,psu上電管腳為無效信號、系統(tǒng)上電轉(zhuǎn)儲失敗管腳為有效信號且備電測試管腳為有效信號時,延遲第二預設時間后返回到轉(zhuǎn)儲初始化狀態(tài);
存儲系統(tǒng)進入轉(zhuǎn)儲初始化狀態(tài),則存儲系統(tǒng)進行io預處理操作,cpld將電源從主電源切換至所述備用電源。
s103、從主電源切換至備用電源的同時,將當前內(nèi)存中所有的數(shù)據(jù)存儲至磁盤上的存儲區(qū)域。
需要說明的是,從主電源切換至備用電源的同時,將當前內(nèi)存中所有的數(shù)據(jù)存儲至磁盤上的存儲區(qū)域,具體包括:
存儲系統(tǒng)進入轉(zhuǎn)儲初始化狀態(tài),按照預設時間間隔進行io掉電循環(huán)監(jiān)測,當psu上電管腳為有效信號時,則存儲系統(tǒng)進入轉(zhuǎn)儲初始化延時狀態(tài)并重新進入初始化cpld進入轉(zhuǎn)儲初始化狀態(tài);
cpld進入轉(zhuǎn)儲初始化狀態(tài),則檢測系統(tǒng)掉電確認管腳的狀態(tài),當系統(tǒng)掉電確認管腳為有效信號時,cpld進入轉(zhuǎn)儲狀態(tài);
當存儲系統(tǒng)進入轉(zhuǎn)儲狀態(tài)時,則存儲系統(tǒng)進行數(shù)據(jù)安全保護狀態(tài),cpld切換到備用電源,將當前內(nèi)存中所有的數(shù)據(jù)存儲至磁盤上的存儲區(qū)域磁盤上的存儲區(qū)域。
具體的,請參閱附圖2,圖2為本發(fā)明實施例面向存儲系統(tǒng)電源掉電檢測方法實現(xiàn)過程示意圖。
主機端內(nèi)核驅(qū)動模塊及程序?qū)崿F(xiàn)時主要包括以下步驟:
需要說明的是,以下描述的內(nèi)容中有效信號對應圖2中的管腳為1則表明為有效信號,管腳為0則表明為無效信號。
1、cpld上電初始化管腳狀態(tài),監(jiān)測ac上電psu掉電管腳(ac_good_n)有效和psu在位psu在位管腳(psu_presnet_n)有效時,cpld從關機階段進入標準預處理階段;
2、cpld進入標準預處理階段后,檢測pch上電管腳(pwrgd_pch_apwrok_pld)的狀態(tài),如果pch上電管腳(pwrgd_pch_apwrok_pld)為有效時,cpld從標準預處理階段進入標準階段,否則持續(xù)等待;
3、cpld進入標準階段后,.檢測psu掉電管腳(ac_good_n)的狀態(tài),如過psu掉電管腳(ac_good_n)的狀態(tài)為無效時,cpld進入關機階段;檢測硬件延時管腳(fm_slps3_n_flt)和系統(tǒng)上電管腳(sys_pwrup),兩個管腳均為有效時,cpld從標準階段進入全功能預處理階段,否則等待;
4、cpld進入全功能預處理階段后,檢測psu掉電管腳(ac_good_n)的狀態(tài),如過psu掉電管腳(ac_good_n)的狀態(tài)為無效時,cpld進入關機階段;檢測系統(tǒng)全部上電管腳(pwrgd_all)和系統(tǒng)上電轉(zhuǎn)儲失敗管腳(pwrgd_undumped_fail)均為有效時,cpld進入全功能階段;
5、cpld進入全功能階段后,檢測psu掉電管腳(ac_good_n)的狀態(tài),如過psu掉電管腳(ac_good_n)的狀態(tài)為無效時,cpld進入關機階段;如果硬件延時管腳(fm_slps3_n_flt)為無效,則進入標準階段;
6、內(nèi)核驅(qū)動模塊,初始化io定時器,把io定時器添加到內(nèi)核定時器處理隊列中,創(chuàng)建io定時器設備文件/dev/module_name;
7、主機端程序打開設備文件/dev/module_name,創(chuàng)建電源掉電監(jiān)測隊列,主機端程序創(chuàng)建掉電監(jiān)測線程,并初始化io管腳,等待電源掉電監(jiān)測隊列事件;
8、主機端程序把轉(zhuǎn)儲初始化管腳(dump_armed_n_flt)設置為有效,促使cpld從全功能階段進入轉(zhuǎn)儲初始化階段。當cpld進入此階段時,主機程序已經(jīng)全速運行,并實時檢測掉電信號;
9、cpld進入轉(zhuǎn)儲初始化階段后,此階段為最終階段,也就是掉電監(jiān)測最后一個重要環(huán)節(jié)。在此環(huán)節(jié)中,當系統(tǒng)上電轉(zhuǎn)儲失敗管腳(pwrgd_undumped_fail)為有效時,psu掉電管腳(ac_good_n)為無效時,存儲系統(tǒng)進入轉(zhuǎn)儲預處理階段;如果系統(tǒng)掉電確認管腳(ok_redunce_pwr_flt)為有效,則存儲系統(tǒng)進入轉(zhuǎn)儲階段;如果系統(tǒng)全部上電管腳(pwrgd_all)為無效,硬件延時管腳(fm_slps3_n_flt)為無效則進入標準階段;如果備電測試管腳(bbu_test_n_flt)為無效,則進入備用電池測試延時階段;
10、如果存儲系統(tǒng)進入電池測試延時階段,則系統(tǒng)根據(jù)延時10s后進入正式備用電池測試階段。該階段會測試備用電池的可靠性,并根據(jù)電池測試延時管腳(bat_test_timeout)有效,psu掉電管腳(ac_good_n)無效,系統(tǒng)上電轉(zhuǎn)儲失敗管腳(pwrgd_undumped_fail)有效,bbu_test_n_flt有效,延遲55s后重新回到轉(zhuǎn)儲初始化階段;
11、如果存儲系統(tǒng)進入轉(zhuǎn)儲預處理階段,則存儲系統(tǒng)進行io預處理操作,cpld切換備用電源。該階段在5s內(nèi)每個50ms進行io掉電循環(huán)監(jiān)測,當psu掉電管腳(ac_good_n)為有效時,則系統(tǒng)進入轉(zhuǎn)儲初始化延時階段并重新進入初始化cpld進入轉(zhuǎn)儲初始化階段;如果此時系統(tǒng)掉電確認管腳(ok_redunce_pwr_flt)為有效,則進入轉(zhuǎn)儲階段;
12、存儲系統(tǒng)如果進入轉(zhuǎn)儲階段,則存儲系統(tǒng)進行數(shù)據(jù)安全保護階段,cpld切換備用電源,主程序?qū)?shù)據(jù)進行現(xiàn)場保護,把當前內(nèi)存中所有的數(shù)據(jù)寫入到磁盤中,寫入完畢后系統(tǒng)進入重啟,進入關閉階段。
本發(fā)明提供了一種電源切換方法,該方法采用cpld復雜可編程邏輯處理器作為協(xié)處理器進行電源檢測,實現(xiàn)主電源和備用電源的切換,本發(fā)明采用cpld硬件平臺執(zhí)行掉電監(jiān)測,能夠通過并行流水的優(yōu)化方式控制各個功能硬件模塊的電源,從而改善功能模塊上電掉電實時性,與通用處理器cpu硬件控制電源模塊相比,本發(fā)明采用c語言開發(fā)并與cpld協(xié)處理器協(xié)同工作,能夠有效的改善電源控制實現(xiàn)效率,減少電源控制實現(xiàn)的開發(fā)周期。
本發(fā)明在上述公開的方法的基礎上,還公開了對應的系統(tǒng)。
下面對本發(fā)明實施例提供的內(nèi)存垃圾回收系統(tǒng)進行介紹,需要說明的是,有關該內(nèi)存垃圾回收系統(tǒng)的說明可參照上文提供的內(nèi)存垃圾回收方法,以下并不做贅述。
請參閱附圖3,圖3為本發(fā)明實施例提供的一種電源切換系統(tǒng)的結(jié)構(gòu)示意圖。如圖3所示,本實施例提供了一種電源切換系統(tǒng),采用cpld復雜可編程邏輯處理器作為協(xié)處理器進行電源檢測,實現(xiàn)主電源和備用電源的切換,所述系統(tǒng)結(jié)構(gòu)具體包括如下:
檢測單元301,用于檢測主電源側(cè)的掉電信號;
切換單元302,用于當檢測所述主電源側(cè)的掉電信號為有效信號時,所述cpld將電源從所述主電源切換至所述備用電源;
存儲單元303,用于從所述主電源切換至所述備用電源的同時,將當前內(nèi)存中所有的數(shù)據(jù)存儲至磁盤上的存儲區(qū)域。
具體的,該系統(tǒng)還包括:
cpld啟動單元,用于所述主電源正常工作狀態(tài)下,上電啟動所述cpld,將所述cpld從關閉狀態(tài)啟動到全功能狀態(tài)。
具體的,所述cpld啟動單元包括:
第一啟動單元,用于所述主電源正常工作狀態(tài)下,所述cpld上電初始化管腳狀態(tài),當檢測到所述主電源的psu掉電管腳和psu在位管腳為有效信號時,則所述cpld從所述關閉狀態(tài)啟動到標準預處理狀態(tài);
第二啟動單元,用于所述cpld進入所述標準預處理狀態(tài),檢測pch上電管腳的狀態(tài),當所述pch上電管腳為有效信號時,則所述cpld從所述標準預處理狀態(tài)啟動到標準狀態(tài);
第三啟動單元,用于所述cpld進入所述標準狀態(tài),檢測所述psu上電管腳的狀態(tài),當所述psu上電管腳為無效信號時,則所述cpld進入所述關閉狀態(tài),檢測延時管腳和系統(tǒng)上電管腳,當所述延時管腳和所述系統(tǒng)上電管腳均為有效信號時,則所述cpld從所述標準狀態(tài)啟動到全功能預處理狀態(tài);
第四啟動單元,用于所述cpld進入所述全功能預處理狀態(tài),檢測所述psu上電管腳的狀態(tài),當所述psu上電管腳為無效信號時,則所述cpld進入所述關閉狀態(tài),檢測系統(tǒng)所有psu上電管腳和系統(tǒng)上電轉(zhuǎn)儲失敗管腳,當所有psu上電管腳和所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳均為無效信號時,則所述cpld從所述全功能預處理狀態(tài)啟動到全功能狀態(tài);
第五啟動單元,用于所述cpld進入所述全功能狀態(tài),檢測所述psu上電管腳的狀態(tài),當所述psu上電管腳為無效信號時,則所述cpld進入所述關閉狀態(tài),檢測所述延時管腳的狀態(tài),當所述延時管腳為無效信號時,則所述cpld從所述全功能狀態(tài)進入到標準狀態(tài)。
具體的,所述切換單元302包括:
第一切換單元,用于將所述cpld的轉(zhuǎn)儲初始化管腳設置為有效信號,所述cpld從全功能狀態(tài)進入到轉(zhuǎn)儲初始化狀態(tài);
第二切換單元,用于所述cpld進入所述轉(zhuǎn)儲初始化狀態(tài),檢測所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳和所述psu上電管腳的狀態(tài),當所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳為有效信號,且所述psu上電管腳為無效信號時,則所述cpld從所述轉(zhuǎn)儲初始化狀態(tài)進入到轉(zhuǎn)儲預處理狀態(tài);
第三切換單元,用于當檢測到所述系統(tǒng)所有上電管腳和所述延時管腳均為無效信號,則所述cpld從所述轉(zhuǎn)儲預處理狀態(tài)進入到備用電池測試延時狀態(tài);
第四切換單元,用于所述cpld進入所述備用電池測試延時狀態(tài),則系統(tǒng)根據(jù)第一預設時間延時后進入備用電池測試狀態(tài),當檢測到電池測試延時管腳為有效信號,所述psu上電管腳為無效信號、所述系統(tǒng)上電轉(zhuǎn)儲失敗管腳為有效信號且所述備電測試管腳為有效信號時,延遲第二預設時間后返回到所述轉(zhuǎn)儲初始化狀態(tài);
第五切換單元,用于所述存儲系統(tǒng)進入所述轉(zhuǎn)儲初始化狀態(tài),則所述存儲系統(tǒng)進行io預處理操作,所述cpld將電源從所述主電源切換至所述備用電源。
具體的,所述存儲單元303包括:
第一轉(zhuǎn)換單元,用于所述存儲系統(tǒng)進入所述轉(zhuǎn)儲初始化狀態(tài),按照預設時間間隔進行io掉電循環(huán)監(jiān)測,當所述psu上電管腳為有效信號時,則存儲系統(tǒng)進入轉(zhuǎn)儲初始化延時狀態(tài)并重新進入初始化所述cpld進入所述轉(zhuǎn)儲初始化狀態(tài);
第二轉(zhuǎn)換單元,用于所述cpld進入所述轉(zhuǎn)儲初始化狀態(tài),則檢測所述系統(tǒng)掉電確認管腳的狀態(tài),當所述系統(tǒng)掉電確認管腳為有效信號時,所述cpld進入轉(zhuǎn)儲狀態(tài);
存儲子單元,用于當所述存儲系統(tǒng)進入所述轉(zhuǎn)儲狀態(tài)時,則所述存儲系統(tǒng)進行數(shù)據(jù)安全保護狀態(tài),所述cpld切換到所述備用電源,將當前內(nèi)存中所有的數(shù)據(jù)存儲至磁盤上的存儲區(qū)域磁盤上的所述存儲區(qū)域。
本發(fā)明提供了一種電源切換系統(tǒng),該系統(tǒng)采用cpld復雜可編程邏輯處理器作為協(xié)處理器進行電源檢測,實現(xiàn)主電源和備用電源的切換,本發(fā)明采用cpld硬件平臺執(zhí)行掉電監(jiān)測,能夠通過并行流水的優(yōu)化方式控制各個功能硬件模塊的電源,從而改善功能模塊上電掉電實時性,與通用處理器cpu硬件控制電源模塊相比,本發(fā)明采用c語言開發(fā)并與cpld協(xié)處理器協(xié)同工作,能夠有效的改善電源控制實現(xiàn)效率,減少電源控制實現(xiàn)的開發(fā)周期。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括上述要素的物品或者設備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領域?qū)I(yè)技術人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。