亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種動(dòng)態(tài)加載單板芯片firmware程序的實(shí)現(xiàn)方法

文檔序號:6582361閱讀:327來源:國知局
專利名稱:一種動(dòng)態(tài)加載單板芯片firmware程序的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及集成電路芯片的運(yùn)行程序動(dòng)態(tài)加載實(shí)現(xiàn)方法,更確切地說是涉及一種動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE(目前無專門的中文名稱)程序的實(shí)現(xiàn)方法。
路由器上有很多種單板,單板上的許多芯片都有自己的FIRMWARE程序,在路由器上電啟動(dòng)或單板異常復(fù)位的時(shí)候就需要進(jìn)行單板芯片F(xiàn)IRMWARE程序的加載。由于有些芯片的FIRMWARE程序比較大,例如達(dá)到5M字節(jié)以上,這就產(chǎn)生了FIRMWARE程序的存儲方式和加載速度的問題。同時(shí),單板或FIRMWARE程序在運(yùn)行過程中由于某種原因而出現(xiàn)故障,為了使出現(xiàn)異常的芯片重新工作而又不影響主機(jī)以及其它單板的正常運(yùn)行,就必須對芯片進(jìn)行動(dòng)態(tài)FIRMWARE程序的加載。由于廠家提供的FIRMWARE程序可能還存在著很多的缺陷(BUG),在使用的過程中就需要對發(fā)現(xiàn)的缺陷(BUG)進(jìn)行修改,那么在修改缺陷(BUG)后或在增加新功能時(shí)就需要對單板的FIRMWARE程序進(jìn)行更新。
目前,實(shí)現(xiàn)單板芯片F(xiàn)IRMWARE程序加載的方案有如下幾種
方案1將FIRMWARE程序存儲在主機(jī)快閃存儲器(FLASH)的固定地址中,在需要加載FIRMWARE程序的時(shí)候,從主機(jī)FLASH的該固定地址中讀出,送到單板上并加載到芯片中。
該方案的缺點(diǎn)是FIRMWARE程序保存在主機(jī)FLASH的固定地址中,主機(jī)的程序和FIRMWARE程序是分離的,這將不利于程序版本的管理。同時(shí),由于要占用主機(jī)FLASH的固定地址空間,在需要進(jìn)行主機(jī)程序升級或要對主機(jī)FLASH地址空間進(jìn)行重新分配的時(shí)候,就有可能要修改存儲該FIRMWARE程序的固定地址,同時(shí)還需要修改相應(yīng)的主機(jī)程序,還要對主機(jī)程序和FIRMWARE程序分別進(jìn)行升級更新,很可能會(huì)出現(xiàn)主機(jī)版本和FIRMWARE程序版本不兼容的問題。
方案2將FIRMWARE程序存儲在單板上的FLASH中,在需要加載的時(shí)候,從單板上的FLASH中讀出進(jìn)行加載。
該方案的缺點(diǎn)是將FIRMWARE程序存儲在單板上的FLASH中,這就需要在單板上增加一個(gè)FLASH,將會(huì)增加產(chǎn)品的成本,同時(shí)也需要在軟件和硬件上增加對FLASH處理的部分。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案是這樣的一種動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序的實(shí)現(xiàn)方法,其特征在于包括以下處理步驟A.壓縮單板芯片F(xiàn)IRMWARE程序,和轉(zhuǎn)換成常量字符數(shù)組的C文件,再編譯鏈接到主機(jī)程序中;B.在需要加載單板芯片F(xiàn)IRMWARE程序的時(shí)候,向主機(jī)內(nèi)存申請一空間,該空間的大小等同于所述的單板芯片F(xiàn)IRMWARE程序;C.對該常量字符數(shù)組的C文件進(jìn)行解壓縮,并存儲到主機(jī)內(nèi)存中的該空間中;
D.將主機(jī)內(nèi)存該空間中的單板芯片F(xiàn)IRMWARE程序動(dòng)態(tài)加載到單板芯片中,并在加載結(jié)束后,釋放所述主機(jī)內(nèi)存中的該空間。
所述的步驟A,所述的壓縮處理是用壓縮軟件ARJ(這是一個(gè)常用的名稱為ARJ的軟件)將單板芯片F(xiàn)IRMWARE程序壓縮處理成壓縮文件;所述的轉(zhuǎn)換是利用編寫的轉(zhuǎn)換應(yīng)用程序?qū)嚎s文件轉(zhuǎn)換成所述的常量字符數(shù)組的C文件;所述的編譯鏈接是在編譯主機(jī)程序時(shí)將所述的常量字符數(shù)組的C文件鏈接到主機(jī)程序中。
所述的步驟B是在主機(jī)上電啟動(dòng)或在單板異常復(fù)位需要加載單板芯片F(xiàn)IRMWARE程序時(shí)進(jìn)行的。
上述步驟B的執(zhí)行進(jìn)一步包括設(shè)置一個(gè)單板異常狀態(tài)標(biāo)志位,在定時(shí)檢查到該異常狀態(tài)標(biāo)志位為表明單板處于異常狀態(tài)的“真”時(shí),需要進(jìn)行復(fù)位重啟、重新動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序。
所述的步驟B進(jìn)一步包括是從經(jīng)步驟A壓縮處理、轉(zhuǎn)換生成的常量字符數(shù)組的C文件中讀出單板芯片F(xiàn)IRMWARE程序文件的大小,再動(dòng)態(tài)申請同樣大小的主機(jī)內(nèi)存。
所述的讀出文件的大小包括在所述C文件的每個(gè)壓縮文件的固定位置處存儲壓縮前FIRMWARE程序各被壓縮文件的名稱、大小和壓縮后該被壓縮文件的名稱;加載單板芯片F(xiàn)IRMWARE程序時(shí),在壓縮文件的該固定位置處讀出該被壓縮文件的大小。
所述的步驟C中,還包括在解壓縮時(shí),對內(nèi)存空間中解壓縮后的FIRMWARE程序計(jì)算其校驗(yàn)和;所述的步驟D中,還包括對加載到單板芯片中的FIRMWARE程序進(jìn)行校驗(yàn)和計(jì)算,在判斷兩校驗(yàn)結(jié)果不一致時(shí),返回執(zhí)行步驟A至D,在判斷兩校驗(yàn)結(jié)果一致時(shí),結(jié)束加載,釋放所述的主機(jī)內(nèi)存中的該空間。
本發(fā)明的動(dòng)態(tài)加載FIRMWARE的方法,先將FIRMWARE程序用壓縮軟件ARJ壓縮,利用一個(gè)編寫的轉(zhuǎn)換程序,將FIRMWARE程序的壓縮文件轉(zhuǎn)換成一個(gè)常量字符數(shù)組的C語言程序,在編譯主機(jī)程序時(shí)將壓縮、轉(zhuǎn)換后的FIRMWARE文件鏈接到主機(jī)程序中;在主機(jī)上電啟動(dòng)或單板異常復(fù)位等需要加載單板芯片F(xiàn)IRMWARE程序的時(shí)候,先根據(jù)FI RMWARE文件的大小在主機(jī)的存儲區(qū)(MEMORY)中申請同樣大小的空間,將該常量字符數(shù)組的C語言程序解壓縮到主機(jī)的該存儲區(qū)(MEMORY)中,然后對芯片進(jìn)行動(dòng)態(tài)加載,加載結(jié)束后再將該申請到的存儲區(qū)(MEMORY)釋放。
本發(fā)明動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE的方法,是通過將壓縮后的FIRMWARE程序轉(zhuǎn)換成一個(gè)常量字符數(shù)組的C文件再編譯鏈接到主機(jī)的程序中,不需要在單板上增加一個(gè)存儲FIRMWARE程序的FLASH芯片,可以降低硬件的成本,降低單板的元件密度;由于FIRMWARE程序是和主機(jī)的程序合為一體的,可以很方便地進(jìn)行版本的管理,對主機(jī)程序的修改不會(huì)影響FIRMWARE程序,同時(shí)FIRMWARE程序的升級也不會(huì)影響到主機(jī)的其它程序;FIRMWARE程序和主機(jī)程序雖然合為一體,但又相互獨(dú)立,一旦單板檢測到本單板處于異常狀態(tài)時(shí),重新加載該單板的FIRMWARE程序,使該單板重新正常工作,不會(huì)影響到主機(jī)及其它單板的正常工作。
參見

