本發(fā)明涉及可編程片上系統(tǒng)配置技術(shù)領(lǐng)域,具體涉及一種sopc程序遠(yuǎn)程更新系統(tǒng)及方法。
背景技術(shù):
fpga是一種可編程邏輯器件,同時(shí)具有豐富可編程硬件資源和并行處理特性,大大提高了電子系統(tǒng)的通用性和靈活性。近年來,altera公司提出了sopc概念,將niosii微處理器、存儲(chǔ)器、通訊控制器、以及其他功能模塊等集成到fpga中,在單芯片中構(gòu)成全數(shù)字、多功能的sopc系統(tǒng),在電機(jī)伺服控制、工業(yè)網(wǎng)絡(luò)中廣泛使用。但是,fpga大多是基于sram結(jié)構(gòu)的,在掉電情況下fpga內(nèi)的數(shù)據(jù)將丟失,需要非易失性存儲(chǔ)器來存放其配置文件。epcs器件屬于串行接口flash,通常用來存儲(chǔ)fpga的硬件配置文件和niosii的軟件映像文件。每次上電時(shí),存儲(chǔ)器將硬件配置文件和軟件映像文件重新加載到fpga中,這就是通常所說的fpga配置過程。
當(dāng)前,嵌入式產(chǎn)品在投入使用階段由于多種原因需要對(duì)產(chǎn)品進(jìn)行維護(hù)或者軟件升級(jí),若使用傳統(tǒng)的jtag下載更新方式,需要企業(yè)對(duì)產(chǎn)品進(jìn)行召回處理,增加了維護(hù)成本。如果嵌入式產(chǎn)品放置在極端惡劣環(huán)境下,傳統(tǒng)的升級(jí)方式受到限制無法進(jìn)行。在許多場(chǎng)合下,系統(tǒng)希望能夠?qū)崿F(xiàn)對(duì)fpga的軟硬件程序進(jìn)行遠(yuǎn)程更新,甚至要求在存儲(chǔ)器中存放多份配置文件以便多功能切換需要。在有的產(chǎn)品設(shè)計(jì)中,采用cpu+fpga系統(tǒng)架構(gòu),但是,這種方案所需硬件資源較多,設(shè)計(jì)復(fù)雜且成本相對(duì)較高。
綜上所述,現(xiàn)有技術(shù)存在的問題是:現(xiàn)有技術(shù)硬件資源多成本相對(duì)較高、方法復(fù)雜且不靈活。
技術(shù)實(shí)現(xiàn)要素:
為解決現(xiàn)有技術(shù)存在的問題,本發(fā)明提供了一種sopc程序遠(yuǎn)程更新系統(tǒng)及方法。
為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供一種sopc程序遠(yuǎn)程更新方法,所述sopc程序遠(yuǎn)程更新方法包括以下步驟:
步驟一,編譯生成fpga的硬件配置文件和niosii的軟件映像文件后進(jìn)行合并,并轉(zhuǎn)換為二進(jìn)制文件;
步驟二,niosii微處理器按照預(yù)置的通訊協(xié)議指令將外部通訊模塊傳來的應(yīng)用模式配置程序?qū)懭肫瑑?nèi)ram中暫存;
步驟三,niosii微處理器將epcs存儲(chǔ)器指定地址內(nèi)的數(shù)據(jù)擦除,并把片內(nèi)ram中暫存的配置程序燒錄到epcs存儲(chǔ)器的指定地址中;
步驟四,重新上電時(shí),fpga首先進(jìn)入工廠模式,然后根據(jù)rsu專用電路的配置,自動(dòng)加載存儲(chǔ)在epcs存儲(chǔ)器中的相應(yīng)應(yīng)用模式配置程序中。
進(jìn)一步,步驟一中,轉(zhuǎn)換為一個(gè)直接燒錄、包含fpga硬件配置文件和niosii軟件映像文件的二進(jìn)制文件;所述二進(jìn)制為應(yīng)用模式配置程序;所述應(yīng)用模式配置程序傳輸過程中包含信息效驗(yàn)操作;每次通訊完成后都進(jìn)行crc效驗(yàn),用于確保數(shù)據(jù)傳輸可靠性;
步驟二中,niosii微處理器通過通訊模塊與上位機(jī)建立連接,按照預(yù)置的通訊協(xié)議指令將外部通訊模塊傳來的應(yīng)用模式配置程序?qū)懭肫瑑?nèi)ram中暫存;
步驟四中,當(dāng)遠(yuǎn)程更新失敗時(shí),fpga加載工廠模式配置程序,用于系統(tǒng)正常工作,同時(shí)進(jìn)行下一次代碼遠(yuǎn)程更新。
進(jìn)一步,所述通訊模塊通過更新配置存儲(chǔ)器中的sopc軟硬件程序,進(jìn)行實(shí)時(shí)在線更新,用于現(xiàn)場(chǎng)環(huán)境下sopc系統(tǒng)維護(hù)、調(diào)試和升級(jí)。
本發(fā)明的另一目的在于提供一種sopc程序遠(yuǎn)程更新系統(tǒng)包括:
fpga模塊,用于進(jìn)入工廠模式,然后根據(jù)rsu專用電路的配置,自動(dòng)加載存儲(chǔ)在epcs存儲(chǔ)器中的相應(yīng)應(yīng)用模式配置程序;當(dāng)遠(yuǎn)程更新失敗時(shí),通過加載工廠模式配置程序,用于系統(tǒng)正常工作,同時(shí)進(jìn)行下一次代碼遠(yuǎn)程更新;
epcs存儲(chǔ)器,與fpga模塊連接,用于存儲(chǔ)fpga的硬件配置文件和軟件映像文件;
eeprom存儲(chǔ)器,與fpga模塊連接,用于存儲(chǔ)配置過程中的啟動(dòng)參數(shù);
通訊模塊,與fpga模塊通過通訊接口連接,用于上位機(jī)與fpga模塊的通訊。
進(jìn)一步,當(dāng)有配置程序需要更新時(shí),上位機(jī)通過通訊模塊和fpga模塊將配置文件下載到epcs存儲(chǔ)器中,重新上電時(shí),fpga模塊根據(jù)啟動(dòng)參數(shù)自動(dòng)加載存儲(chǔ)在epcs存儲(chǔ)器中的相應(yīng)配置程序。
進(jìn)一步,所述fpga模塊為由niosii微處理器、can控制器、片上ram、epcs控制器、rsu控制器、rsu專用電路、iic控制器、jtag控制器構(gòu)成;所述niosii微處理器、can控制器、片上ram、epcs控制器、rsu控制器、iic控制器、jtag控制器均通過片內(nèi)avalon總線相連;
所述niosii微處理器,用于與上位機(jī)的數(shù)據(jù)交互,根據(jù)上位機(jī)的控制指令對(duì)can控制器、片上ram、epcs控制器、rsu控制器、iic控制器進(jìn)行操作;
所述can控制器,用于niosii微處理器與上位機(jī)的串行通訊;
所述片上ram,用于暫存遠(yuǎn)程更新數(shù)據(jù);
所述epcs控制器,用于對(duì)epcs器件的擦除、燒錄和效驗(yàn);
所述rsu控制器,用于實(shí)現(xiàn)對(duì)rsu專用電路的配置;
所述iic控制器,用于對(duì)eeprom器件的讀寫操作。
進(jìn)一步,所述epcs存儲(chǔ)器中的存儲(chǔ)區(qū)域包括:工廠模式配置程序區(qū)域和應(yīng)用模式配置程序區(qū)域;
所述工廠模式配置程序區(qū)域用于存儲(chǔ)工廠模式配置程序;
所述應(yīng)用模式配置程序區(qū)域用于存儲(chǔ)遠(yuǎn)程更新的應(yīng)用模式配置程序;
所述應(yīng)用模式配置程序區(qū)域有多個(gè),用于存儲(chǔ)遠(yuǎn)程更新的多份應(yīng)用模式配置程序。
進(jìn)一步,所sopc程序遠(yuǎn)程更新系統(tǒng)還包括jtag接口模塊,jtag接口模塊與fpga模塊的jtag控制器通過片內(nèi)avalon總線相連;
所述工廠模式配置程序采用直接通過fpga模塊的jtag鏈為epcs存儲(chǔ)器下載配置程序,作為sopc程序遠(yuǎn)程更新的基礎(chǔ)代碼。
本發(fā)明的優(yōu)點(diǎn)及積極效果為:
(1)sopc程序遠(yuǎn)程更新系統(tǒng)可以通過外部通訊模塊更新配置存儲(chǔ)器中的sopc軟硬件程序,避免拆卸產(chǎn)品,具有實(shí)時(shí)在線更新的優(yōu)點(diǎn),適用于現(xiàn)場(chǎng)環(huán)境下sopc系統(tǒng)維護(hù)、調(diào)試和升級(jí);
(2)同時(shí)還省去了cpu處理器和大容量sdram存儲(chǔ)器,有效降低了硬件電路復(fù)雜度,提高了遠(yuǎn)程更新系統(tǒng)的效率和靈活性;
(3)即使遠(yuǎn)程更新失敗,fpga也能夠加載工廠模式配置程序,實(shí)現(xiàn)基本功能,并且可以實(shí)現(xiàn)下一次代碼遠(yuǎn)程更新,大大提高了系統(tǒng)安全性和可靠性;
(4)可存儲(chǔ)多份sopc系統(tǒng)配置程序,實(shí)現(xiàn)多功能的靈活切換,適應(yīng)不同條件下的使用需求。
附圖說明
圖1為本發(fā)明實(shí)施例提供的遠(yuǎn)程更新sopc系統(tǒng)(工廠模式)示意圖。
圖2為本發(fā)明實(shí)施例提供的epcs存儲(chǔ)器內(nèi)配置程序分布圖。
圖3是本發(fā)明實(shí)施例提供的應(yīng)用模式下fpga模塊示意圖。
圖4為本發(fā)明實(shí)施例提供的配置程序傳輸過程流程圖。
圖5為本發(fā)明實(shí)施例提供的模式切換流程圖。
圖6為本發(fā)明實(shí)施例提供的模式切換關(guān)系圖。
圖7為本發(fā)明實(shí)施例提供的sopc程序遠(yuǎn)程更新方法流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
現(xiàn)有技術(shù)存在的問題是:現(xiàn)有技術(shù)硬件資源多成本相對(duì)較高、方法復(fù)雜且不靈活。下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述。
如圖1所示,本發(fā)明實(shí)施例提供的sopc程序遠(yuǎn)程更新系統(tǒng),包括:fpga模塊、epcs存儲(chǔ)器、eeprom存儲(chǔ)器、通訊模塊和上位機(jī),fpga模塊與epcs存儲(chǔ)器相連,fpga模塊與eeprom存儲(chǔ)器相連,fpga模塊與通訊模塊相連,通訊模塊與上位機(jī)相連;通訊模塊為fpga模塊與上位機(jī)的通訊接口,epcs存儲(chǔ)器存儲(chǔ)fpga的硬件配置文件和軟件映像文件,eeprom存儲(chǔ)器存儲(chǔ)配置過程中的啟動(dòng)參數(shù);當(dāng)有配置程序需要更新時(shí),上位機(jī)通過通訊模塊和fpga模塊將配置文件下載到epcs存儲(chǔ)器中,重新上電時(shí),fpga模塊根據(jù)啟動(dòng)參數(shù)自動(dòng)加載存儲(chǔ)在epcs存儲(chǔ)器中的相應(yīng)配置程序。
所述fpga模塊指altera公司所有支持rsu專用電路的fpga芯片,在本實(shí)施例中,采用的是cyclonev系列fpga芯片5cefa7f31,所述通訊模塊為can接口電路。
所述fpga模塊為由niosii微處理器、can控制器、片上ram、epcs控制器、rsu控制器、rsu專用電路、iic控制器、jtag控制器構(gòu)成的sopc系統(tǒng);所述niosii微處理器、can控制器、片上ram、epcs控制器、rsu控制器、iic控制器、jtag控制器通過片內(nèi)avalon總線相連;所述rsu控制器與rsu專用電路相連;所述can控制器與通訊模塊相連;所述epcs控制器與epcs存儲(chǔ)器相連;所述iic控制器與eeprom存儲(chǔ)器相連;所述niosii微處理器,用于與上位機(jī)的數(shù)據(jù)交互,根據(jù)上位機(jī)的控制指令對(duì)can控制器、片上ram、epcs控制器、rsu控制器、iic控制器進(jìn)行操作;所述can控制器,用于實(shí)現(xiàn)niosii微處理器(fpga模塊)與上位機(jī)的串行通訊;所述片上ram,用于暫存遠(yuǎn)程更新數(shù)據(jù);所述epcs控制器,用于實(shí)現(xiàn)對(duì)epcs器件的擦除、燒錄和效驗(yàn);所述rsu控制器,用于實(shí)現(xiàn)對(duì)rsu專用電路的配置;所述iic控制器,用于對(duì)eeprom器件的讀寫操作。
如圖2所示,epcs存儲(chǔ)器中的存儲(chǔ)區(qū)域包括:工廠模式配置程序區(qū)域,應(yīng)用模式配置程序區(qū)域;工廠模式配置程序區(qū)域用于存儲(chǔ)工廠模式配置程序,地址開始于頁(yè)0的0x000000地址;應(yīng)用模式配置程序區(qū)域用于存儲(chǔ)遠(yuǎn)程更新的應(yīng)用模式配置程序,地址開始于頁(yè)1(2、3、…、n)的非零地址;應(yīng)用模式配置程序區(qū)域可以有多個(gè),用于存儲(chǔ)遠(yuǎn)程更新的多份應(yīng)用模式配置程序。
本發(fā)明實(shí)施例提供的sopc程序遠(yuǎn)程更新系統(tǒng)還包括jtag接口模塊,jtag接口模塊與fpga模塊的jtag控制器相連,工廠模式配置程序采用直接通過fpga模塊的jtag鏈為epcs存儲(chǔ)器下載配置程序,作為sopc程序遠(yuǎn)程更新的基礎(chǔ)代碼。
本發(fā)明實(shí)施例提供的一種sopc程序遠(yuǎn)程更新方法,用于實(shí)現(xiàn)對(duì)應(yīng)用模式配置程序的遠(yuǎn)程更新,包括以下具體步驟:
步驟一,構(gòu)建需要遠(yuǎn)程更新的sopc系統(tǒng),編譯生成fpga的硬件配置文件和niosii的軟件映像文件,把硬件配置文件和軟件映像文件進(jìn)行合并,并轉(zhuǎn)換為一個(gè)可以直接燒錄、包含fpga硬件配置文件和niosii軟件映像文件的二進(jìn)制文件(即應(yīng)用模式配置程序);
本發(fā)明實(shí)施例中fpga模塊如圖3所示,由niosii微處理器、can控制器、片上ram、epcs控制器、iic控制器、bootloader、其他功能模塊構(gòu)成;所述niosii微處理器、can控制器、片上ram、epcs控制器、iic控制器功能如前所述,不再重復(fù);所述bootloader,用于應(yīng)用模式fpga硬件配置完成后,從epcs存儲(chǔ)器的指定地址拷貝niosii的軟件映像文件并啟動(dòng)運(yùn)行;所述其他功能模塊,用于實(shí)現(xiàn)應(yīng)用模式下的其他具體功能。
bootloader制作流程包括:修改altera公司提供的bootloader模板中的bootcopier_bsp_settings.tcl和advanced_boot_copier.c源文件,以匹配應(yīng)用模式sopc系統(tǒng)的啟動(dòng)參數(shù),實(shí)現(xiàn)在硬件描述層不斷從epcs存儲(chǔ)器中讀取數(shù)據(jù)并拷貝至fpga并引導(dǎo)運(yùn)行的功能;將修改后的bootloader與應(yīng)用模式sopc系統(tǒng)共同編譯為應(yīng)用模式下的fpga硬件配置文件。
步驟二:niosii微處理器通過通訊模塊與上位機(jī)建立連接,按照預(yù)置的通訊協(xié)議指令將外部通訊模塊傳來的應(yīng)用模式配置程序?qū)懭肫瑑?nèi)ram中暫存;
步驟三:niosii微處理器將epcs存儲(chǔ)器指定地址內(nèi)的數(shù)據(jù)擦除,并把片內(nèi)ram中暫存的配置程序燒錄到epcs存儲(chǔ)器的指定地址中。
如圖4所示,本實(shí)施例根據(jù)預(yù)置的通訊協(xié)議指令的配置程序傳輸過程,具體包括以下步驟:
第一步:采用預(yù)置的can應(yīng)用層通訊協(xié)議,上位機(jī)請(qǐng)求遠(yuǎn)程更新開始,并設(shè)置epcs存儲(chǔ)器的開始燒錄地址;
第二步:采用短幀傳輸配置程序,fpga模塊收到后暫存至片上ram中;每傳輸256幀后,進(jìn)行一次crc效驗(yàn);若效驗(yàn)通過,擦除epcs存儲(chǔ)器指定地址內(nèi)的數(shù)據(jù),將片上ram中的暫存數(shù)據(jù)燒錄到epcs存儲(chǔ)器指定地址中;若效驗(yàn)未通過,請(qǐng)求上位機(jī)重新傳輸前256幀數(shù)據(jù);
第三步:重復(fù)第二步,直至配置程序傳輸完畢,遠(yuǎn)程更新結(jié)束。
步驟四:重新上電時(shí),fpga首先進(jìn)入工廠模式,然后根據(jù)rsu專用電路的配置,自動(dòng)加載存儲(chǔ)在epcs存儲(chǔ)器中的相應(yīng)應(yīng)用模式配置程序。
如圖5所示,重新上電后的程序加載過程,具體包括:fpga上電后首先進(jìn)入工廠模式,讀取eeprom存儲(chǔ)器中配置過程的啟動(dòng)參數(shù),判斷是繼續(xù)留在工程模式以進(jìn)行下一次代碼的遠(yuǎn)程更新還是進(jìn)入應(yīng)用模式;若進(jìn)入應(yīng)用模式,將啟動(dòng)參數(shù)寫入到rsu專用電路中,并觸發(fā)其重新配置,以進(jìn)入相應(yīng)的應(yīng)用模式;當(dāng)進(jìn)入應(yīng)用模式失敗時(shí),fpga將加載工廠模式配置程序,系統(tǒng)可以正常工作,同時(shí)可以進(jìn)行下一次代碼遠(yuǎn)程更新,提高了系統(tǒng)的安全性和可靠性。
如圖6所示,epcs存儲(chǔ)器中可以存儲(chǔ)多份應(yīng)用模式配置程序;通過修改eeprom存儲(chǔ)器中配置過程的啟動(dòng)參數(shù),即可在重新上電后加載不同的應(yīng)用模式配置程序;從而容易實(shí)現(xiàn)多份應(yīng)用模式配置程序的切換。
如圖7所示,本發(fā)明實(shí)施例提供的sopc程序遠(yuǎn)程更新方法,包括以下步驟:
s101:編譯生成fpga的硬件配置文件和niosii的軟件映像文件后進(jìn)行合并,并轉(zhuǎn)換為二進(jìn)制文件;
s102:niosii微處理器按照預(yù)置的通訊協(xié)議指令將外部通訊模塊傳來的應(yīng)用模式配置程序?qū)懭肫瑑?nèi)ram中暫存;
s103:niosii微處理器將epcs存儲(chǔ)器指定地址內(nèi)的數(shù)據(jù)擦除,并把片內(nèi)ram中暫存的配置程序燒錄到epcs存儲(chǔ)器的指定地址中;
s104:重新上電時(shí),fpga首先進(jìn)入工廠模式,然后根據(jù)rsu專用電路的配置,自動(dòng)加載存儲(chǔ)在epcs存儲(chǔ)器中的相應(yīng)應(yīng)用模式配置程序中。
s101中,轉(zhuǎn)換為一個(gè)直接燒錄、包含fpga硬件配置文件和niosii軟件映像文件的二進(jìn)制文件;所述二進(jìn)制為應(yīng)用模式配置程序;所述應(yīng)用模式配置程序傳輸過程中包含信息效驗(yàn)操作;每次通訊完成后都進(jìn)行crc效驗(yàn),用于確保數(shù)據(jù)傳輸可靠性;
s102中,niosii微處理器通過通訊模塊與上位機(jī)建立連接,按照預(yù)置的通訊協(xié)議指令將外部通訊模塊傳來的應(yīng)用模式配置程序?qū)懭肫瑑?nèi)ram中暫存;
s104中,當(dāng)遠(yuǎn)程更新失敗時(shí),fpga加載工廠模式配置程序,用于系統(tǒng)正常工作,同時(shí)進(jìn)行下一次代碼遠(yuǎn)程更新。
所述通訊模塊通過更新配置存儲(chǔ)器中的sopc軟硬件程序,進(jìn)行實(shí)時(shí)在線更新,用于現(xiàn)場(chǎng)環(huán)境下sopc系統(tǒng)維護(hù)、調(diào)試和升級(jí)。
本發(fā)明的sopc程序遠(yuǎn)程更新系統(tǒng)可以通過外部通訊模塊更新配置存儲(chǔ)器中的sopc軟硬件程序,避免拆卸產(chǎn)品,具有實(shí)時(shí)在線更新的優(yōu)點(diǎn),適用于現(xiàn)場(chǎng)環(huán)境下sopc系統(tǒng)維護(hù)、調(diào)試和升級(jí);同時(shí)還省去了cpu處理器和大容量sdram存儲(chǔ)器,有效降低了硬件電路復(fù)雜度,提高了遠(yuǎn)程更新系統(tǒng)的效率和靈活性;
即使遠(yuǎn)程更新失敗,fpga也能夠加載工廠模式配置程序,實(shí)現(xiàn)基本功能,并且可以實(shí)現(xiàn)下一次代碼遠(yuǎn)程更新,大大提高了系統(tǒng)安全性和可靠性;可存儲(chǔ)多份sopc系統(tǒng)配置程序,實(shí)現(xiàn)多功能的靈活切換,適應(yīng)不同條件下的使用需求。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。