本發(fā)明涉及電子領(lǐng)域,具體而言,涉及一種現(xiàn)場可編程門陣列的升級方法及裝置。
背景技術(shù):
隨著系統(tǒng)的應(yīng)用復(fù)雜程度的增加,在一個(gè)系統(tǒng)中引入多片現(xiàn)場可編程門陣列(Field Programmable Gate Array,簡稱為FPGA)成為必然趨勢,多片F(xiàn)PGA分別承擔(dān)不同的任務(wù),以安防行業(yè)為例,隨著安防行業(yè)的日益興起,安防應(yīng)用場景也由點(diǎn)及面,從單一到集成,從而對安防設(shè)備的功能集成度和復(fù)雜度要求越來越高,因此很多設(shè)備上集成了幾片甚至數(shù)十片F(xiàn)PGA?;贔PGA設(shè)計(jì)的產(chǎn)品最大的問題是系統(tǒng)的維護(hù)和升級,在FPGA系統(tǒng)升級時(shí)都必須重新連接下載電纜或使用編程器對存儲器件進(jìn)行燒寫,這些硬件上的操作,不方便軟件人員及用戶的使用。此外,對于集成了多片F(xiàn)PGA的設(shè)備,需要花費(fèi)大量的時(shí)間才能將所有的FPGA升級完成,在僅需對該多片F(xiàn)PGA中的部分FPGA進(jìn)行升級時(shí),同樣需要對設(shè)備上所有的FPGA都進(jìn)行升級,這種升級方式會影響設(shè)備的正常功能或?qū)е聵I(yè)務(wù)時(shí)間的中斷。
目前最常用FPGA升級方法有兩種:第一種FPGA升級方法是每片F(xiàn)PGA均對應(yīng)一個(gè)閃存(俗稱Flash),分別將各個(gè)FPGA的升級程序放置在其相應(yīng)的Flash中進(jìn)行管理,每次升級僅對相應(yīng)的Flash進(jìn)行操作即可,但這種FPGA升級方法會造成每次升級的時(shí)間都很長,而且當(dāng)產(chǎn)線生產(chǎn)相應(yīng)產(chǎn)品時(shí),也會大大降低單位時(shí)間內(nèi)的產(chǎn)量(因?yàn)樯a(chǎn)時(shí)需要分別對每個(gè)Flash進(jìn)行操作);第二種FPGA升級方法是通過FPGA之外的處理器(例如,CPU)對FPGA升級程序進(jìn)行管理,具體為根據(jù)當(dāng)前系統(tǒng)中需要升級的FPGA的文件數(shù)和文件大小預(yù)先對緩存FPGA升級程序的存儲區(qū)進(jìn)行空間分配,為保證每個(gè)文件空間足夠用,分配時(shí)需要預(yù)留足夠的空間,造成很大一部分空間的浪費(fèi),另外對存儲器進(jìn)行分區(qū),增加了對各個(gè)存儲區(qū)的管理難度。
考慮到產(chǎn)率和產(chǎn)品的維護(hù),通常情況一般不會采用第一種FPGA升級方法,而第二種FPGA升級方法也存在以下缺陷:1、不適用于無外部控制單元配合的FPGA系統(tǒng),例如,光端機(jī)產(chǎn)品,因?yàn)樵诠舛藱C(jī)設(shè)備上一般除了FPGA之外,不再存在額外的CPU,因此在光端機(jī)產(chǎn)品上的FPGA更適合設(shè)置成主動加載方式,將存儲FPGA配置文件的Flash直接與FPGA相連,F(xiàn)lash不適合掛接在主板的復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,簡稱為CPLD)或CPU上;2、對于FPGA配置文件的升級,可靠性不高,如果升級有問題版本的FPGA程序或升級過程中出現(xiàn)異常,比如斷電,容易造成FPGA在線升級失敗,導(dǎo)致系統(tǒng)相關(guān)功能異常。
針對相關(guān)技術(shù)中在無外部控制單元配合的條件下多片現(xiàn)場可編程門陣列升級效率較低的技術(shù)問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種現(xiàn)場可編程門陣列的升級方法及裝置,以至少解決相關(guān)技術(shù)中在無外部控制單元配合的條件下多片現(xiàn)場可編程門陣列升級效率較低的技術(shù)問題。
根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種現(xiàn)場可編程門陣列的升級方法,包括:多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件,其中,存儲器中預(yù)先存儲有多片現(xiàn)場可編程門陣列對應(yīng)的升級文件;以及多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級。
進(jìn)一步地,在多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級之后,該方法還包括:分別判斷多片現(xiàn)場可編程門陣列升級是否異常;以及在判斷出多片現(xiàn)場可編程門陣列中存在升級異常的現(xiàn)場可編程門陣列時(shí),通過現(xiàn)場可編程門陣列對應(yīng)的備份文件啟動升級異常的現(xiàn)場可編程門陣列。
進(jìn)一步地,在多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件之前,該方法還包括:將多片現(xiàn)場可編程門陣列對應(yīng)的升級文件進(jìn)行合并,得到升級文件包,其中,多片現(xiàn)場可編程門陣列根據(jù)升級文件包進(jìn)行升級,和/或?qū)⒍嗥F(xiàn)場可編程門陣列對應(yīng)的備份文件進(jìn)行合并,得到備份文件包,其中,通過備份文件包啟動升級異常的現(xiàn)場可編程門陣列。
進(jìn)一步地,分別判斷多片現(xiàn)場可編程門陣列升級是否異常包括:分別檢測多片現(xiàn)場可編程門陣列的升級狀態(tài);分別判斷多片現(xiàn)場可編程門陣列的升級狀態(tài)是否為第一值或第二值;將多片現(xiàn)場可編程門陣列中升級狀態(tài)為第一值的現(xiàn)場可編程門陣列確定為升級異常的現(xiàn)場可編程門陣列;以及將多片現(xiàn)場可編程門陣列中升級狀態(tài)為第二值的現(xiàn)場可編程門陣列確定為升級正常的現(xiàn)場可編程門陣列。
進(jìn)一步地,多片現(xiàn)場可編程門陣列對應(yīng)的升級文件和備份文件存儲于同一存儲器中,其中,多片現(xiàn)場可編程門陣列對應(yīng)的升級文件存儲于存儲器的第一存儲區(qū),多片現(xiàn)場可編程門陣列對應(yīng)的備份文件存儲于存儲器的第二存儲區(qū)。
進(jìn)一步地,備份文件包括預(yù)設(shè)配置文件或現(xiàn)場可編程門陣列前一次成功升級的升級文件。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種現(xiàn)場可編程門陣列的升級裝置,包括:讀取單元,用于使多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件,其中,存儲器中預(yù)先存儲有多片現(xiàn)場可編程門陣列對應(yīng)的升級文件;以及升級單元,用于使多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級。
進(jìn)一步地,該裝置還包括:判斷單元,用于分別判斷多片現(xiàn)場可編程門陣列升級是否異常;以及啟動單元,用于在判斷出多片現(xiàn)場可編程門陣列中存在升級異常的現(xiàn)場可編程門陣列時(shí),通過現(xiàn)場可編程門陣列對應(yīng)的備份文件啟動升級異常的現(xiàn)場可編程門陣列。
進(jìn)一步地,在多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件之前,該裝置還包括:合并單元,用于將多片現(xiàn)場可編程門陣列對應(yīng)的升級文件進(jìn)行合并,得到升級文件包,其中,多片現(xiàn)場可編程門陣列根據(jù)升級文件包進(jìn)行升級,和/或?qū)⒍嗥F(xiàn)場可編程門陣列對應(yīng)的備份文件進(jìn)行合并,得到備份文件包,其中,通過備份文件包啟動升級異常的現(xiàn)場可編程門陣列。
進(jìn)一步地,判斷單元包括:檢測單元,用于分別檢測多片現(xiàn)場可編程門陣列的升級狀態(tài);判斷單元,用于分別判斷多片現(xiàn)場可編程門陣列的升級狀態(tài)是否為第一值或第二值;以及確定模塊,用于將多片現(xiàn)場可編程門陣列中升級狀態(tài)為第一值的現(xiàn)場可編程門陣列確定為升級異常的現(xiàn)場可編程門陣列,將多片現(xiàn)場可編程門陣列中升級狀態(tài)為第二值的現(xiàn)場可編程門陣列確定為升級正常的現(xiàn)場可編程門陣列。
在本發(fā)明實(shí)施例中,采用多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件,其中,存儲器中預(yù)先存儲有多片現(xiàn)場可編程門陣列對應(yīng)的升級文件;以及多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級,通過將多片現(xiàn)場可編程門陣列對應(yīng)的升級文件均存儲于同一存儲器中,并通過多片現(xiàn)場可編程門陣列分別從存儲器中加載對應(yīng)的升級文件并進(jìn)行升級,實(shí)現(xiàn)了在沒有外部控制單元配合下多片現(xiàn)場可編程門陣列快速升級,進(jìn)而解決了相關(guān)技術(shù)中在無外部控制單元配合的條件下多片現(xiàn)場可編程門陣列升級效率較低的技術(shù)問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本實(shí)施例的現(xiàn)場可編程門陣列的升級方法的流程圖;
圖2是根據(jù)本實(shí)施例的多片現(xiàn)場可編程門陣列的升級文件存儲示意圖;
圖3是根據(jù)本實(shí)施例的多片現(xiàn)場可編程門陣列與同一存儲器連接示意圖;
圖4是根據(jù)本實(shí)施例的多片現(xiàn)場可編程門陣列的配置文件合并示意圖;
圖5是根據(jù)本實(shí)施例的現(xiàn)場可編程門陣列的多啟動機(jī)制實(shí)現(xiàn)升級的示意圖;
圖6是根據(jù)本實(shí)施例的位流在外部存儲器中位置分布示意圖;以及
圖7是根據(jù)本實(shí)施例的現(xiàn)場可編程門陣列的升級裝置的示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
根據(jù)本實(shí)施例,提供了一種現(xiàn)場可編程門陣列的升級方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖1是根據(jù)本實(shí)施例的現(xiàn)場可編程門陣列的升級方法的流程圖,如圖1所示,該方法包括如下步驟:
步驟S102,多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件,其中,存儲器中預(yù)先存儲有多片現(xiàn)場可編程門陣列對應(yīng)的升級文件。
現(xiàn)場可編程門陣列(Field Programmable Gate Array,簡稱為FPGA)是在可編程陣列邏輯(Programmable Array Logic,簡稱為PAL)、通用陣列邏輯(Generic Array Logic,簡稱為GAL)、復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,簡稱為CPLD)等可編程器件的基礎(chǔ)上發(fā)展而來。FPGA作為專用集成電路(Application Specific Integrated Circuit,簡稱為ASIC)領(lǐng)域中的一種半定制電路,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。
本實(shí)施例的現(xiàn)場可編程門陣列對應(yīng)的升級文件是指當(dāng)前現(xiàn)場可編程門陣列最新的配置文件,F(xiàn)PGA對應(yīng)的升級文件可以是FPGA的升級程序,F(xiàn)PGA通過加載其升級程序即可以進(jìn)行升級。具體地,為了提高FPGA升級的效率,可以預(yù)先將多片F(xiàn)PGA的升級文件存儲于存儲器中,例如,可以預(yù)先將多片F(xiàn)PGA的升級文件存儲于外部閃存(俗稱Flash)中,多片F(xiàn)PGA升級時(shí)可以直接從外部Flash中讀取對應(yīng)的升級文件進(jìn)行升級。
本實(shí)施例預(yù)先將多片現(xiàn)場可編程門陣列的升級文件存儲于同一存儲器的不同存儲區(qū)。圖2是根據(jù)本實(shí)施例的多片現(xiàn)場可編程門陣列的升級文件存儲示意圖,如圖2所示,F(xiàn)PGA0~FPGAn的升級程序(即升級文件)存儲于同一外部Flash中。
圖3是根據(jù)本實(shí)施例的多片現(xiàn)場可編程門陣列與同一存儲器連接示意圖,如圖3所示,多片現(xiàn)場可編程門陣列(例如,F(xiàn)PGA0,F(xiàn)PGA1)通過菊花鏈方式連接至同一外部串行接口閃存(即SPI Serial Flash,其中,SPI為Serial Peripheral Interface的簡稱),其中,菊花鏈方式是一種簡化的級聯(lián)方式,主要優(yōu)點(diǎn)在于提供集中管理的擴(kuò)展接口,F(xiàn)PGA0采用SPI(Serial Peripheral Interface)配置模式,F(xiàn)PGA1采用從串(Slave Serial)配置模式。需要說明的是,圖3所示的多片現(xiàn)場可編程門陣列與同一存儲器連接方式僅是本發(fā)明的一種可選實(shí)施例。
步驟S104,多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級。
本實(shí)施例中,多片現(xiàn)場可編程門陣列可以通過直接加載對應(yīng)的升級文件進(jìn)行升級。具體地,如圖3所示,以多片現(xiàn)場可編程門陣列包括FPGA0和FPGA1為例對本實(shí)施例進(jìn)行說明。
在對多片現(xiàn)場可編程門陣列進(jìn)行更新時(shí),本實(shí)施例通過FPGA0從外部串行接口閃存中讀取全部FPGA的升級文件,F(xiàn)PGA0獲取其對應(yīng)的升級文件并將其他FPGA的升級文件全部發(fā)送給FPGA1,F(xiàn)PGA0也可以是查找其對應(yīng)的升級文件后將全部FPGA的升級文件發(fā)送給FPGA1,F(xiàn)PGA1獲取其對應(yīng)的升級文件后再將全部FPGA的升級文件發(fā)送給后續(xù)的FPGA,依次類推,直至全部的FPGA都獲取到其對應(yīng)的升級文件并進(jìn)行升級。
本發(fā)明實(shí)施例在進(jìn)行多片現(xiàn)場可編程門陣列升級時(shí),由于是通過多片現(xiàn)場可編程 門陣列自身從存儲器中加載對應(yīng)的升級文件進(jìn)行升級,無需外部的控制單元,此外,本實(shí)施例多片現(xiàn)場可編程門陣列升級可以并行進(jìn)行(例如,多片F(xiàn)PGA全部更新配置文件后再全部啟動),相比于現(xiàn)有技術(shù)中多片現(xiàn)場可編程門陣列對應(yīng)于多片F(xiàn)lash的串行升級方式(即多片F(xiàn)PGA依次更新配置文件并啟動,例如,F(xiàn)PGA1更新配置文件并啟動后,F(xiàn)PGA2再更新配置文件并啟動,依次類推),顯著提高了升級效率,并節(jié)省存儲空間。
本發(fā)明實(shí)施例通過多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件,其中,存儲器中預(yù)先存儲有多片現(xiàn)場可編程門陣列對應(yīng)的升級文件;以及多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級。通過將多片現(xiàn)場可編程門陣列的升級文件均存儲于同一存儲器中,并通過多片現(xiàn)場可編程門陣列分別從存儲器中加載對應(yīng)的升級文件并進(jìn)行升級,實(shí)現(xiàn)了在沒有外部控制單元配合下多片現(xiàn)場可編程門陣列快速升級,進(jìn)而解決了相關(guān)技術(shù)中在無外部控制單元配合的條件下多片現(xiàn)場可編程門陣列升級效率較低的技術(shù)問題。
優(yōu)選地,為了提高多片現(xiàn)場可編程門陣列升級的可靠性,在多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級之后,該方法還包括:分別判斷多片現(xiàn)場可編程門陣列升級是否異常;以及在判斷出多片現(xiàn)場可編程門陣列中存在升級異常的現(xiàn)場可編程門陣列時(shí),通過現(xiàn)場可編程門陣列對應(yīng)的備份文件啟動升級異常的現(xiàn)場可編程門陣列。
具體地,現(xiàn)場可編程門陣列加載升級文件進(jìn)行升級時(shí),升級文件有問題或是升級過程出現(xiàn)異常(例如,斷電)等原因容易造成現(xiàn)場可編程門陣列升級失敗(即升級異常)。本實(shí)施例在多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級后,分別判斷多片現(xiàn)場可編程門陣列升級是否異常。
優(yōu)選地,分別判斷多片現(xiàn)場可編程門陣列升級是否異常包括:分別檢測多片現(xiàn)場可編程門陣列的升級狀態(tài);分別判斷多片現(xiàn)場可編程門陣列的升級狀態(tài)是否為第一值或第二值;將多片現(xiàn)場可編程門陣列中升級狀態(tài)為第一值的現(xiàn)場可編程門陣列確定為升級異常的現(xiàn)場可編程門陣列;以及將多片現(xiàn)場可編程門陣列中升級狀態(tài)為第二值的現(xiàn)場可編程門陣列確定為升級正常的現(xiàn)場可編程門陣列。
本實(shí)施例在多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級后,對現(xiàn)場可編程門陣列升級狀態(tài)進(jìn)行檢測,其中,升級狀態(tài)包括第一值和第二值,例如,第一值為0,第二值為1,如果升級狀態(tài)為第一值,則表示現(xiàn)場可編程門陣列升級異常(即升級失敗),如果升級狀態(tài)為第二值,則表示現(xiàn)場可編程門陣列升級正常(即升級失敗)。
需要說明的是,通常,每片現(xiàn)場可編程門陣列可以加載三次升級文件,如果三次都升級失敗,則通過備份文件重新啟動該現(xiàn)場可編程門陣列。
如果檢測出多片現(xiàn)場可編程門陣列中存在升級異常的現(xiàn)場可編程門陣列,為保證現(xiàn)場可編程門陣列的正常運(yùn)行,以及對下一次升級操作的正確響應(yīng),本實(shí)施例通過現(xiàn)場可編程門陣列對應(yīng)的備份文件重新啟動升級異常的現(xiàn)場可編程門陣列,其中,備份文件包括預(yù)設(shè)配置文件或現(xiàn)場可編程門陣列前一次成功升級的升級文件。具體地,備份文件可以是預(yù)設(shè)配置文件,在現(xiàn)場可編程門陣列升級異常時(shí),通過加載該預(yù)設(shè)配置文件即可實(shí)現(xiàn)該現(xiàn)場可編程門陣列的啟動。
優(yōu)選地,可以在出廠時(shí)將預(yù)設(shè)配置文件燒錄在存儲器中(例如,外部的Flash),從而可以保證現(xiàn)場可編程門陣列正常工作和升級;備份文件也可以是現(xiàn)場可編程門陣列前一次成功升級的升級文件,在每次現(xiàn)場可編程門陣列成功升級后,通過當(dāng)前的升級文件更新備份文件;也可以同時(shí)將預(yù)設(shè)配置文件和現(xiàn)場可編程門陣列前一次成功升級的升級文件存儲于存儲器的不同存儲區(qū),在現(xiàn)場可編程門陣列升級失敗后,先通過現(xiàn)場可編程門陣列前一次成功升級的升級文件重新啟動現(xiàn)場可編程門陣列,如果現(xiàn)場可編程門陣列前一次升級的升級文件重新啟動現(xiàn)場可編程門陣列失敗,再通過預(yù)設(shè)配置文件重新啟動現(xiàn)場可編程門陣列。
優(yōu)選地,可以預(yù)先將備份文件存儲于存儲器(例如,閃存)中,現(xiàn)場可編程門陣列可以從存儲器中直接加載備份文件既可以重新啟動。需要說明的是,備份文件和升級文件可以存儲在同一存儲器中,也可以存儲在不同存儲器中。
優(yōu)選地,為了節(jié)省存儲空間和便于存儲器的管理,本實(shí)施例將多片現(xiàn)場可編程門陣列對應(yīng)的升級文件和備份文件存儲于同一存儲器中,其中,多片現(xiàn)場可編程門陣列對應(yīng)的升級文件存儲于存儲器的第一存儲區(qū),多片現(xiàn)場可編程門陣列對應(yīng)的備份文件存儲于存儲器的第二存儲區(qū),具體地,可以預(yù)先根據(jù)多片現(xiàn)場可編程門陣列的升級文件和備份文件的數(shù)量和大小進(jìn)行存儲區(qū)的空間分配。
如圖2所示,F(xiàn)PGA0~FPGAn的升級程序(即升級文件)和備份程序(即備份文件)均存儲于同一外部Flash中,其中,F(xiàn)PGA0~FPGAn的升級程序依次存儲于Flash的上半?yún)^(qū),F(xiàn)PGA0~FPGAn的備份程序依次存儲于Flash的下半?yún)^(qū)。
優(yōu)選地,為了方便用戶對多片現(xiàn)場可編程門陣列同時(shí)進(jìn)行升級,在多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件之前,該方法還包括:將多片現(xiàn)場可編程門陣列對應(yīng)的升級文件進(jìn)行合并,得到升級文件包,其中,多片現(xiàn)場可編程門陣列根據(jù)升級文件包進(jìn)行升級,和/或?qū)⒍嗥F(xiàn)場可編程門陣列對應(yīng)的備份文件進(jìn)行合 并,得到備份文件包,其中,通過備份文件包啟動升級異常的現(xiàn)場可編程門陣列。
具體地,可以直接通過FPGA開發(fā)工具將多片F(xiàn)PGA的升級文件和/或FPGA的備份文件進(jìn)行合并,例如,通過萊迪思鉆石開發(fā)工具(Lattice Diamond Development Tool)將多片F(xiàn)PGA的升級文件合并成一個(gè)升級文件包,將多片F(xiàn)PGA的備份文件合并成一個(gè)備份文件包,圖4是根據(jù)本實(shí)施例的多片現(xiàn)場可編程門陣列的配置文件合并示意圖,如圖4所示,將FPGA0~FPGAn的升級程序合并成一個(gè)升級程序,將FPGA0~FPGAn的備份程序合并成一個(gè)備份程序。在對多片F(xiàn)PGA進(jìn)行升級時(shí),只需加載該合并得到的升級程序即可實(shí)現(xiàn)對多片F(xiàn)PGA的升級。
從以上的描述中,可以看出,本發(fā)明實(shí)現(xiàn)了如下技術(shù)效果:
本實(shí)施例通過將多片現(xiàn)場可編程門陣列的升級程序存儲于同一存儲器中,通過多片現(xiàn)場可編程門陣列從存儲器中讀取對應(yīng)的升級文件進(jìn)行升級,并對各片現(xiàn)場可編程門陣列的升級狀態(tài)進(jìn)行檢測,以及通過備份文件對升級失敗的現(xiàn)場可編程門陣列進(jìn)行重新啟動,相比于現(xiàn)有技術(shù)中需要在前一個(gè)FPGA升級成功后再啟動后續(xù)的FPGA進(jìn)行升級的方式,顯著提高了對多片現(xiàn)場可編程門陣列進(jìn)行升級的效率,相對于將多片現(xiàn)場可編程門陣列的配置文件存放在CPLD或CPU上,減少了額外的配置控制,節(jié)省了成本。本實(shí)施由于增加了升級備份功能,使得在FPGA升級過程中出現(xiàn)升級文件錯(cuò)誤、升級過程中斷電等異常情況時(shí),可以通過備份文件重新啟動升級失敗的FPGA,保證了系統(tǒng)的功能正常,顯著提高了FPGA升級過程的可靠性。
此外,本實(shí)施例的現(xiàn)場可編程門陣列升級方法不依賴外部的控制,無論是將多片現(xiàn)場可編程門陣列的配置文件進(jìn)行合并,還是升級異常時(shí)從備份區(qū)域進(jìn)行啟動的機(jī)制,都可以利用現(xiàn)場可編程門陣列自身開發(fā)工具進(jìn)行實(shí)現(xiàn),因此本實(shí)施例的現(xiàn)場可編程門陣列升級方法更具有通用性,可擴(kuò)展性好。
可選地,本實(shí)施例可以通過現(xiàn)場可編程門陣列的多啟動(multiboot)機(jī)制實(shí)現(xiàn)現(xiàn)場可編程門陣列的升級和備份。圖5是根據(jù)本實(shí)施例的現(xiàn)場可編程門陣列的多啟動機(jī)制實(shí)現(xiàn)升級的示意圖?,F(xiàn)場可編程門陣列通常都支持multiboot的加載啟動方式,multiboot的加載啟動方式是指在外部的程序存儲器中存放2個(gè)或者更多個(gè)的位流(Bit Stream),按引導(dǎo)頭(Header)描述,引導(dǎo)現(xiàn)場可編程門陣列啟動IPROG重新配置(IPROG reconfiguration),加載對應(yīng)的位流,并在加載失敗時(shí),能自動回到安全(golden)的位流加載(即備份文件的加載)。
如圖5所示,根據(jù)本實(shí)施例的現(xiàn)場可編程門陣列的多啟動機(jī)制實(shí)現(xiàn)升級包括如下步驟:步驟a,根據(jù)引導(dǎo)頭,跳到多啟動位流(即升級程序)進(jìn)行加載,嘗試加載3次; 步驟b,若升級程序3次加載均失敗,跳回備份文件加載,同樣嘗試加載3次;步驟c,若備份文件3次也均加載失敗,回到引導(dǎo)頭重復(fù)步驟a至步驟c,如重復(fù)步驟a至步驟c三次后還是加載失敗,則上報(bào)加載失敗。需要說明的是,每個(gè)文件的嘗試加載次數(shù)可以根據(jù)實(shí)際情況進(jìn)行設(shè)置,本實(shí)施例是以每個(gè)文件的嘗試加載次數(shù)為3為例進(jìn)行說明的。
以下以2個(gè)位流為例對本實(shí)施例的multiboot的加載啟動方式進(jìn)行說明。
在外部的flash中存放2個(gè)位流,分別是備份文件(即golden流),出廠時(shí)燒錄,保證現(xiàn)場可編程門陣列總能正常工作和升級;另一個(gè)是升級文件(multiboot流),是升級文件,正常情況下,現(xiàn)場可編程門陣列都運(yùn)行此程序,每次升級也是更新此程序,當(dāng)此程序加載失敗時(shí),自動跳回備份文件運(yùn)行。
圖6是根據(jù)本實(shí)施例的位流在外部存儲器中位置分布示意圖,如圖6所示,步驟1,根據(jù)引導(dǎo)頭,跳到多啟動位流(即升級程序)進(jìn)行加載,嘗試加載三次;步驟2,若升級程序3次加載均失敗,跳回備份文件加載,同樣嘗試加載三次;步驟3,若備份文件加載3次也均加載失敗,回到引導(dǎo)頭重復(fù)步驟1至步驟3,如若重復(fù)步驟1至步驟3三次后還是加載失敗,則上報(bào)加載失敗。
需要說明的是,每次FPGA升級時(shí),只需要更新multiboot流。多啟動流(即Multiboot流)可以是常規(guī)的位文件生產(chǎn)的bin文件,Multiboot流可以放在存儲器的任意位置。引導(dǎo)頭和備份文件流可以通過ISE軟件(即FPGA開發(fā)軟件)中的generate programming file中一并生成到一個(gè)位(bit)或bin文件中,無需手動添加引導(dǎo)頭。ID型號錯(cuò)誤(IDCODE error)、循環(huán)引用校驗(yàn)碼錯(cuò)誤(CRC error)或者加載超時(shí)(watchdog time_out)等都會導(dǎo)致程序加載失敗回跳。真正產(chǎn)品的流程是將引導(dǎo)頭和備份文件合并后的bin文件,供工廠預(yù)先燒錄,升級時(shí)再提供升級的bin文件,將升級文件寫入multiboot流的對應(yīng)位置。
根據(jù)本發(fā)明又一實(shí)施例,還提供了一種現(xiàn)場可編程門陣列的升級裝置實(shí)施例。圖7是根據(jù)本實(shí)施例的現(xiàn)場可編程門陣列的升級裝置的示意圖,如圖7所示,該裝置包括:讀取單元70和升級單元72。
讀取單元70,用于使多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件,其中,存儲器中預(yù)先存儲有多片現(xiàn)場可編程門陣列對應(yīng)的升級文件。
本實(shí)施例的現(xiàn)場可編程門陣列對應(yīng)的升級文件是指當(dāng)前現(xiàn)場可編程門陣列最新的配置文件,F(xiàn)PGA對應(yīng)的升級文件可以是FPGA的升級程序,F(xiàn)PGA通過加載其升級程序即可以進(jìn)行升級。具體地,為了提高FPGA升級的效率,可以預(yù)先將多片F(xiàn)PGA的升級 文件存儲于存儲器中,例如,可以預(yù)先將多片F(xiàn)PGA的升級文件存儲于外部閃存(俗稱Flash)中,多片F(xiàn)PGA升級時(shí)可以直接從外部Flash中讀取對應(yīng)的升級文件進(jìn)行升級。
升級單元72,用于使多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級。
本實(shí)施例中,多片現(xiàn)場可編程門陣列可以通過直接加載對應(yīng)的升級文件進(jìn)行升級。
本發(fā)明實(shí)施例在進(jìn)行多片現(xiàn)場可編程門陣列升級時(shí),由于是通過多片現(xiàn)場可編程門陣列自身從存儲器中加載對應(yīng)的升級文件進(jìn)行升級,無需外部的控制單元,此外,本實(shí)施例多片現(xiàn)場可編程門陣列升級可以并行進(jìn)行(例如,多片F(xiàn)PGA全部更新配置文件后再全部啟動),相比于現(xiàn)有技術(shù)中多片現(xiàn)場可編程門陣列對應(yīng)于多片F(xiàn)lash的串行升級方式(即多片F(xiàn)PGA依次更新配置文件并啟動,例如,F(xiàn)PGA1更新配置文件并啟動后,F(xiàn)PGA2再更新配置文件并啟動,依次類推),顯著提高了升級效率,并節(jié)省存儲空間。
本發(fā)明實(shí)施例通過讀取單元70使得多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件,其中,存儲器中預(yù)先存儲有多片現(xiàn)場可編程門陣列對應(yīng)的升級文件;以及升級單元72使得多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級。通過將多片現(xiàn)場可編程門陣列的升級文件均存儲于同一存儲器中,并通過多片現(xiàn)場可編程門陣列分別從存儲器中加載對應(yīng)的升級文件并進(jìn)行升級,實(shí)現(xiàn)了在沒有外部控制單元配合下多片現(xiàn)場可編程門陣列快速升級,進(jìn)而解決了相關(guān)技術(shù)中在無外部控制單元配合的條件下多片現(xiàn)場可編程門陣列升級效率較低的技術(shù)問題。
優(yōu)選地,為了提高多片現(xiàn)場可編程門陣列升級的可靠性,該裝置還包括:判斷單元,用于分別判斷多片現(xiàn)場可編程門陣列升級是否異常;以及啟動單元,用于在判斷出多片現(xiàn)場可編程門陣列中存在升級異常的現(xiàn)場可編程門陣列時(shí),通過現(xiàn)場可編程門陣列對應(yīng)的備份文件啟動升級異常的現(xiàn)場可編程門陣列。
具體地,現(xiàn)場可編程門陣列加載升級文件進(jìn)行升級時(shí),升級文件有問題或是升級過程出現(xiàn)異常(例如,斷電)等原因容易造成現(xiàn)場可編程門陣列升級失敗(即升級異常)。本實(shí)施例在多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級后,分別判斷多片現(xiàn)場可編程門陣列升級是否異常。
優(yōu)選地,判斷單元包括:檢測單元,用于分別檢測多片現(xiàn)場可編程門陣列的升級狀態(tài);判斷單元,用于分別判斷多片現(xiàn)場可編程門陣列的升級狀態(tài)是否為第一值或第二值;以及確定模塊,用于將多片現(xiàn)場可編程門陣列中升級狀態(tài)為第一值的現(xiàn)場可編程門陣列確定為升級異常的現(xiàn)場可編程門陣列,將多片現(xiàn)場可編程門陣列中升級狀態(tài)為第二值的現(xiàn)場可編程門陣列確定為升級正常的現(xiàn)場可編程門陣列。
本實(shí)施例在多片現(xiàn)場可編程門陣列分別根據(jù)對應(yīng)的升級文件進(jìn)行升級后,對現(xiàn)場可編程門陣列升級狀態(tài)進(jìn)行檢測,其中,升級狀態(tài)包括第一值和第二值,例如,第一值為0,第二值為1,如果升級狀態(tài)為第一值,則表示現(xiàn)場可編程門陣列升級異常(即升級失敗),如果升級狀態(tài)為第二值,則表示現(xiàn)場可編程門陣列升級正常(即升級失敗)。
優(yōu)選地,在多片現(xiàn)場可編程門陣列分別從同一存儲器中讀取對應(yīng)的升級文件之前,該裝置還包括:合并單元,用于將多片現(xiàn)場可編程門陣列對應(yīng)的升級文件進(jìn)行合并,得到升級文件包,其中,多片現(xiàn)場可編程門陣列根據(jù)升級文件包進(jìn)行升級,和/或?qū)⒍嗥F(xiàn)場可編程門陣列對應(yīng)的備份文件進(jìn)行合并,得到備份文件包,其中,通過備份文件包啟動升級異常的現(xiàn)場可編程門陣列。
具體地,可以直接通過FPGA開發(fā)工具將多片F(xiàn)PGA的升級文件和/或FPGA的備份文件進(jìn)行合并,例如,通過萊迪思鉆石開發(fā)工具(Lattice Diamond Development Tool)將多片F(xiàn)PGA的升級文件合并成一個(gè)升級文件包,將多片F(xiàn)PGA的備份文件合并成一個(gè)備份文件包。
上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
在本發(fā)明的上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲在一個(gè)計(jì)算機(jī)可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì) 上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。