圖1,是按本發(fā)明的方案動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE的總體流程框圖。
步驟11,將單板芯片的FIRMWARE程序用壓縮軟件ARJ進(jìn)行壓縮(壓縮成ARJ文件),得到壓縮后的文件FIRMWARE.ARJ,對單板芯片的FIRMWARE程序進(jìn)行壓縮的目的是為了節(jié)省單板芯片F(xiàn)IRMWARE程序在主機(jī)程序中所占的空間;步驟12,編寫一個(gè)轉(zhuǎn)換應(yīng)用程序(可采用專門的技術(shù)實(shí)現(xiàn),這是一個(gè)特定的轉(zhuǎn)換,將一個(gè)文件轉(zhuǎn)換成專門格式的文件,是一種常規(guī)技術(shù)),將FIRMWARE.ARJ文件轉(zhuǎn)換成一個(gè)C文件FIRMWARE.C,該C文件就是一個(gè)常量字符數(shù)組,其轉(zhuǎn)換后的常量字符數(shù)組文件的組成形式如下
cons t char FIRMWARE[]={0x60,0xea,0x25,0x0,0x1e,0x7,0x1,0x0,0x10,0x0,0x2,0x54,0x54,0x95,0x76,0x2b,...............
0x2a,0xcd,0x9e,0xc3,0xfa,0xb3,0x10,0x60,0xea,0x0,0x0}通過將FIRMWARE程序轉(zhuǎn)換成常量字符數(shù)組的C文件,可以將比較大(如1.5M左右)的FIRMWARE壓縮文件鏈接到主機(jī)程序中,并得到相應(yīng)的地址,供主機(jī)程序在其它函數(shù)中使用。同時(shí),一次編譯成功后就不用再對該文件進(jìn)行編譯了,除非文件升級時(shí)(但如果轉(zhuǎn)換成*.h文件,那么在包含該*.h的文件一旦修改時(shí),就要重新進(jìn)行編譯,由于FIRMWARE文件比較大,會(huì)導(dǎo)致編譯鏈接的時(shí)間很長);步驟13,修改主機(jī)程序的工程文件,將FIRMWARE.C文件添加到主機(jī)工程文件中,進(jìn)行編譯鏈接,即將FIRMWARE.C文件編譯鏈接進(jìn)主機(jī)程序中;步驟14,在主機(jī)上電啟動(dòng)或單板異常復(fù)位等需要加載單板芯片F(xiàn)IRMWARE程序的時(shí)候,要將FIRMWARE的壓縮文件解壓縮并加載到單板上的芯片中,在解壓縮的時(shí)候,先從單板芯片程序FIRMWARE的壓縮、轉(zhuǎn)換后的FIRMWARE.C中讀出該文件的大小,然后向主機(jī)申請相應(yīng)大小的內(nèi)存空間,將FIRMWARE.C文件解壓縮并存儲到所申請的該內(nèi)存空間地址中;步驟15,運(yùn)行加載流程,將FIRMWARE程序加載到單板芯片中,加載完畢后釋放該申請到的內(nèi)存空間,在每個(gè)ARJ壓縮文件中各相應(yīng)的位置,都存儲著壓縮前FIRMWARE程序中各被壓縮文件的名稱、大小和壓縮后該被壓縮文件的名稱。運(yùn)行加載流程時(shí),在壓縮文件的相應(yīng)位置處先將被壓縮文件的大小讀出,該相應(yīng)位置可以是壓縮文件中壓縮文件名稱之后從第29字節(jié)開始的前四個(gè)字節(jié)。由于FIRMWARE文件比較大,而且進(jìn)行FIRMWARE程序升級后文件的大小還會(huì)發(fā)生變化,根據(jù)其大小動(dòng)態(tài)申請主機(jī)的內(nèi)存,可以避免申請到的主機(jī)內(nèi)存和FIRMWARE程序文件的大小不匹配,若中請的內(nèi)存小則會(huì)導(dǎo)致解壓縮不成功,若申請的主機(jī)內(nèi)存太大則又會(huì)浪費(fèi)主機(jī)的資源;步驟16,F(xiàn)IRMWARE程序加載結(jié)束后要對加載到芯片SDRAM中的FIRMWARE程序進(jìn)行校驗(yàn),進(jìn)行校驗(yàn)的方法是在解壓縮時(shí),對內(nèi)存空間中解壓縮后的FIRMWARE程序計(jì)算其校驗(yàn)和,在加載結(jié)束后,再讀出加載到芯片SDRAM中的FIRMWARE程序并計(jì)算其校驗(yàn)和,如果二者的校驗(yàn)和相等,表示加載成功,運(yùn)行FIRMWARE程序,啟動(dòng)程序使芯片正常工作,如果校驗(yàn)和不相等,表示加載失敗,返回步驟11,重新進(jìn)行FIRMWARE的加載流程。
在FIRMWARE程序動(dòng)態(tài)加載的實(shí)現(xiàn)過程中,可在主機(jī)程序中設(shè)置一個(gè)表征單板異常狀態(tài)的標(biāo)志位,當(dāng)單板處于正常狀態(tài)的時(shí)候該標(biāo)志位為“假”,當(dāng)單板異常的時(shí)候設(shè)置該標(biāo)志位為“真”,定時(shí)檢查該標(biāo)志位,如果該標(biāo)志位為“真”,則表明單板處于異常狀態(tài),對單板復(fù)位,重新執(zhí)行步驟11至15的過程,加載單板芯片F(xiàn)IRMWARE程序,使單板重新恢復(fù)正常的工作狀態(tài)。
整個(gè)動(dòng)態(tài)加載過程不會(huì)影響主機(jī)和其它單板的正常工作。
本發(fā)明經(jīng)在路由器的單板中實(shí)驗(yàn)性使用,證明可靠可行。
權(quán)利要求
1.一種動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序的實(shí)現(xiàn)方法,其特征在于包括以下處理步驟A.壓縮單板芯片F(xiàn)IRMWARE程序,和轉(zhuǎn)換成常量字符數(shù)組的C文件,再編譯鏈接到主機(jī)程序中;B.在需要加載單板芯片F(xiàn)IRMWARE程序的時(shí)候,向主機(jī)內(nèi)存申請一空間,該空間的大小等同于所述的單板芯片F(xiàn)IRMWARE程序;C.對該常量字符數(shù)組的C文件進(jìn)行解壓縮,并存儲到主機(jī)內(nèi)存中的該空間中;D.將主機(jī)內(nèi)存該空間中的單板芯片F(xiàn)IRMWARE程序動(dòng)態(tài)加載到單板芯片中,并在加載結(jié)束后,釋放所述主機(jī)內(nèi)存中的該空間。
2.根據(jù)權(quán)利要求1所述的一種動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序的實(shí)現(xiàn)方法,其特征在于所述的步驟A,所述的壓縮處理是用壓縮軟件ARJ將單板芯片F(xiàn)IRMWARE程序壓縮處理成壓縮文件;所述的轉(zhuǎn)換是利用編寫的轉(zhuǎn)換應(yīng)用程序?qū)嚎s文件轉(zhuǎn)換成所述的常量字符數(shù)組的C文件;所述的編譯鏈接是在編譯主機(jī)程序時(shí)將所述的常量字符數(shù)組的C文件鏈接到主機(jī)程序中。
3.根據(jù)權(quán)利要求1所述的一種動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序的實(shí)現(xiàn)方法,其特征在于所述的步驟B是在主機(jī)上電啟動(dòng)或在單板異常復(fù)位需要加載單板芯片F(xiàn)IRMWARE程序時(shí)進(jìn)行的。
4.根據(jù)權(quán)利要求3所述的一種動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序的實(shí)現(xiàn)方法,其特征在于所述步驟B的執(zhí)行進(jìn)一步包括設(shè)置一個(gè)單板異常狀態(tài)標(biāo)志位,在定時(shí)檢查到該異常狀態(tài)標(biāo)志位為表明單板處于異常狀態(tài)的“真”時(shí),需要進(jìn)行復(fù)位重啟、重新動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序。
5.根據(jù)權(quán)利要求1所述的一種動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序的實(shí)現(xiàn)方法,其特征在于所述的步驟B進(jìn)一步包括是從經(jīng)步驟A壓縮處理、轉(zhuǎn)換生成的常量字符數(shù)組的C文件中讀出單板芯片F(xiàn)IRMWARE程序文件的大小,再動(dòng)態(tài)申請同樣大小的主機(jī)內(nèi)存。
6.根據(jù)權(quán)利要求5所述的一種動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序的實(shí)現(xiàn)方法,其特征在于所述的讀出文件的大小包括在所述C文件的每個(gè)壓縮文件的固定位置處存儲壓縮前FIRMWARE程序各被壓縮文件的名稱、大小和壓縮后該被壓縮文件的名稱;加載單板芯片F(xiàn)IRMWARE程序時(shí),在壓縮文件的該固定位置處讀出該被壓縮文件的大小。
7.根據(jù)權(quán)利要求1所述的一種動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序的實(shí)現(xiàn)方法,其特征在于所述的步驟C中,還包括在解壓縮時(shí),對內(nèi)存空間中解壓縮后的FIRMWARE程序計(jì)算其校驗(yàn)和;所述的步驟D中,還包括對加載到單板芯片中的FIRMWARE程序進(jìn)行校驗(yàn)和計(jì)算,在判斷兩校驗(yàn)結(jié)果不一致時(shí),返回執(zhí)行步驟A至D,在判斷兩校驗(yàn)結(jié)果一致時(shí),結(jié)束加載,釋放所述的主機(jī)內(nèi)存中的該空間。
全文摘要
本發(fā)明涉及一種動(dòng)態(tài)加載單板芯片F(xiàn)IRMWARE程序的實(shí)現(xiàn)方法,包括將單板芯片F(xiàn)IRMWARE程序壓縮、轉(zhuǎn)換成常量字符數(shù)組的C文件,再編譯鏈接到主機(jī)程序中;在需要加載單板芯片F(xiàn)IRMWARE程序的時(shí)候,在主機(jī)內(nèi)存中先申請一大小等同于單板芯片F(xiàn)IRMWARE程序的空間;再對該常量字符數(shù)組的C文件進(jìn)行解壓縮,并存儲到主機(jī)內(nèi)存中的該空間中;將主機(jī)內(nèi)存該空間中的單板芯片F(xiàn)IRMWARE程序動(dòng)態(tài)加載到單板芯片中,并在加載結(jié)束后,釋放所述主機(jī)內(nèi)存中的該空間。通過分別計(jì)算解壓縮后的FIRMWARE程序和加載到芯片中的FIRMWARE程序的校驗(yàn)和,并比較兩者間的一致性,可判斷加載是否成功。本發(fā)明讓主機(jī)程序與單板芯片F(xiàn)IRMWARE程序既合為一體又互相獨(dú)立,便于兩者的版本管理,且在執(zhí)行動(dòng)態(tài)加載時(shí)互不影響工作。
文檔編號G06F9/445GK1467629SQ02123679
公開日2004年1月14日 申請日期2002年7月8日 優(yōu)先權(quán)日2002年7月8日
發(fā)明者陳建慧 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1