嵌入cpu的fpga及其啟動(dòng)方法
【專利摘要】本發(fā)明公開了一種嵌入中央處理器CPU的可編程門陣列FPGA及其啟動(dòng)方法,該方法包括:嵌入中央處理器CPU的可編程門陣列FPGA上電后,從目標(biāo)閃存FLASH中獲取啟動(dòng)FPGA的硬件程序;調(diào)用獲取的硬件程序加載所述目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的引導(dǎo)程序后,啟動(dòng)所述CPU;調(diào)用啟動(dòng)的所述CPU執(zhí)行所述引導(dǎo)程序,確定所述目標(biāo)FLASH中的代碼區(qū)和備份區(qū);其中,所述代碼區(qū)存儲(chǔ)升級(jí)后的應(yīng)用程序,所述備份區(qū)存儲(chǔ)的升級(jí)前的應(yīng)用程序;以及加載并啟動(dòng)所述代碼區(qū)的應(yīng)用程序,若啟動(dòng)失敗次數(shù)大于設(shè)定次數(shù),加載并啟動(dòng)所述備份區(qū)的應(yīng)用程序。該方案中即使啟動(dòng)升級(jí)的應(yīng)用程序失敗,仍可以啟動(dòng)升級(jí)前的應(yīng)用程序,從而可以保證FPGA能夠正常工作。
【專利說明】嵌入CPU的FPGA及其啟動(dòng)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤指一種嵌入中央處理器CPU的可編程門陣列FPGA及其啟動(dòng)方法。
【背景技術(shù)】
[0002]目前在嵌入式的無線通信基礎(chǔ)設(shè)施等應(yīng)用領(lǐng)域,要求集成芯片成本更低、功耗更低、尺寸更小,這些要求正在推動(dòng)著現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,FPGA)、中央處理器(Center Process Unit, CPU)、數(shù)字信號(hào)處理器(Digital SignalProcessing, DSP)等不同技術(shù)進(jìn)行融合。
[0003]其中,常用的是同時(shí)使用獨(dú)立的FPGA和CPU,但是這種模式存在很多缺陷:印刷電路板(Printed Circuit Board, PCB)所占面積較大,布線難度較高;功耗較大,散熱效果不佳;FPGA和CPU之間的信號(hào)傳輸問題影響總體性能的發(fā)揮;硬件系統(tǒng)的復(fù)雜性增加了開發(fā)成本等等。
[0004]隨著可編程片上系統(tǒng)(System On a Programmable Chip, S0PC)的發(fā)展,將CPU嵌入到FPGA中來取代同時(shí)使用獨(dú)立的FPGA與CPU的模式,嵌入CPU的FPGA能夠解決上述同時(shí)使用獨(dú)立的FPGA與CPU模式下的各種缺陷,已成為業(yè)內(nèi)的熱點(diǎn)研究課題。
[0005]嵌入CPU的FPGA的啟動(dòng)方法是:預(yù)先將用于啟動(dòng)FPGA的硬件程序和CPU執(zhí)行的應(yīng)用程序整合在一起并存儲(chǔ)在外設(shè)的目標(biāo)閃存(FLASH)中,F(xiàn)PGA上電后,將存儲(chǔ)于目標(biāo)FLASH中且整合在一起的硬件程序和應(yīng)用程序加載到FPGA中,完成FPGA的啟動(dòng)。一旦FPGA需要升級(jí),也就是FPGA中的應(yīng)用程序需要升級(jí)時(shí),需要將原有的硬件程序和升級(jí)后的應(yīng)用程重新整合在一起,并存儲(chǔ)在目標(biāo)FLASH中,然后加載到FPGA中,重新整合后的硬件程序和應(yīng)用程序替代原有的整合在一起的硬件程序和應(yīng)用程序,而原有的整合在一起的硬件程序和應(yīng)用程序會(huì)被刪除。若FPGA加載重新整合在一起的硬件程序和升級(jí)后的應(yīng)用程序失敗,也就是說FPGA升級(jí)失敗,由于FPGA不能成功加載重新整合在一起的硬件程序和升級(jí)的應(yīng)用程序,而原有整合在一起的硬件程序和應(yīng)用程序已被刪除,那么FPGA就無法正常啟動(dòng)??梢?,現(xiàn)有的嵌入CPU的FPGA的啟動(dòng)方法,一旦FPGA升級(jí)失敗,就會(huì)導(dǎo)致FPGA不能正常啟動(dòng)。因此,現(xiàn)有的嵌入CPU的FPGA的啟動(dòng)方法不能確保FPGA能夠正常啟動(dòng)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供一種嵌入中央處理器CPU的可編程門陣列FPGA及其啟動(dòng)方法,用以解決現(xiàn)有的嵌入CPU的FPGA的啟動(dòng)方法中存在的不能確保FPGA能夠正常啟動(dòng)的問題。
[0007]一種嵌入中央處理器CPU的可編程門陣列FPGA的啟動(dòng)方法,包括:
[0008]嵌入中央處理器CPU的可編程門陣列FPGA上電后,從目標(biāo)FLASH中獲取啟動(dòng)FPGA的硬件程序;
[0009]調(diào)用獲取的硬件程序加載所述目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的弓I導(dǎo)程序后,啟動(dòng)所述CPU ;
[0010]調(diào)用啟動(dòng)的所述CPU執(zhí)行所述引導(dǎo)程序,確定所述目標(biāo)FLASH中的代碼區(qū)和備份區(qū);其中,所述代碼區(qū)存儲(chǔ)升級(jí)后的應(yīng)用程序,所述備份區(qū)存儲(chǔ)的升級(jí)前的應(yīng)用程序;以及
[0011]加載并啟動(dòng)所述代碼區(qū)的應(yīng)用程序,若啟動(dòng)失敗次數(shù)大于設(shè)定次數(shù),加載并啟動(dòng)所述備份區(qū)的應(yīng)用程序。
[0012]一種嵌入中央處理器CPU的可編程門陣列FPGA,包括:
[0013]硬件程序獲取單元,用于自身所在的嵌入中央處理器CPU的可編程門陣列FPGA上電后,從目標(biāo)閃存FLASH中獲取啟動(dòng)FPGA的硬件程序;
[0014]CPU啟動(dòng)單元,用于調(diào)用獲取的硬件程序加載所述目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的引導(dǎo)程序后,啟動(dòng)所述CPU;
[0015]應(yīng)用程序啟動(dòng)單元,用于調(diào)用啟動(dòng)的所述CPU執(zhí)行所述引導(dǎo)程序,確定所述目標(biāo)FLASH中的代碼區(qū)和備份區(qū);其中,所述代碼區(qū)存儲(chǔ)升級(jí)后的應(yīng)用程序,所述備份區(qū)存儲(chǔ)的升級(jí)前的應(yīng)用程序;以及加載并啟動(dòng)所述代碼區(qū)的應(yīng)用程序,若啟動(dòng)失敗次數(shù)大于設(shè)定次數(shù),加載并啟動(dòng)所述備份區(qū)的應(yīng)用程序。
[0016]本發(fā)明有益效果如下:
[0017]本發(fā)明實(shí)施例提供的嵌入CPU的FPGA及其啟動(dòng)方法,通過嵌入中央處理器CPU的可編程門陣列FPGA上電后,從目標(biāo)閃存FLASH中獲取啟動(dòng)FPGA的硬件程序;調(diào)用獲取的硬件程序加載所述目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的弓I導(dǎo)程序后,啟動(dòng)所述CPU ;調(diào)用啟動(dòng)的所述CPU執(zhí)行所述引導(dǎo)程序,確定所述目標(biāo)FLASH中的代碼區(qū)和備份區(qū);其中,所述代碼區(qū)存儲(chǔ)升級(jí)后的應(yīng)用程序,所述備份區(qū)存儲(chǔ)的升級(jí)前的應(yīng)用程序;以及加載并啟動(dòng)所述代碼區(qū)的應(yīng)用程序,若啟動(dòng)失敗次數(shù)大于設(shè)定次數(shù),加載并啟動(dòng)所述備份區(qū)的應(yīng)用程序。該方案首先獲取啟動(dòng)FPGA的硬件程序,調(diào)用硬件程序加載引導(dǎo)程序后啟動(dòng)CPU,然后調(diào)用CPU執(zhí)行引導(dǎo)程序,確定出目標(biāo)FLASH中的代碼區(qū)和備份區(qū),加載并啟動(dòng)代碼區(qū)中的應(yīng)用程序,若啟動(dòng)失敗次數(shù)超過設(shè)定次數(shù),則加載并啟動(dòng)備份區(qū)中的應(yīng)用程序,該方案中即使啟動(dòng)升級(jí)的應(yīng)用程序失敗,仍可以啟動(dòng)升級(jí)前的應(yīng)用程序,從而可以保證FPGA能夠正常工作。
【專利附圖】
【附圖說明】
[0018]圖1為本發(fā)明實(shí)施例中嵌入CPU的FPGA的啟動(dòng)方法的流程圖;
[0019]圖2為本發(fā)明實(shí)施例中嵌入CPU的FPGA的結(jié)構(gòu)示意圖;
[0020]圖3為本發(fā)明實(shí)施例中優(yōu)選的嵌入CPU的FPGA的啟動(dòng)方法的流程圖。
【具體實(shí)施方式】
[0021]針對(duì)現(xiàn)有的嵌入CPU的FPGA的啟動(dòng)方法中存在的不能確保FPGA能夠正常啟動(dòng)的問題,本發(fā)明實(shí)施例提供的嵌入CPU的FPGA的啟動(dòng)方法,該方法的流程如圖1所示,執(zhí)行步驟如下:
[0022]SlO:嵌入CPU的FPGA上電后,從目標(biāo)FLASH中獲取啟動(dòng)FPGA的硬件程序。
[0023]目標(biāo)FLASH中的硬件程序、引導(dǎo)程序和應(yīng)用程序都是獨(dú)立存儲(chǔ)的,這樣就可以獨(dú)立加載,當(dāng)應(yīng)用程序需要升級(jí)時(shí),只要將應(yīng)用程序升級(jí)就可以了,而無需更新硬件程序和引導(dǎo)程序。[0024]硬件程序是用來加載硬件資源的,因此需要首先獲取硬件程序。
[0025]Sll:調(diào)用獲取的硬件程序加載目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的引導(dǎo)程序后,啟動(dòng)CPU。
[0026]獲取硬件程序后,調(diào)用該硬件程序來加載引導(dǎo)程序,引導(dǎo)程序是應(yīng)用程序啟動(dòng)前運(yùn)行的一段小程序,為運(yùn)行應(yīng)用程序做準(zhǔn)備。
[0027]S12:調(diào)用啟動(dòng)的CPU執(zhí)行引導(dǎo)程序,確定目標(biāo)FLASH中的代碼區(qū)和備份區(qū);其中,代碼區(qū)存儲(chǔ)升級(jí)后的應(yīng)用程序,備份區(qū)存儲(chǔ)升級(jí)前的應(yīng)用程序。
[0028]在目標(biāo)FLASH中設(shè)有代碼區(qū)和備份區(qū),代碼區(qū)中存儲(chǔ)的是升級(jí)后的應(yīng)用程序,備份區(qū)中存儲(chǔ)的是升級(jí)前的應(yīng)用程序,升級(jí)前的應(yīng)用程序是可以成功啟動(dòng)的,在調(diào)用啟動(dòng)的CPU執(zhí)行引導(dǎo)程序時(shí),首先需要確定其中的代碼區(qū)和備份區(qū)。
[0029]S13:加載并啟動(dòng)代碼區(qū)的應(yīng)用程序,若啟動(dòng)失敗次數(shù)大于設(shè)定次數(shù),加載并啟動(dòng)備份區(qū)的應(yīng)用程序。
[0030]在加載應(yīng)用程序時(shí),首先加載代碼區(qū)的應(yīng)用程序,因?yàn)榇a區(qū)的應(yīng)用程序是升級(jí)后的應(yīng)用程序,當(dāng)代碼區(qū)的應(yīng)用程序加載后不能成功啟動(dòng)時(shí),且啟動(dòng)失敗次數(shù)超過設(shè)定次數(shù)時(shí),為了保證FPGA即使升級(jí)不成功仍然能夠正常工作,就需要加載并啟動(dòng)備份區(qū)中的應(yīng)用程序,因?yàn)閭浞輩^(qū)中的應(yīng)用程序是升級(jí)前能夠成功啟動(dòng)的,所以加載備份區(qū)中的應(yīng)用程序一定能夠保證FPGA能夠正常工作。
[0031]其中設(shè)定次數(shù)可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,可以設(shè)置為1、2、3、4等等數(shù)值。
[0032]該方案首先獲取啟動(dòng)FPGA的硬件程序,調(diào)用硬件程序加載引導(dǎo)程序后啟動(dòng)CPU,然后調(diào)用CPU執(zhí)行引導(dǎo)程序,確定出目標(biāo)FLASH中的代碼區(qū)和備份區(qū),加載并啟動(dòng)代碼區(qū)中的應(yīng)用程序,若啟動(dòng)失敗次數(shù)超過設(shè)定次數(shù),則加載并啟動(dòng)備份區(qū)中的應(yīng)用程序,該方案中即使啟動(dòng)升級(jí)的應(yīng)用程序失敗,仍可以啟動(dòng)升級(jí)前的應(yīng)用程序,從而可以保證FPGA能夠正常工作。
[0033]具體的,上述Sll中的調(diào)用獲取的硬件程序加載目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的引導(dǎo)程序,具體包括:調(diào)用獲取的硬件程序產(chǎn)生應(yīng)用程序空間和引導(dǎo)空間;以及將目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的弓丨導(dǎo)程序加載到引導(dǎo)空間中。
[0034]在加載引導(dǎo)程序時(shí),可以首先調(diào)用硬件程序產(chǎn)生應(yīng)用程序空間和引導(dǎo)空間,其中應(yīng)用程序空間是為了存放應(yīng)用程序的,引導(dǎo)空間是為了存放引導(dǎo)程序的。然后將目標(biāo)FLASH中存儲(chǔ)的引導(dǎo)程序加載到引導(dǎo)空間中就可以了。當(dāng)然也可以采用其他方式。
[0035]具體的,上述S12中的確定目標(biāo)FLASH中的代碼區(qū)和備份區(qū),具體包括:初始化目標(biāo)FLASH的接口,通過初始化的接口讀取目標(biāo)FLASH中的代碼區(qū)地址和備份區(qū)地址;根據(jù)代碼區(qū)地址和備份區(qū)地址確定目標(biāo)FLASH中的代碼區(qū)和備份區(qū)。
[0036]具體的,上述S13中的加載并啟動(dòng)代碼區(qū)的應(yīng)用程序,若啟動(dòng)失敗次數(shù)大于設(shè)定次數(shù),加載并啟動(dòng)備份區(qū)的應(yīng)用程序,具體包括:將代碼區(qū)的應(yīng)用程序加載到應(yīng)用程序空間中并啟動(dòng);若啟動(dòng)成功,將目標(biāo)FLASH中的標(biāo)識(shí)信息更新為啟動(dòng)成功標(biāo)識(shí);若啟動(dòng)失敗,將標(biāo)識(shí)信息增加設(shè)定值,確定增加設(shè)定值后的標(biāo)識(shí)信息小于設(shè)定次數(shù)時(shí),將代碼區(qū)的應(yīng)用程序重新加載到應(yīng)用空間中并啟動(dòng);確定增加設(shè)定值后的標(biāo)識(shí)信息大于設(shè)定次數(shù)時(shí),將備份區(qū)的應(yīng)用程序加載到應(yīng)用空間中并啟動(dòng),將標(biāo)識(shí)信息更新為啟動(dòng)成功標(biāo)識(shí)。
[0037]可以在目標(biāo)FLASH中設(shè)置標(biāo)識(shí)信息,假設(shè)為bootstat,初始的時(shí)候bootstat可以設(shè)為O,在加載并啟動(dòng)代碼區(qū)的應(yīng)用程序時(shí),若啟動(dòng)成功將bootstat更新為啟動(dòng)成功標(biāo)識(shí),假設(shè)啟動(dòng)成功標(biāo)識(shí)為55AA ;若啟動(dòng)失敗,可以將bootstat增加1,那么bootstat就變?yōu)?,如果設(shè)定次數(shù)為3,當(dāng)bootstat變?yōu)?以后,就不再嘗試加載代碼區(qū)中的應(yīng)用程序了,也就是說不再對(duì)FPGA進(jìn)行升級(jí),直接加載備份區(qū)中的應(yīng)用程序即可。設(shè)立僅僅是以設(shè)定次數(shù)是3為例進(jìn)行說明的,當(dāng)然也可以是其他數(shù)值,判斷過程都是一樣的,這里就不再說明是其他數(shù)據(jù)的情況了。
[0038]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供一種嵌入中央處理器CPU的可編程門陣列FPGA,結(jié)構(gòu)如圖2所示,包括:
[0039]硬件程序獲取單元20,用于自身所在的嵌入中央處理器CPU的可編程門陣列FPGA上電后,從目標(biāo)閃存FLASH中獲取啟動(dòng)FPGA的硬件程序。
[0040]CPU啟動(dòng)單元21,用于調(diào)用獲取的硬件程序加載目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的弓I導(dǎo)程序后,啟動(dòng)CPU。
[0041]應(yīng)用程序啟動(dòng)單元22,用于調(diào)用啟動(dòng)的CPU執(zhí)行引導(dǎo)程序,確定目標(biāo)FLASH中的代碼區(qū)和備份區(qū);其中,代碼區(qū)存儲(chǔ)升級(jí)后的應(yīng)用程序,備份區(qū)存儲(chǔ)的升級(jí)前的應(yīng)用程序;以及加載并啟動(dòng)代碼區(qū)的應(yīng)用程序,若啟動(dòng)失敗次數(shù)大于設(shè)定次數(shù),加載并啟動(dòng)備份區(qū)的應(yīng)用程序。
[0042]具體的,上述CPU啟動(dòng)單元21,具體包括:調(diào)用獲取的硬件程序產(chǎn)生應(yīng)用程序空間和引導(dǎo)空間;以及將目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的引導(dǎo)程序加載到引導(dǎo)空間中。
[0043]具體的,上述應(yīng)用程序啟動(dòng)單元22,具體用于:初始化目標(biāo)FLASH的接口,通過初始化的接口讀取目標(biāo)FLASH中的代碼區(qū)地址和備份區(qū)地址;根據(jù)代碼區(qū)地址和備份區(qū)地址確定目標(biāo)FLASH中的代碼區(qū)和備份區(qū)。
[0044]具體的,上述應(yīng)用程序啟動(dòng)單元22,具體用于:將代碼區(qū)的應(yīng)用程序加載到應(yīng)用程序空間中并啟動(dòng);若啟動(dòng)成功,將目標(biāo)FLASH中的標(biāo)識(shí)信息更新為啟動(dòng)成功標(biāo)識(shí);若啟動(dòng)失敗,將標(biāo)識(shí)信息增加設(shè)定值,確定增加設(shè)定值后的標(biāo)識(shí)信息小于設(shè)定次數(shù)時(shí),將代碼區(qū)的應(yīng)用程序重新加載到應(yīng)用空間中并啟動(dòng);確定增加設(shè)定值后的標(biāo)識(shí)信息大于設(shè)定次數(shù)時(shí),將備份區(qū)的應(yīng)用程序加載到應(yīng)用空間中并啟動(dòng),將標(biāo)識(shí)信息更新為啟動(dòng)成功標(biāo)識(shí)。
[0045]下面以一個(gè)具體實(shí)施例說明上述嵌入CPU的FPGA的啟動(dòng)方法,如圖3所示,具體執(zhí)行步驟如下:
[0046]S30:嵌入CPU的FPGA上電后,從目標(biāo)FLASH中獲取硬件程序。
[0047]S31:調(diào)用獲取的硬件程序產(chǎn)生應(yīng)用程序空間和引導(dǎo)空間,將目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的弓I導(dǎo)程序加載到引導(dǎo)空間中。
[0048]其中應(yīng)用程序空間可以表示為Appram,引導(dǎo)空間可以表示為BootiOm,引導(dǎo)程序可以表不為bootloader。
[0049]S32:啟動(dòng) CPU。
[0050]S33:調(diào)用啟動(dòng)的CPU執(zhí)行引導(dǎo)程序,初始化目標(biāo)FLASH的接口。
[0051 ] 繼續(xù)沿用上例,調(diào)用啟動(dòng)的CPU執(zhí)行bootloader,也就是將寄存器指向bootrom基址,CPU就可以執(zhí)行bootrom中的bootloader 了。
[0052]S34:通過初始化的接口讀取目標(biāo)FLASH中的代碼區(qū)地址和備份區(qū)地址。
[0053]在目標(biāo)FLASH中存儲(chǔ)的是代碼區(qū)地址和備份區(qū)地址,因此,需要首先通過初始化的接口讀取代碼區(qū)地址和備份區(qū)地址。
[0054]S35:根據(jù)代碼區(qū)地址和備份區(qū)地址確定目標(biāo)FLASH中的代碼區(qū)和備份區(qū)。
[0055]根據(jù)代碼區(qū)地址和備份區(qū)地址,就可以找到目標(biāo)FLASH中的代碼區(qū)和備份區(qū)了。
[0056]S36:將代碼區(qū)的應(yīng)用程序加載到應(yīng)用程序空間中并啟動(dòng),若啟動(dòng)成功,執(zhí)行S37 ;否則,執(zhí)行S38。
[0057]將代碼區(qū)的應(yīng)用程序加載到Appram中,然后啟動(dòng)。
[0058]S37:將目標(biāo)FLASH中的標(biāo)識(shí)信息更新為啟動(dòng)成功標(biāo)識(shí)。
[0059]如果啟動(dòng)成功,可以將bootstat更新為55AA,下次啟動(dòng)的時(shí)候就可以直接加載代碼區(qū)的應(yīng)用程序了。
[0060]S38:將標(biāo)識(shí)信息增加設(shè)定值,判斷增加設(shè)定值后的標(biāo)識(shí)信息是否小于設(shè)定次數(shù),若是,執(zhí)行S36 ;否則,執(zhí)行S39。
[0061]S39:將備份區(qū)的應(yīng)用程序加載到應(yīng)用空間中并啟動(dòng)。
[0062]如果啟動(dòng)失敗,可以將bootstat加I,這里可以假設(shè)bootstat的初始值為O,然后判斷加I后的bootstat是否小于3。如果小于,就可以再次嘗試加載代碼區(qū)中的應(yīng)用程序,也就是升級(jí)后的應(yīng)用程序;如果大于,就不用再嘗試了,直接加載備份區(qū)中的應(yīng)用程序,因?yàn)閭浞輩^(qū)中的應(yīng)用程序是升級(jí)前的,是一定可以加載成功的,這就保證了即使FPGA升級(jí)失敗,仍可以使用升級(jí)前的應(yīng)用程序正常工作。而在現(xiàn)有技術(shù)中,一旦FPGA升級(jí)失敗,F(xiàn)PGA將不能正常工作。本發(fā)明中的方案可以確保FPGA升級(jí)失敗后仍能正常啟動(dòng)。
[0063]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種嵌入中央處理器CPU的可編程門陣列FPGA的啟動(dòng)方法,其特征在于,包括: 嵌入中央處理器CPU的可編程門陣列FPGA上電后,從目標(biāo)FLASH中獲取啟動(dòng)FPGA的硬件程序; 調(diào)用獲取的硬件程序加載所述目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的引導(dǎo)程序后,啟動(dòng)所述CPU ; 調(diào)用啟動(dòng)的所述CPU執(zhí)行所述引導(dǎo)程序,確定所述目標(biāo)FLASH中的代碼區(qū)和備份區(qū);其中,所述代碼區(qū)存儲(chǔ)升級(jí)后的應(yīng)用程序,所述備份區(qū)存儲(chǔ)升級(jí)前的應(yīng)用程序;以及 加載并啟動(dòng)所述代碼區(qū)的應(yīng)用程序,若啟動(dòng)失敗次數(shù)大于設(shè)定次數(shù),加載并啟動(dòng)所述備份區(qū)的應(yīng)用程序。
2.如權(quán)利要求1所述的方法,其特征在于,調(diào)用獲取的硬件程序加載所述目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的引導(dǎo)程序,具體包括: 調(diào)用獲取的硬件程序產(chǎn)生應(yīng)用程序空間和引導(dǎo)空間;以及 將所述目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的引導(dǎo)程序加載到所述弓丨導(dǎo)空間中。
3.如權(quán)利要求1所述的方法,其特征在于,確定所述目標(biāo)FLASH中的代碼區(qū)和備份區(qū),具體包括: 初始化所述目標(biāo)FLASH的接口,通過初始化的接口讀取所述目標(biāo)FLASH中的代碼區(qū)地址和備份區(qū)地址; 根據(jù)所述代碼區(qū)地址和所述備份區(qū)地址確定所述目標(biāo)FLASH中的代碼區(qū)和備份區(qū)。
4.如權(quán)利要求2所述的方法,其特征在于,加載并啟動(dòng)所述代碼區(qū)的應(yīng)用程序,若啟動(dòng)失敗次數(shù)大于設(shè)定次數(shù),加載并啟動(dòng)所述備份區(qū)的應(yīng)用程序,具體包括: 將所述代碼區(qū)的應(yīng)用程序加載到所述應(yīng)用程序空間中并啟動(dòng); 若啟動(dòng)成功,將所述目標(biāo)FLASH中的標(biāo)識(shí)信息更新為啟動(dòng)成功標(biāo)識(shí); 若啟動(dòng)失敗,將所述標(biāo)識(shí)信息增加設(shè)定值,確定增加設(shè)定值后的所述標(biāo)識(shí)信息小于所述設(shè)定次數(shù)時(shí),將所述代碼區(qū)的應(yīng)用程序重新加載到所述應(yīng)用空間中并啟動(dòng);確定增加設(shè)定值后的所述標(biāo)識(shí)信息大于設(shè)定次數(shù)時(shí),將所述備份區(qū)的應(yīng)用程序加載到所述應(yīng)用空間中并啟動(dòng),將所述標(biāo)識(shí)信息更新為所述啟動(dòng)成功標(biāo)識(shí)。
5.一種嵌入中央處理器CPU的可編程門陣列FPGA,其特征在于,包括: 硬件程序獲取單元,用于自身所在的嵌入中央處理器CPU的可編程門陣列FPGA上電后,從目標(biāo)閃存FLASH中獲取啟動(dòng)FPGA的硬件程序; (PU啟動(dòng)單元,用于調(diào)用獲取的硬件程序加載所述目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的引導(dǎo)程序后,啟動(dòng)所述CPU ; 應(yīng)用程序啟動(dòng)單元,用于調(diào)用啟動(dòng)的所述CPU執(zhí)行所述引導(dǎo)程序,確定所述目標(biāo)FLASH中的代碼區(qū)和備份區(qū);其中,所述代碼區(qū)存儲(chǔ)升級(jí)后的應(yīng)用程序,所述備份區(qū)存儲(chǔ)的升級(jí)前的應(yīng)用程序;以及加載并啟動(dòng)所述代碼區(qū)的應(yīng)用程序,若啟動(dòng)失敗次數(shù)大于設(shè)定次數(shù),加載并啟動(dòng)所述備份區(qū)的應(yīng)用程序。
6.如權(quán)利要求5所述的FPGA,其特征在于,所述CPU啟動(dòng)單元,具體包括: 調(diào)用獲取的硬件程序產(chǎn)生應(yīng)用程序空間和引導(dǎo)空間;以及 將所述目標(biāo)FLASH中的啟動(dòng)應(yīng)用程序的引導(dǎo)程序加載到所述弓丨導(dǎo)空間中。
7.如權(quán)利要求5所述的FPGA,其特征在于,所述應(yīng)用程序啟動(dòng)單元,具體用于:初始化所述目標(biāo)FLASH的接口,通過初始化的接口讀取所述目標(biāo)FLASH中的代碼區(qū)地址和備份區(qū)地址; 根據(jù)所述代碼區(qū)地址和所述備份區(qū)地址確定所述目標(biāo)FLASH中的代碼區(qū)和備份區(qū)。
8.如權(quán)利要求6所述的FPGA,其特征在于,所述應(yīng)用程序啟動(dòng)單元,具體用于: 將所述代碼區(qū)的應(yīng)用程序加載到所述應(yīng)用程序空間中并啟動(dòng); 若啟動(dòng)成功,將所述目標(biāo)FLASH中的標(biāo)識(shí)信息更新為啟動(dòng)成功標(biāo)識(shí); 若啟動(dòng)失敗,將所述標(biāo)識(shí)信息增加設(shè)定值,確定增加設(shè)定值后的所述標(biāo)識(shí)信息小于所述設(shè)定次數(shù)時(shí),將所述代碼區(qū)的應(yīng)用程序重新加載到所述應(yīng)用空間中并啟動(dòng);確定增加設(shè)定值后的所述標(biāo)識(shí)信息大于設(shè)定次數(shù)時(shí),將所述備份區(qū)的應(yīng)用程序加載到所述應(yīng)用空間中并啟動(dòng),將所述標(biāo)識(shí)信息更新為所述啟動(dòng)成功標(biāo)識(shí)。
【文檔編號(hào)】G06F9/445GK103631674SQ201210307016
【公開日】2014年3月12日 申請(qǐng)日期:2012年8月24日 優(yōu)先權(quán)日:2012年8月24日
【發(fā)明者】吳栩龍, 左延麟 申請(qǐng)人:京信通信系統(tǒng)(中國(guó))有限公司