專利名稱:一種復(fù)雜可編程邏輯器件的在線升級方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種復(fù)雜可編程邏輯器件 (ComplexProgrammable Logic Device, CPLD)的在線升級方法及裝置。
背景技術(shù):
CPLD具有編程靈活、集成度高、設(shè)計開發(fā)周期短、適用范圍寬、開發(fā)工具先進(jìn)、設(shè)計 制造成本低、保密性強等優(yōu)點,已成為電子產(chǎn)品不可缺少的組成部分,因此被廣泛應(yīng)用于產(chǎn) 品的原型設(shè)計和產(chǎn)品生產(chǎn)之中。同時,CPLD還可以實現(xiàn)在線升級,因此當(dāng)電路系統(tǒng)的CPLD 新增了功能或者CPLD出現(xiàn)故障時,可以通過升級來解決。CPLD等邏輯器件一般位于業(yè)務(wù)單板上,在CPLD升級的過程中,可以將業(yè)務(wù)單板上 的業(yè)邏輯器件分為進(jìn)行接口控制的CPLD和進(jìn)行工作的CPLD。其中,該進(jìn)行接口控制的 CPLD負(fù)責(zé)業(yè)務(wù)單板的啟動配置及接口的轉(zhuǎn)換,進(jìn)行工作的CPLD完成業(yè)務(wù)單板工作所需的 功能。在CPLD在線升級的過程中,業(yè)務(wù)單板的CPU接收到CPLD升級命令后,獲取用于升級 的CPLD邏輯文件,該進(jìn)行接口控制的CPLD將CPU本地總線(L0CALBUS)接口轉(zhuǎn)換為CPLD的 聯(lián)合測試行為組織(Joint TestAction Group,JTAG)接口,CPU通過該轉(zhuǎn)換后的CPLD JTAG 接口將獲取的CPLD邏輯文件寫入該工作CPLD中,實現(xiàn)對工作CPLD的在線升級?,F(xiàn)有技術(shù)在對CPLD進(jìn)行在線升級的過程中,需要非常謹(jǐn)慎的進(jìn)行,當(dāng)升級錯誤或 者升級失敗時,會導(dǎo)致非常嚴(yán)重的后果,可能損壞業(yè)務(wù)單板或者使業(yè)務(wù)單板無法正常啟動 而導(dǎo)致業(yè)務(wù)單板癱瘓,而該CPLD的升級錯誤或升級失敗的過程是不可控的,從而影響了通 信設(shè)備的可靠性和穩(wěn)定性。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實施例提供一種復(fù)雜可編程邏輯器件的在線升級方法及裝置, 用以解決現(xiàn)有技術(shù)中因CPLD的升級錯誤或升級失敗而影響通信設(shè)備的可靠性和穩(wěn)定性的 問題。本發(fā)明實施例提供的一種復(fù)雜可編程邏輯器件的在線升級方法,包括業(yè)務(wù)單板的處理器獲取用于升級的復(fù)雜可編程邏輯器件CPLD文件,根據(jù)該文件, 對業(yè)務(wù)單板上的主CPLD對應(yīng)的待升級文件進(jìn)行升級并重啟業(yè)務(wù)單板;當(dāng)所述主CPLD在業(yè)務(wù)單板的重啟過程中重啟不成功時,所述處理器通過業(yè)務(wù)單 板上的從CPLD完成對自身的啟動配置。本發(fā)明實施例提供的一種復(fù)雜可編程邏輯器件的在線升級裝置,包括文件升級模塊,用于獲取用于升級的復(fù)雜可編程邏輯器件CPLD文件,根據(jù)所述 CPLD文件對業(yè)務(wù)單板上的主CPLD對應(yīng)的待升級文件進(jìn)行升級,并重啟業(yè)務(wù)單板;配置完成模塊,用于在所述業(yè)務(wù)單板的啟動過程中所述主CPLD重啟不成功時,通 過從CPLD完成啟動配置。
本發(fā)明實施例提供了一種CPLD的在線升級方法及裝置,該方法當(dāng)處理器獲取了用于升級的CPLD文件時,采用該獲取的用于升級的CPLD文件對主CPLD對應(yīng)的待升級文件 進(jìn)行升級并重啟業(yè)務(wù)單板,并且在業(yè)務(wù)單板的啟動過程中主CPLD重啟不成功時,處理器通 過從CPLD完成啟動配置,由于本發(fā)明實施例采用主從CPLD配合完成CPLD的在線升級,因 此有效地避免了在CPLD在線升級過程中,由于升級錯誤或升級失敗而影響通信設(shè)備的可 靠性和穩(wěn)定性的問題。
圖1為本發(fā)明實施例提供的CPLD的在線升級方法;圖2為本發(fā)明實施例提供的該CPLD的在線升級的詳細(xì)方法;圖3為本發(fā)明實施例提供的步驟S211中當(dāng)處理器保存升級次數(shù)信息時,對主CPLD對應(yīng)的待升級文件進(jìn)行升級的過程;圖4為本發(fā)明實施例提供的CPLD在線升級過程的詳細(xì)描述;圖5A為本發(fā)明實施例提供的詳細(xì)說明對從CPLD進(jìn)行升級的過程;圖5B為本發(fā)明實施例提供的處理器CPU、選通器、主CPLD和從CPLD的原理圖;圖6為本發(fā)明實施例提供的CPLD在線升級的裝置結(jié)構(gòu)示意圖。
具體實施例方式本發(fā)明實施例為了提高通信設(shè)備的穩(wěn)定性和可靠性,提供了一種CPLD的在線升 級方法,該方法中業(yè)務(wù)單板中采用主、從CPLD,當(dāng)主CPLD升級不成功時,則通過從CPLD完成 處理器CPU的啟動配置,通過主從方式進(jìn)行CPLD的在現(xiàn)實升級,從而提高了系統(tǒng)的可靠性 和穩(wěn)定性。 下面結(jié)合說明書附圖,對本發(fā)明實施例進(jìn)行詳細(xì)說明。圖1為本發(fā)明實施例提供的CPLD的在線升級方法,該方法包括以下步驟SlOl 業(yè)務(wù)單板的處理器獲取用于升級的CPLD文件,根據(jù)獲取的該文件,對業(yè)務(wù) 單板上的主CPLD對應(yīng)的待升級文件進(jìn)行升級并重啟業(yè)務(wù)單板。在本發(fā)明實施例中對業(yè)務(wù)單板上的主CPLD對應(yīng)的待升級文件進(jìn)行升級具體包 括業(yè)務(wù)單板的處理器根據(jù)獲取的用于升級的CPLD文件中的器件型號信息,與讀取的所述 主CPLD的器件型號信息進(jìn)行匹配,當(dāng)匹配一致時,則采用該獲取的該用于升級的CPLD文件 對所述主CPLD對應(yīng)的待升級文件進(jìn)行升級。處理器當(dāng)確定該用于升級的CPLD文件中的器件型號信息,與讀取的所述主CPLD 的器件型號信息匹配一致時,所述處理器讀取并保存所述主CPLD對應(yīng)的待升級文件。S102 當(dāng)所述主CPLD在業(yè)務(wù)單板的重啟過程中重啟不成功時,則所述處理器通過 業(yè)務(wù)單板上的從CPLD對自身完成啟動配置。業(yè)務(wù)單板重啟時,通過主CPLD完成對處理器的啟動配置,當(dāng)主CPLD重啟不成功 時,則主CPLD無法正常工作,則從CPLD可以判斷主CPLD升級失敗,從CPLD可以完成對處
理器的啟動配置。在本發(fā)明實施例中當(dāng)處理器通過業(yè)務(wù)單板上的從CPLD完成對自身的啟動配置 后,該處理器接收所述從CPLD發(fā)送的所述主CPLD升級失敗的信息。由于主CPLD升級失 敗,為了使系統(tǒng)恢復(fù)到升級前的狀態(tài),在本發(fā)明實施例中可以將保存的升級前的主CPLD對應(yīng)的待升級文件重新寫入該主CPLD中。業(yè)務(wù)單板上的CPLD可以實現(xiàn)業(yè)務(wù)單板的啟動控制及正常工作功能,并且當(dāng)系統(tǒng) 較復(fù)雜時,系統(tǒng)內(nèi)可能存在多個CPLD。在本發(fā)明實施例中為了實現(xiàn)對業(yè)務(wù)單板上所有CPLD 器件進(jìn)行在線升級,通過JTAG選通器實現(xiàn)主CPLD和從CPLD的選通,并且處理器通過JTAG 接口獲取主CPLD和從CPLD中的信息。由于在本發(fā)明實施例中無需采用專門的進(jìn)行接口控 制的CPLD,并且業(yè)務(wù)單板上所有CPLD都可以實現(xiàn)在線升級,因此本發(fā)明實施例提供的方案 簡化了電路涉及的復(fù)雜度,提高了業(yè)務(wù)單板升級的靈活性及啟動配置的靈活性。在本發(fā)明實施例中主CPLD在業(yè)務(wù)單板能夠正常啟動時,可以對業(yè)務(wù)單板上的處理器的工作模式進(jìn)行配置,并且可以完成處理器的啟動控制以及業(yè)務(wù)單板正常工作所需的 功能和控制。從CPLD可以在主CPLD出現(xiàn)異常時,實現(xiàn)處理器的正常啟動,并且從CPLD可以 監(jiān)控主CPLD是否能夠正常啟動。當(dāng)主CPLD升級成功時,處理器需要對從CPLD進(jìn)行升級, 處理器對從CPLD升級的過程與處理器對主CPLD升級的過程基本相同。并且由于業(yè)務(wù)單板的功能比較復(fù)雜,在業(yè)務(wù)單板上存在諸多CPLD器件,每種CPLD 器件實現(xiàn)不同的業(yè)務(wù)功能,并且CPLD的每個業(yè)務(wù)功能之間相互獨立。本發(fā)明實施例中描述 的主、從CPLD的概念是針對處理器的啟動控制而言,其中一個為主,另一個為從。而相對業(yè) 務(wù)單板的功能而言,并不存在這種主從關(guān)系,兩者是并行的。為了提高CPLD升級的可靠性,在本發(fā)明實施例中當(dāng)處理器獲取了用于升級的 CPLD文件后,可以對獲取的該CPLD文件進(jìn)行校驗,判斷是否為所需的CPLD文件。同時為了 進(jìn)一步提高CPLD升級的可靠性,在本發(fā)明實施例中采用獲取的用于升級的CPLD文件對主 CPLD中對應(yīng)的待升級的文件進(jìn)行升級后,通過處理器讀取升級后的CPLD文件,并對該讀取 的CPLD文件進(jìn)行校驗,確定該主CPLD升級后的CPLD文件是否有誤。圖2為本發(fā)明實施例提供的該CPLD的在線升級的詳細(xì)方法,該方法包括以下步 驟S201 業(yè)務(wù)單板上的處理器接收到CPLD的升級命令后,獲取用于升級的CPLD文件。系統(tǒng)的閃存(FLASH)中可以保存CPLD文件,或者與處理器可以進(jìn)行信息交互的其 他平臺中也可以保存CPLD文件。當(dāng)處理器接收到升級命令后,可以根據(jù)保存CPLD文件的 地址信息,獲取對應(yīng)的用于升級的CPLD文件。S202 處理器對獲取的用于升級的CPLD文件進(jìn)行校驗,判斷該用于升級的CPLD文 件的信息是否通過校驗,當(dāng)校驗通過時,進(jìn)行步驟S203,否則,進(jìn)行步驟S212。處理器對該用于升級的CPLD文件進(jìn)行校驗可以采用循環(huán)冗余校驗(Cyclic Redundancy Check, CRC),以判斷該用于升級的CPLD文件是否正確。S203 處理器模擬CPLD的JTAG下載接口,并且通過JTAG選通器選通進(jìn)行升級的 CPLD的JTAG接口,該選通的進(jìn)行升級的CPLD可以為主CPLD的JTAG接口,也可以為從CPLD 的JTAG接口,本發(fā)明實施例以處理器選通的CPLD為主CPLD的JTAG接口進(jìn)行說明。處理器在通用輸入輸出(GeneralPurpose Input Output,GP10)接口上模擬CPLD 的JTAG下載接口。處理器在通過JTAG選通器選通進(jìn)行升級的CPLD的JTAG接口時,處理器可以輸 出低電平有效信號控制JTAG選通器,選通進(jìn)行升級的CPLD的JTAG接口,例如可以輸出低電平有效信號,該低電平有效信號可以為master_cpld_cs#信號,當(dāng)該處理器輸出maSter_ cpld_cs#信號時,該處理器選通的為主CPLD的JTAG接口。S204 處理器根據(jù)模擬的JTAG下載接口通過選通的主CPLD的JTAG接口,獲取主 CPLD的器件型號信息,并獲取該用于升級的CPLD文件的器件型號信息。由于在制作用于升級的CPLD文件時,已經(jīng)將CPLD的器件型號信息和CPLD配置文 件信息封裝在該CPLD文件中。因此處理器可以通過解析該用于升級的CPLD文件獲取該 CPLD文件的器件型號信息,并且處理器根據(jù)該選通的CPLD的JTAG接口,讀取獲得選通的 CPLD的器件型號信息。S205 處理器判斷獲取的器件型號信息是否匹配一致,當(dāng)匹配一致時,進(jìn)行步驟S206,否則,進(jìn)行步驟S212。S206 處理器保持選通的主CPLD的JTAG接口,通過該接口讀取主CPLD對應(yīng)的待 升級文件,并將讀取的該主CPLD對應(yīng)的待升級文件保存。處理器可以將讀取的主CPLD對應(yīng)的待升級文件保存在掉電非易失的存儲空間 中,例如可以保存在FLASH中。S207 處理器通過該選通的CPLD的JTAG接口,采用該用于升級的CPLD文件,對選 通的CPLD對應(yīng)的待升級文件進(jìn)行升級。S208 處理器通過JTAG接口讀取主CPLD升級后文件,并對該主CPLD升級后文件 進(jìn)行校驗,判斷該主CPLD升級后文件的信息是否正確,當(dāng)判斷正確時,進(jìn)行步驟S209,否 貝U,進(jìn)行步驟S211。S209 當(dāng)業(yè)務(wù)單板重啟的過程中該選通的主CPLD重啟不成功時,處理器指示從 CPLD對自身完成啟動配置,并接收從CPLD發(fā)送的主CPLD升級失敗的信息。S210 所述處理器將保存的升級前的所述主CPLD對應(yīng)的待升級文件寫入所述主 CPLD。S211 處理器將保存的升級前的該主CPLD對應(yīng)的待升級文件寫回該選通的主 CPLD,并輸出升級失敗信息。S212 處理器判斷升級失敗。在步驟S211中處理器也可以根據(jù)處理器保存的升級次數(shù)信息,采用該獲取的用 于升級的CPLD文件,對該選通的主CPLD對應(yīng)的待升級文件進(jìn)行對應(yīng)次數(shù)的升級,每次對主 CPLD進(jìn)行升級后,該業(yè)務(wù)單板啟動之前,對主CPLD升級文件進(jìn)行校驗,判斷主CPLD升級后 的文件是否通過校驗。在采用該獲取的用于升級的CPLD文件后,對主CPLD對應(yīng)的待升級 文件進(jìn)行升級的過程如上述步驟所述。圖3為本發(fā)明實施例步驟S211中當(dāng)處理器根據(jù)保 存的升級次數(shù)信息,對主CPLD對應(yīng)的待升級文件進(jìn)行升級的過程,該過程包括S301 處理器根據(jù)保存的升級次數(shù)信息,判斷當(dāng)前對主CPLD對應(yīng)的待升級文件 進(jìn)行升級的次數(shù)是否達(dá)到該保存的升級次數(shù),當(dāng)達(dá)到時,進(jìn)行步驟S302,否則,進(jìn)行步驟 S303。S302 處理器將保存的升級前的該主CPLD對應(yīng)的待升級文件寫回該選通的主 CPLD,并輸出升級失敗信息。S303 處理器采用該用于升級的CPLD文件,對主CPLD對應(yīng)的待升級文件進(jìn)行升 級,處理器讀取主CPLD升級后文件,并對主CPLD升級后文件進(jìn)行校驗,確定是否通過校驗,當(dāng)校驗通過時,進(jìn)行步驟S209,否則,進(jìn)行步驟S301。在本發(fā)明實施例中當(dāng)業(yè)務(wù)單板啟動成功時,并且選通的主CPLD重啟成功時,該處理器通過該選通的主CPLD完成啟動配置,并且為了避免從CPLD完成對處理器的啟動配置, 主CPLD可以向從CPLD發(fā)送主CPLD啟動成功的信息。處理器可以進(jìn)一步校驗主CPLD是否升級成功,在本發(fā)明實施例中處理器可以通 過檢測主CPLD升級后的版本信息,確定主CPLD升級是否成功。由于每個業(yè)務(wù)單板的版本信 息在寄存器中存在對應(yīng)的唯一標(biāo)識信息,在檢測主CPLD升級后的版本信息時,根據(jù)讀取該 業(yè)務(wù)單板對應(yīng)的唯一標(biāo)識信息,根據(jù)該標(biāo)識信息判斷該選通的主CPLD升級是否成功。當(dāng)處 理器判斷主CPLD升級失敗時,處理器將保存的主CPLD對應(yīng)的待升級文件重新寫入主CPLD, 使系統(tǒng)恢復(fù)升級前的狀態(tài)。當(dāng)處理器判斷主CPLD升級成功時,處理器采用獲取的用于升級 的CPLD文件,對從CPLD對應(yīng)的待升級文件進(jìn)行升級,并且,對從CPLD進(jìn)行升級的過程與對 主CPLD進(jìn)行升級的過程相同。圖4為本發(fā)明實施例提供的CPLD在線升級過程的詳細(xì)描述,該過程包括S401 業(yè)務(wù)單板上的處理器接收到CPLD的升級命令后,獲取用于升級的CPLD文 件。S402 處理器對獲取的用于升級的CPLD文件進(jìn)行校驗,判斷該用于升級的CPLD文 件的信息是否通過校驗,當(dāng)校驗通過時,進(jìn)行步驟S403,否則,進(jìn)行步驟S413。S403 處理器模擬CPLD的JTAG下載接口,并且通過JTAG選通器選通進(jìn)行升級的 主 CPLD 的 JTAG 接 口。S404 處理器根據(jù)模擬的JTAG下載接口通過選通的主CPLD的JTAG接口,獲取主 CPLD的器件型號信息,并獲取該用于升級的CPLD文件的器件型號信息。S405 處理器判斷獲取的器件型號信息是否匹配一致,當(dāng)匹配一致時,進(jìn)行步驟 S406,否則,進(jìn)行步驟S414。S406 處理器保持主CPLD被選通,通過主CPLD的JTAG接口讀取該主CPLD對應(yīng)的 待升級文件,并將讀取的該對應(yīng)的待升級文件保存。S407 處理器通過該選通的主CPLD的JTAG接口,采用獲取的用于升級的CPLD文 件,對主CPLD對應(yīng)的待升級文件進(jìn)行升級。S408 處理器通過JTAG接口讀取主CPLD對應(yīng)的升級后的文件,并對該主CPLD對 應(yīng)的升級后的文件進(jìn)行校驗,判斷該主CPLD對應(yīng)的升級后的文件的信息是否正確,當(dāng)判斷 正確時,進(jìn)行步驟S409,否則,進(jìn)行步驟S413。S409 業(yè)務(wù)單板重啟,當(dāng)主CPLD重啟成功時,進(jìn)行步驟S410,否則,進(jìn)行步驟S412。S410 主CPLD重啟成功,處理器通過主CPLD完成對自身的啟動配置,并且主CPLD 向從CPLD發(fā)送信息,通知該從CPLD主CPLD升級成功。主CPLD重啟成功時向從CPLD發(fā)送低電平有效信號master_cpld_ok#信號,通知 從CPLD主CPLD重啟成功。S411 處理器正常啟動后,檢測該主CPLD升級后的版本信息,判斷該主CPLD是否 升級成功,當(dāng)判斷所述CPLD升級成功時,采用該用于升級的CPLD文件,對從CPLD對應(yīng)的待 升級文件進(jìn)行升級。S412 主CPLD重啟不成功,處理器通過從CPLD完成對自身的啟動配置,并且從CPLD向處理器發(fā)送主CPLD升級失敗信息,處理器將保存的升級前的該主CPLD對應(yīng)的待升 級文件寫入該選通的主CPLD。由于主CPLD重啟失敗,因此主CPLD不能向從CPLD發(fā)送低電平有效信息,因此從 CPLD判斷主CPLD升級失敗,從CPLD完成對處理器的啟動配置。并且從CPLD可以向處理器 發(fā)送主CPLD升級失敗的通知信息,例如可以通過發(fā)送中斷信號Slaver_Cpld_int#信號通 知處理器主CPLD升級失敗。S413 處理器將保存的升級前的該主CPLD對應(yīng)的待升級文件寫入該選通的主 CPLD,并輸出升級失敗信息。S414 處理器判斷升級失敗。在本發(fā)明實施例中由于主CPLD在啟動正常時可以完成對處理器的啟動配置,在 本發(fā)明實施例通過圖5A所示詳細(xì)說明對從CPLD進(jìn)行升級的過程,該過程包括以下步驟S501 業(yè)務(wù)單板上的處理器接收到CPLD的升級命令后,獲取用于升級的CPLD文 件。S502 處理器對獲取的用于升級的CPLD文件進(jìn)行校驗,判斷該用于升級的CPLD文 件的信息是否正確,當(dāng)校驗通過時,進(jìn)行步驟S503,否則,進(jìn)行步驟S512。S503 處理器模擬CPLD的JTAG下載接口,并且通過JTAG選通器選通進(jìn)行升級的 從 CPLD 的 JTAG 接 口。S504 處理器根據(jù)模擬的JTAG下載接口通過選通的從CPLD的JTAG接口,獲取從 CPLD的器件型號信息,并獲取該用于升級的CPLD文件的器件型號信息。S505 處理器判斷獲取的器件型號信息是否匹配一致,當(dāng)匹配一致時,進(jìn)行步驟 S506,否則,進(jìn)行步驟S512。 S506 處理器保持從CPLD被選通,通過從CPLD的JTAG接口讀取從CPLD對應(yīng)的待 升級文件,并將讀取的該對應(yīng)的待升級文件保存。S507 處理器通過該選通的從CPLD的JTAG接口,采用獲取的用于升級的CPLD文 件,對從CPLD對應(yīng)的待升級文件進(jìn)行升級。S508 處理器通過JTAG接口讀取從CPLD升級后文件,并對該從CPLD升級后文件 進(jìn)行校驗,判斷該從CPLD升級后文件的信息是否正確,當(dāng)判斷正確時,進(jìn)行步驟S509,否 則,進(jìn)行步驟S510。S509 業(yè)務(wù)單板重啟,主CPLD完成對處理器的啟動配置,主CPLD根據(jù)從CPLD發(fā)送 的信息,確定該從CPLD是否重啟成功時,當(dāng)該從CPLD重啟不成功時,進(jìn)行步驟S510,當(dāng)該從 CPLD重啟成功時,進(jìn)行步驟S511。由于在本發(fā)明實施例中在主CPLD正常時,由主CPLD完成對處理器的啟動配置,當(dāng) 從CPLD重啟成功時,該從CPLD會向主CPLD發(fā)送信息,從而使主CPLD確定該從CPLD是否 重啟成功。例如從CPLD輸出SlaVer_Cpld_ok#信號為低電平,表明從CPLD升級成功;若 Slaver_cpld_ok#信號為高電平表明從CPLD升級失敗。S510 處理器將保存的升級前的從CPLD對應(yīng)的待升級文件寫入從CPLD,并輸出升 級失敗信息。S511 從CPLD升級成功,該CPLD升級過程結(jié)束。S512 處理器判斷升級失敗。
在本發(fā)明實施例中由于之前先對主CPLD進(jìn)行升級,并且對獲取的用于升級的 CPLD文件進(jìn)行了校驗,因此在上述實施方式中可以省略步驟S501和S502,從而提高CPLD 在線升級的效率。圖5B為本發(fā)明實施例提供的處理器CPU、選通器、主CPLD和從CPLD的原理圖。在 本發(fā)明實施例中處理器可以在主CPLD和從CPLD之間通過JTAG選通器選通。表1為處理器GPI0_0 5的定義,在該表1中定義了在GPI0_4時,在線升級信號 為低電平有效信號maSter_Cpld_CS#信號,該低電平有效信號為主CPLD的JTAG接口選通 的信號,在GPI0_5時,在線升級信號為低電平有效信號SlaVer_Cpld_CS#信號,該低電平有 效信號為從CPLD的JTAG接口選通的信號。具體表1如下所示 表1當(dāng)處理器對主CPLD進(jìn)行升級的過程中,當(dāng)未選通任何GPLD時,處理器可以不對 GPI0進(jìn)行控制,該GPI0_0 5的輸出為高阻狀態(tài)。當(dāng)處理器對主CPLD進(jìn)行升級時,該處 理器控制GPI0_4的在線升級信號maSter_Cpld_CS#信號為低電平。處理器對在線升級信 號SlaVer_Cpld_CSlHf號不做控制,保持高阻態(tài)。同時根據(jù)圖5所示的原理圖,在處理器的 外部對SlaVer_Cpld_CSlHf號上拉,從而該信號為高電平,此時選通器選中的為主CPLD的 JTAG 接口。號還連接到從CPLD,從而可以使從CPLD檢測該master_cpld_ cs#信號的狀態(tài),當(dāng)該master_cpld_cs#信號為低電平時,表明主CPLD處于根據(jù)用于升級的 CPLD文件對該對應(yīng)的待升級文件進(jìn)行升級的狀態(tài),此時從CPLD屏蔽Slaver_Cpld_int#信 號的輸出,當(dāng)從CPLD檢測該master_cpld_cs#信號為高電平,則表明主CPLD并非處于根據(jù) 用于升級的CPLD文件對該對應(yīng)的待升級文件進(jìn)行升級的狀態(tài),則從CPLD可以控制slaves cpld_int#信號的輸出。主CPLD根據(jù)用于升級的CPLD文件對該對應(yīng)的待升級文件進(jìn)行升級的動作結(jié)束并 重啟后,系統(tǒng)默認(rèn)由主CPLD對處理器完成啟動配置。若處理器啟動成功,處理器在設(shè)定時 間內(nèi),例如0. 5秒內(nèi)向主CPLD的內(nèi)置寄存器“Cpu_Start_0k寄存器”寫入1,表明處理器啟動0K。主CPLD判斷“Cpu_start_ok寄存器”被置1后控制Master_cpld_ok#信號為低電 平,從CPLD可以根據(jù)MaSter_Cpld_ok#信號的輸出結(jié)果判斷主CPLD是否啟動成功。從CPLD包含一個計時器,該計時器的時間可以根據(jù)要求設(shè)定,例如可以為1秒, 在自身重啟后開始計數(shù),當(dāng)在該計時器的計時時間到來時對MaSter_Cpld_0k#信號進(jìn)行判 斷,若MaSter_Cpld_ok#信號為低電平,則表明主CPLD啟動成功,若Master_Cpld_0k#信號 為高電平表明主CPLD升級失敗,則由從CPLD對CPU進(jìn)行復(fù)位并完成CPU的啟動配置。同 時從CPLD送出Slave_cpld_int#信號為低電平,將該信號發(fā)送至CPU的IRQ0接口,CPU啟 動完成后響應(yīng)IRQ0中斷,從而確認(rèn)主CPLD升級失敗,此時CPU獲取升級前的主CPLD對應(yīng) 待升級文件,采用該升級前的對應(yīng)待升級文件對主CPLD進(jìn)行恢復(fù)。在從CPLD進(jìn)行升級的過程中,由主CPLD監(jiān)控從CPLD的升級狀態(tài),該具體過程如 下在處理器對從CPLD進(jìn)行升級時,CPU控制31肌吐_叩1(1_(^#信號為低電平, Master_cpld_cs#信號不作控制保持高阻狀態(tài),由于處理器外部對MaSter_Cpld_CS#信號 上拉,從而該信號為高電平,因此選通器選中的是從CPLD的JTAG接口。Slaver_cpld_cs#信號還連接至主CPLD,從而可以使主CPLD檢測Slaver_cpld_ cs#信號的狀態(tài),若該Slaver_cpld_cs#信號為低電平表示從CPLD處于根據(jù)用于升級的 CPLD文件對該對應(yīng)的待升級文件進(jìn)行升級的狀態(tài),則此時主CPLD屏蔽MaSter_Cpld_int# 信號的輸出;若SlaVer_Cpld_CS#信號為高電平則表示從CPLD并非處于根據(jù)用于升級的 CPLD文件對該對應(yīng)的待升級文件進(jìn)行升級的狀態(tài),則主CPLD可以控制MaSter_Cpld_int# 信號的輸出。從CPLD根據(jù)用于升級的CPLD文件對該對應(yīng)的待升級文件進(jìn)行升級的動作結(jié)束并 重啟后,由主CPLD負(fù)責(zé)CPU的啟動配置。若從CPLD升級成功,其從CPLD輸出SlaVer_cpld_ ok#信號為低電平,表明從CPLD升級成功;若SlaVer_Cpld_ok#信號為高電平表明從CPLD 升級失?。籗laVer_Cpld_ok#信號連接到主CPLD,主CPLD在檢測到從CPLD升級失敗后送出 Master_cpld_int#信號為低電平,將該信號發(fā)送至CPU的IRQ1接口,CPU啟動完成后響應(yīng) IRQ1中斷,從而確定從CPLD升級失敗,此時CPU獲取升級前的從CPLD對應(yīng)的待升級文件, 采用該升級前的對應(yīng)待升級文件對從CPLD進(jìn)行恢復(fù)。在本發(fā)明實施例中的從CPLD是相對處理器的啟動配置而言其為從關(guān)系,該從 CPLD還具有不同于主CPLD的其它業(yè)務(wù)功能。在本發(fā)明實施例中從CPLD可以采用至少一 個,例如可以為2個或者多個等,從而更加能夠保證在CPLD升級錯誤或升級失敗時,保證通 信設(shè)備的可靠性和穩(wěn)定性。圖6為本發(fā)明實施例提供的CPLD在線升級的裝置結(jié)構(gòu)示意圖,該裝置包括文件升級模塊61,用于獲取用于升級的復(fù)雜可編程邏輯器件CPLD文件,根據(jù)所述 CPLD文件對業(yè)務(wù)單板上的主CPLD對應(yīng)的待升級文件進(jìn)行升級,并重啟業(yè)務(wù)單板;配置完成模塊62,用于在所述業(yè)務(wù)單板的啟動過程中所述主CPLD重啟不成功時, 通過從CPLD完成啟動配置。所述裝置還包括寫入模塊63,用于在所述主CPLD升級失敗時,接收從CPLD發(fā)送的所述主CPLD升 級失敗的信息,并將保存的升級前的所述主CPLD對應(yīng)的待升級文件重新寫入所述主CPLD。
所述文件升級模塊61包括匹配單元611,用于根據(jù)獲取的用于升級的CPLD文件中的器件型號信息,與讀取的所述主CPLD的器件型號信息進(jìn)行匹配;文件升級單元612,用于當(dāng)確定匹配一致時,采用獲取的所述用于升級的CPLD文 件對所述主CPLD對應(yīng)的待升級文件進(jìn)行升級。所述文件升級模塊61還包括存儲單元613,用于在文件升級單元確定所述用于升級的CPLD文件中的器件型號 信息,與讀取的所述主CPLD的器件型號信息匹配一致時,讀取并保存所述主CPLD對應(yīng)的待 升級文件。所述裝置還包括校驗?zāi)K64,用于讀取所述主CPLD對應(yīng)的升級后的文件,并對所述主CPLD對應(yīng)的 升級后的文件進(jìn)行校驗,當(dāng)校驗未通過時,所述處理器根據(jù)保存的升級次數(shù)信息,采用獲取 的所述用于升級的CPLD文件對所述主CPLD對應(yīng)的待升級文件進(jìn)行對應(yīng)次數(shù)的升級,并對 每次升級后的主CPLD對應(yīng)的升級后的文件進(jìn)行校驗,當(dāng)每次都校驗未通過時,將保存的升 級前的所述主CPLD對應(yīng)的待升級文件寫入所述主CPLD,當(dāng)校驗通過時進(jìn)行業(yè)務(wù)單板的重 啟o所述裝置還包括檢測模塊65,用于當(dāng)所述主CPLD在業(yè)務(wù)單板的重啟過程中重啟成功時,通過主 CPLD完成啟動配置,檢測所述主CPLD對應(yīng)的升級后的文件的版本信息,確定所述主CPLD升 級是否成功,當(dāng)所述主CPLD升級不成功時,所述處理器將保存的升級前的所述主CPLD對應(yīng) 的待升級文件寫入所述主CPLD,當(dāng)所述主CPLD升級成功時,對從CPLD進(jìn)行在線升級。所述檢測模塊65在對從CPLD進(jìn)行在線升級時具體包括根據(jù)獲取的用于升級的CPLD文件,對從CPLD對應(yīng)的待升級文件進(jìn)行升級,并重啟 業(yè)務(wù)單板,通過主CPLD對完成啟動配置,并確定從CPLD是否重啟成功,當(dāng)從CPLD重啟不成 功時,處理器將保存的升級前的所述從CPLD對應(yīng)的待升級文件寫入所述從CPLD。本發(fā)明實施例提供了一種CPLD的在線升級方法及裝置,該方法當(dāng)處理器獲取了 用于升級的CPLD文件時,采用該獲取的用于升級的CPLD文件對主CPLD對應(yīng)的待升級文件 進(jìn)行升級并重啟業(yè)務(wù)單板,并且在業(yè)務(wù)單板的啟動過程中主CPLD重啟不成功時,處理器通 過從CPLD完成啟動配置,由于本發(fā)明實施例采用主從CPLD配合完成CPLD的在線升級,因 此有效地避免了在CPLD在線升級過程中,由于升級錯誤或升級失敗而影響通信設(shè)備的可 靠性和穩(wěn)定性的問題。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
一種復(fù)雜可編程邏輯器件的在線升級方法,其特征在于,包括業(yè)務(wù)單板的處理器獲取用于升級的復(fù)雜可編程邏輯器件CPLD文件,根據(jù)該文件,對業(yè)務(wù)單板上的主CPLD對應(yīng)的待升級文件進(jìn)行升級并重啟業(yè)務(wù)單板;當(dāng)所述主CPLD在業(yè)務(wù)單板的重啟過程中重啟不成功時,所述處理器通過業(yè)務(wù)單板上的從CPLD完成對自身的啟動配置。
2.如權(quán)利要求1所述的方法,其特征在于,所述處理器通過業(yè)務(wù)單板上的從CPLD完成 對自身的啟動配置之后,所述方法還包括所述處理器接收所述從CPLD發(fā)送的所述主CPLD升級失敗的信息,并將保存的升級前 的所述主CPLD對應(yīng)的待升級文件寫入所述主CPLD。
3.如權(quán)利要求1所述的方法,其特征在于,所述對業(yè)務(wù)單板上的主CPLD對應(yīng)的待升級 文件進(jìn)行升級包括所述處理器根據(jù)獲取的用于升級的CPLD文件中的器件型號信息,與讀取的所述主 CPLD的器件型號信息進(jìn)行匹配;當(dāng)匹配一致時,采用獲取的所述用于升級的CPLD文件對所述主CPLD對應(yīng)的待升級文 件進(jìn)行升級。
4.如權(quán)利要求3所述的方法,其特征在于,所述處理器當(dāng)確定所述用于升級的CPLD文 件中的器件型號信息,與讀取的所述主CPLD的器件型號信息匹配一致時,讀取并保存所述 主CPLD對應(yīng)的待升級文件。
5.如權(quán)利要求4所述的方法,其特征在于,所述對該業(yè)務(wù)單板上的主CPLD對應(yīng)的待升 級文件進(jìn)行升級后,所述業(yè)務(wù)單板重啟之前,所述方法進(jìn)一步包括所述處理器讀取所述主CPLD對應(yīng)的升級后的文件,并對所述主CPLD對應(yīng)的升級后的 文件進(jìn)行校驗,并確認(rèn)校驗是否通過; 當(dāng)校驗通過時,進(jìn)行后續(xù)步驟。
6.如權(quán)利要求5所述的方法,其特征在于,當(dāng)確認(rèn)校驗未通過時,所述方法還包括 所述處理器根據(jù)保存的升級次數(shù)信息,采用獲取的所述用于升級的CPLD文件對所述主CPLD對應(yīng)的待升級文件進(jìn)行對應(yīng)次數(shù)的升級,并對每次升級后的主CPLD對應(yīng)的升級后 的文件進(jìn)行校驗,當(dāng)每次都校驗未通過時,將保存的升級前的所述主CPLD對應(yīng)的待升級文 件寫入所述主CPLD。
7.如權(quán)利要求2所述的方法,其特征在于,所述方法進(jìn)一步包括當(dāng)所述主CPLD在業(yè)務(wù)單板的重啟過程中重啟成功時,所述處理器通過主CPLD完成對 自身的啟動配置;所述處理器檢測所述主CPLD對應(yīng)的升級后的文件的版本信息,確定所述主CPLD升級 是否成功;當(dāng)所述主CPLD升級不成功時,所述處理器將保存的升級前的所述主CPLD對應(yīng)的待升 級文件寫入所述主CPLD ;當(dāng)所述主CPLD升級成功時,所述處理器對從CPLD進(jìn)行在線升級。
8.如權(quán)利要求7所述的方法,其特征在于,所述處理器對從CPLD進(jìn)行在線升級包括 所述處理器根據(jù)獲取的用于升級的CPLD文件,對從CPLD對應(yīng)的待升級文件進(jìn)行升級,并重啟業(yè)務(wù)單板;處理器通過主CPLD完成對自身的啟動配置,并確定從CPLD是否重啟成功;當(dāng)從CPLD重啟不成功時,處理器將保存的升級前的所述從CPLD對應(yīng)的待升級文件寫 入所述從CPLD。
9.一種復(fù)雜可編程邏輯器件的在線升級裝置,其特征在于,所述裝置包括文件升級模塊,用于獲取用于升級的復(fù)雜可編程邏輯器件CPLD文件,根據(jù)所述CPLD文 件對業(yè)務(wù)單板上的主CPLD對應(yīng)的待升級文件進(jìn)行升級,并重啟業(yè)務(wù)單板;配置完成模塊,用于在所述業(yè)務(wù)單板的啟動過程中所述主CPLD重啟不成功時,通過從 CPLD完成啟動配置。
10.如權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括寫入模塊,用于在所述主CPLD升級失敗時,接收從CPLD發(fā)送的所述主CPLD升級失敗 的信息,并將保存的升級前的所述主CPLD對應(yīng)的待升級文件重新寫入所述主CPLD。
11.如權(quán)利要求9所述的裝置,其特征在于,所述文件升級模塊包括匹配單元,用于根據(jù)獲取的用于升級的CPLD文件中的器件型號信息,與讀取的所述主 CPLD的器件型號信息進(jìn)行匹配;文件升級單元,用于當(dāng)確定匹配一致時,采用獲取的所述用于升級的CPLD文件對所述 主CPLD對應(yīng)的待升級文件進(jìn)行升級。
12.如權(quán)利要求11所述的裝置,其特征在于,所述文件升級模塊還包括存儲單元,用于在文件升級單元確定所述用于升級的CPLD文件中的器件型號信息,與 讀取的所述主CPLD的器件型號信息匹配一致時,讀取并保存所述主CPLD對應(yīng)的待升級文 件。
13.如權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括校驗?zāi)K,用于讀取所述主CPLD對應(yīng)的升級后的文件,并對所述主CPLD對應(yīng)的升級后 的文件進(jìn)行校驗,當(dāng)校驗未通過時,所述處理器根據(jù)保存的升級次數(shù)信息,采用獲取的所述 用于升級的CPLD文件對所述主CPLD對應(yīng)的待升級文件進(jìn)行對應(yīng)次數(shù)的升級,并對每次升 級后的主CPLD對應(yīng)的升級后的文件進(jìn)行校驗,當(dāng)每次都校驗未通過時,將保存的升級前的 所述主CPLD對應(yīng)的待升級文件寫入所述主CPLD,當(dāng)校驗通過時進(jìn)行業(yè)務(wù)單板的重啟。
14.如權(quán)利要求10所述的裝置,其特征在于,所述裝置還包括檢測模塊,用于當(dāng)所述主CPLD在業(yè)務(wù)單板的重啟過程中重啟成功時,通過主CPLD完成 啟動配置,檢測所述主CPLD對應(yīng)的升級后的文件的版本信息,確定所述主CPLD升級是否成 功,當(dāng)所述主CPLD升級不成功時,所述處理器將保存的升級前的所述主CPLD對應(yīng)的待升級 文件寫入所述主CPLD,當(dāng)所述主CPLD升級成功時,對從CPLD進(jìn)行在線升級。
15.如權(quán)利要求14所述的裝置,其特征在于,所述檢測模塊在對從CPLD進(jìn)行在線升級 時具體包括根據(jù)獲取的用于升級的CPLD文件,對從CPLD對應(yīng)的待升級文件進(jìn)行升級,并 重啟業(yè)務(wù)單板,通過主CPLD對完成啟動配置,并確定從CPLD是否重啟成功,當(dāng)從CPLD重啟 不成功時,處理器將保存的升級前的所述從CPLD對應(yīng)的待升級文件寫入所述從CPLD。
全文摘要
本發(fā)明公開了一種復(fù)雜可編程邏輯器件的在線升級方法,用以解決現(xiàn)有技術(shù)中因CPLD的升級錯誤或升級失敗而影響通信設(shè)備的可靠性和穩(wěn)定性的問題。該方法采用該獲取的用于升級的CPLD文件對主CPLD對應(yīng)的待升級文件進(jìn)行升級并重啟業(yè)務(wù)單板,并且在業(yè)務(wù)單板的啟動過程中主CPLD重啟不成功時,處理器通過從CPLD完成啟動配置。本發(fā)明實施例還提供了一種CPLD的在線升級裝置。由于本發(fā)明實施例采用主從CPLD配合完成CPLD的在線升級,因此有效地避免了在CPLD在線升級過程中,由于升級錯誤或升級失敗而影響通信設(shè)備的可靠性和穩(wěn)定性的問題。
文檔編號G06F9/445GK101853171SQ20101018207
公開日2010年10月6日 申請日期2010年5月24日 優(yōu)先權(quán)日2010年5月24日
發(fā)明者李明緯 申請人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司