專利名稱:嵌入式設(shè)備的版本更新方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種嵌入式設(shè)備的版本更新方法及系統(tǒng)。
背景技術(shù):
一般的嵌入式設(shè)備,往往硬件資源都是有限的,如RAM (random accessmemory,隨機存取存儲器),ROM (Read-Only Memory,只讀存儲器)容量較小,NAND-flash是一種非易失閃存技術(shù),具較高的單元密度,可以達到高存儲密度,寫入和擦除速度較快。NAND-flash的單元尺寸幾乎是NOR-f Iash的一半,可以在給定的模具尺寸內(nèi)提供更高的容量,具有很快的寫入和擦除速度,但使用NAND-flash存在啟動區(qū)的問題,且一般可直接使用的引導區(qū) 大小只有16kb。標準的Boot Loader是在設(shè)備的操作系統(tǒng)運行之前運行的一段小程序,通過BootLoader,可初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將設(shè)備的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。標準的Boot Loader—般只提供TFTP (Trivial File Transfer Protocol,簡單文件傳輸協(xié)議)升級服務,但其可被改寫,改寫后的標準的Boot Loader稱為變體的Boot Loader,通常,Boot Loader被固化在設(shè)備中,特別是在嵌入式應用中,其嚴重地依賴于硬件;在嵌入式設(shè)備的使用中,當運行版本發(fā)生異?;蛴刑厥庑枰獣r,往往需要在Boot Loader或者引導程序下更換版本,現(xiàn)有的通過Boot Loader進行版本更新的方法具有以下缺陷一是被動升級和不靈活,需要人員主動操作,且Boot Loader已經(jīng)固化在嵌入式設(shè)備,無法根據(jù)需要隨時更新;二是硬件要求較高,需要大容量的存儲芯片(一般要求超過IM byte)和內(nèi)存。
發(fā)明內(nèi)容
本發(fā)明的目的是,提供一種嵌入式設(shè)備的版本更新方法及系統(tǒng),以優(yōu)化現(xiàn)有技術(shù)在版本更新過程中占用內(nèi)存資源大的問題。本發(fā)明提供了一種嵌入式設(shè)備的版本更新方法,上述方法將變體的BootLoader程序存儲在客戶端,客戶端收到嵌入式設(shè)備的版本更新請求時,將上述變體的Boot Loader程序下發(fā)給上述嵌入式設(shè)備;上述嵌入式設(shè)備執(zhí)行收到的變體的Boot Loader程序,進行版本更新。優(yōu)選地,上述版本更新請求為xmodem請求。優(yōu)選地,上述客戶端通過xmodem報文將上述變體的Boot Loader程序分片下發(fā)給上述嵌入式設(shè)備,上述嵌入式設(shè)備收到報文時,判斷上述報文是否是xmodem報文,若是,則將上述xmodem報文中的變體的Boot Loader程序數(shù)據(jù)保存到內(nèi)存中,否則,丟棄上述報文。優(yōu)選地,上述嵌入式設(shè)備在變體的Boot Loader程序接收完畢后,還對上述變體的Boot Loader程序進行校驗,若校驗成功,則執(zhí)行上述變體的BootLoader程序,否則,重新向上述客戶端發(fā)送版本更新請求。優(yōu)選地,上述嵌入式設(shè)備執(zhí)行上述變體的Boot Loader程序進行版本更新步驟具體為根據(jù)上述變體的Boot Loader程序提供的驅(qū)動,初始化相應的端口 ;通過上述端口,將上述變體的Boot Loader程序提供的HTML (HypertextMarkupLanguage,文本標記語言)頁面發(fā)送給上述客戶端;等待上述客戶端下發(fā)版本文件;將收到的版本文件數(shù)據(jù)保存到內(nèi)存中;版本文件接收完畢后,根據(jù)上述變體的Boot Loader程序提供的方法,對上述版本文件進行校驗;若校驗成功,則將上述版本文件另存到本地Flash中,同時啟用內(nèi)存中的版本文件;若校驗失敗,則在本機的WEB頁面中提示校驗失敗?!?yōu)選地,上述客戶端收到HTML頁面后,將上述HTML頁面顯示給用戶并等待用戶導入版本文件;檢測到用戶導入版本文件后,通過TCP/IP (Transmission ControlProtocol/Internet Protocol,傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議)報文將上述版本文件分片下發(fā)給上述嵌入式設(shè)備。優(yōu)選地,上述嵌入式設(shè)備收到報文后,還執(zhí)行以下操作判斷上述報文是否是TCP/IP報文,若是,則判斷上述報文的協(xié)議類型是否是HTTP (Hyper Text Transfer Protocol,超文本傳輸協(xié)議),若是,則將上述報文中的版本文件數(shù)據(jù)存入內(nèi)存中;否則,丟棄上述報文。本發(fā)明進一步提供了一種嵌入式設(shè)備的版本更新系統(tǒng),包括客戶端和嵌入式設(shè)備,上述客戶端,用于存儲變體的Boot Loader程序,并在收到嵌入式設(shè)備的版本更新請求時,將上述變體的Boot Loader程序下發(fā)給上述嵌入式設(shè)備;上述嵌入式設(shè)備,用于在需要進行版本更新時,向上述客戶端發(fā)送版本更新請求,并執(zhí)行收到的變體的Boot Loader程序,進行版本更新。優(yōu)選地,上述客戶端,用于通過xmodem報文將上述變體的Boot Loader程序分片下發(fā)給上述嵌入式設(shè)備,以及為用戶提供修改上述變體的Boot Loader程序的接口 ;上述嵌入式設(shè)備,用于在請求階段,判斷收到的報文是否是xmodem報文,并將xmodem報文中的變體的Boot Loader程序數(shù)據(jù)保存到內(nèi)存中,丟棄非xmodem報文,以及對收到的變體的Boot Loader程序進行校驗,并在校驗失敗時,重新發(fā)送版本更新請求給上述客戶端。優(yōu)選地,上述客戶端,用于在收到HTML頁面后,將上述HTML頁面顯示給用戶并在檢測到用戶導入版本文件后,通過TCP/IP報文將上述版本文件分片下發(fā)給上述嵌入式設(shè)備;上述嵌入式設(shè)備,用于根據(jù)上述變體的Boot Loader程序提供的驅(qū)動,初始化相應的端口,并通過上述端口,將上述變體的Boot Loader程序提供的HTML頁面發(fā)送給上述客戶端,以及在執(zhí)行變體的Boot Loader程序過程中,收到客戶端下發(fā)的報文時,判斷上述報文是否是TCP/IP報文,并在上述報文是TCP/IP報文時,判斷上述報文的協(xié)議類型是否是HTTP,在上述報文是HTTP類型的TCP/IP報文時,將上述報文中的版本文件數(shù)據(jù)存入內(nèi)存中;在上述報文為非TCP/IP報文或者為非HTTP類型的TCP/IP報文時,丟棄上述報文,在版本文件接收完畢后,根據(jù)上述變體的Boot Loader程序提供的方法,對上述版本文件進行校驗,并在校驗成功時,將上述版本文件另存到本地Flash中,同時從內(nèi)存啟用上述版本文件,在校驗失敗時,在本機的WEB頁面中提示校驗失敗。本發(fā)明通過使用變體的Boot Loader程序并將其存儲在客戶端的方式,使得嵌入式設(shè)備的ROM中只存儲引導程序,減少了 ROM資源的使用,由于變體的Boot Loader程序本身占用資源就比標準的Boot Loader程序少,故本發(fā)明節(jié)約了嵌入式設(shè)備中的RAM空間。
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中圖I是本發(fā)明嵌入式設(shè)備的版本更新系統(tǒng)優(yōu)選實施例原理框圖;圖2是本發(fā)明嵌入式設(shè)備的版本更新方法中客戶端側(cè)的優(yōu)選實施例流程圖;圖3是本發(fā)明嵌入式設(shè)備的版本更新方法中嵌入式設(shè)備側(cè)的優(yōu)選實施例流程圖。
具體實施例方式為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖和實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖I所示,是本發(fā)明嵌入式設(shè)備的版本更新系統(tǒng)優(yōu)選實施例原理框圖,包括客戶端和嵌入式設(shè)備,客戶端,用于為用戶提供修改所述變體的Boot Loader程序的接口,存儲變體的Boot Loader程序,并在收到嵌入式設(shè)備的版本更新請求時,通過xmodem報文將上述變體的Boot Loader程序分片下發(fā)給嵌入式設(shè)備,以及在收到嵌入式設(shè)備發(fā)送的HTML頁面后,將上述HTML頁面顯示給用戶,并在檢測到用戶導入版本文件后,通過TCP/IP報文將上述版本文件分片下發(fā)給嵌入式設(shè)備;嵌入式設(shè)備,用于在檢測到需要進行版本更新時,向上述客戶端發(fā)送版本更新請求,并在請求階段,判斷收到的報文是否是xmodem報文,并將上述報文中的變體的BootLoader程序數(shù)據(jù)按照接收順序保存到內(nèi)存中,丟棄非xmodem報文,以及在變體的BootLoader程序接收完畢時,對收到的上述變體的Boot Loader程序進行校驗,并在校驗失敗時,重新發(fā)送版本更新請求給客戶端,在校驗成功時,執(zhí)行上述變體的Boot Loader程序,根據(jù)上述變體的Boot Loader程序提供的驅(qū)動,初始化相應的端口,并通過上述端口,將上述變體的Boot Loader程序提供的HTML頁面發(fā)送給客戶端,以及在執(zhí)行變體的Boot Loader程序過程中,收到客戶端下發(fā)的報文時,判斷上述報文是否是TCP/IP報文,并在上述報文是TCP/IP報文時,判斷上述報文的協(xié)議類型是否是HTTP,在上述報文是HTTP類型的TCP/IP報文時,將上述報文中的版本文件數(shù)據(jù)存入內(nèi)存中;在上述報文為非TCP/IP報文或者為非HTTP類型的TCP/IP報文時,丟棄上述報文,在版本文件接收完畢后,根據(jù)上述變體的Boot Loader程序提供的方法,對上述版本文件進行校驗,并在校驗成功后,將上述版本文件保存到本地Flash中,同時啟用內(nèi)存中的上述版本文件,在校驗失敗時,在本機的WEB頁面中提示校驗失敗。如圖2所示,是本發(fā)明嵌入式設(shè)備的版本更新方法中客戶端側(cè)的優(yōu)選實施例流程圖,本實施例假設(shè)客戶端上已保存了變體的Boot Loader程序,包括以下步驟步驟S000 :收到嵌入式設(shè)備的版本更新請求;本實施例中,上述版本更新請求為xmodem請求。步驟SOOl :通過xmodem報文將變體的Boot Loader程序分片下發(fā)給上述嵌入式設(shè)備;步驟S002 :收到HTML頁面,顯示上述HTML頁面給用戶;步驟S003 :等待用戶導入版本文件; 步驟S004 :檢測到用戶導入版本文件;用戶在收到HTML頁面后的任何時間里,均可通過在客戶端瀏覽器的地址欄中輸入上述嵌入式設(shè)備的IP地址,登陸上述嵌入式設(shè)備的WEB頁面,了解上述嵌入式設(shè)備的動態(tài)。步驟S005 :通過HTTP類型的TCP/IP報文將版本文件分片下發(fā)給上述嵌入式設(shè)備。如圖3所示,是本發(fā)明嵌入式設(shè)備的版本更新方法中嵌入式設(shè)備側(cè)的優(yōu)選實施例流程圖,本實施例包括以下步驟步驟S100 :檢測到需要進行版本更新;版本更新可能是由于預設(shè)的外部事件發(fā)生而導致的,例如default鍵被按下,或者用戶通過在客戶端上調(diào)用嵌入式設(shè)備的WEB頁面,輸入版本更新命令等;也可能是本地版本不可用導致的,比如版本異常、版本丟失等。步驟SlOl :發(fā)送版本更新請求給客戶端;由于嵌入式設(shè)備與客戶端之間通過使用xmodem協(xié)議的串口通信,故版本更新請求即為xmodem請求。步驟S102 :接收客戶端下發(fā)的報文;步驟S103 :判斷上述報文是否是xmodem報文,若是,則執(zhí)行步驟S105 ;否則,執(zhí)行步驟S104 ;步驟S104 :丟棄上述報文,執(zhí)行步驟S102 ;步驟S105 :將上述xmodem報文中的變體的Boot Loader程序數(shù)據(jù)按照接收順序保存到內(nèi)存中;步驟S106 :判斷上述xmodem報文是否是結(jié)束報文,若是,則執(zhí)行步驟S107,否則,繼續(xù)執(zhí)行步驟S102 ;步驟S107 :對內(nèi)存中的變體的Boot Loader程序進行校驗;步驟S108 :判斷是否校驗成功,若是,則執(zhí)行步驟S109 ;否則,執(zhí)行步驟SlOl ;以上步驟屬于嵌入式設(shè)備的引導流程。校驗成功后,即開始執(zhí)行上述變體的Boot Loader程序;以下步驟為在變體的Boot Loader環(huán)境下執(zhí)行的WEB服務流程,WEB服務進程在空閑進程里執(zhí)行。步驟S109 :根據(jù)上述變體的Boot Loader程序提供的驅(qū)動,初始化相應的端口 ;步驟SllO :通過上述端口,將上述變體的Boot Loader程序提供的HTML頁面發(fā)送給客戶端;步驟Slll :接收客戶端下發(fā)的報文;步驟S112 :判斷上述報文是否是TCP/IP報文,若是,則執(zhí)行步驟S113 ;否則,執(zhí)行步驟SI 14 ;步驟S113 :判斷上述報文的協(xié)議類型是否是HTTP,若是,則執(zhí)行步驟S115 ;否則,執(zhí)行步驟SI 14 步驟SI 14 :丟棄上述報文,繼續(xù)執(zhí)行步驟SOll ;步驟SI 15 :將上述報文中的版本文件數(shù)據(jù)按照接收順序保存到內(nèi)存中;步驟S116:判斷上述報文是否是結(jié)束報文,若是,則執(zhí)行步驟S117,否則,繼續(xù)執(zhí)行步驟Slll ;步驟S117 :根據(jù)所述變體的Boot Loader程序提供的方法,對內(nèi)存中的版本文件進行校驗;本步驟校驗版本文件的完整性和合法性,校驗方法可以是CRC (Cyclicredundancycheck,循環(huán)冗余校驗)或SUM(SUMmation,校驗和)等。步驟S118 :判斷是否校驗成功,若是,則執(zhí)行步驟S119 ;否則,執(zhí)行步驟S120 ; 步驟S119 :將上述版本文件另存到本地Flash中,同時啟用內(nèi)存中的版本文件;本發(fā)明的變體Boot Loader程序可直接從內(nèi)存中啟動,而不需要像現(xiàn)有的標準Boot Loader程序那樣需要從ROM中引導才能啟動。步驟S120 :在本機的WEB頁面中提示校驗失敗。上述說明示出并描述了本發(fā)明的優(yōu)選實施例,但如前所述,應當理解本發(fā)明并非局限于本文所披露的形式,不應看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。
權(quán)利要求
1.一種嵌入式設(shè)備的版本更新方法,其特征在于,所述方法將變體的Boot Loader程序存儲在客戶端,客戶端收到嵌入式設(shè)備的版本更新請求時,將所述變體的Boot Loader程序下發(fā)給所述嵌入式設(shè)備; 所述嵌入式設(shè)備執(zhí)行收到的變體的Boot Loader程序,進行版本更新。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述版本更新請求為xmodem請求。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述客戶端通過xmodem報文將所述變體的Boot Loader程序分片下發(fā)給所述嵌入式設(shè)備,所述嵌入式設(shè)備收到報文時,判斷所述報文是否是xmodem報文,若是,則將所述xmodem報文中的變體的Boot Loader程序數(shù)據(jù)保存到內(nèi)存中,否則,丟棄所述報文。
4.根據(jù)權(quán)利要求1-3任一項所述的方法,其特征在于,所述嵌入式設(shè)備在變體的BootLoader程序接收完畢后,還對所述變體的Boot Loader程序進行校驗,若校驗成功,則執(zhí)行所述變體的Boot Loader程序,否則,重新向所述客戶端發(fā)送版本更新請求。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述嵌入式設(shè)備執(zhí)行所述變體的BootLoader程序進行版本更新步驟具體為 根據(jù)所述變體的Boot Loader程序提供的驅(qū)動,初始化相應的端口 ; 通過所述端口,將所述變體的Boot Loader程序提供的文本標記語言HTML頁面發(fā)送給所述客戶端; 等待所述客戶端下發(fā)版本文件; 將收到的版本文件數(shù)據(jù)保存到內(nèi)存中; 版本文件接收完畢后,根據(jù)所述變體的Boot Loader程序提供的方法,對所述版本文件進行校驗; 若校驗成功,則將所述版本文件另存到本地Flash中,同時啟用內(nèi)存中的版本文件;若校驗失敗,則在本機的WEB頁面中提示校驗失敗。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述客戶端收到HTML頁面后,將所述HTML頁面顯示給用戶并等待用戶導入版本文件; 檢測到用戶導入版本文件后,通過傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議TCP/IP報文將所述版本文件分片下發(fā)給所述嵌入式設(shè)備。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述嵌入式設(shè)備收到報文后,還執(zhí)行以下操作 判斷所述報文是否是TCP/IP報文,若是,則判斷所述報文的協(xié)議類型是否是超文本傳輸協(xié)議HTTP,若是,則將所述報文中的版本文件數(shù)據(jù)存入內(nèi)存中;否則,丟棄所述報文。
8.一種嵌入式設(shè)備的版本更新系統(tǒng),包括客戶端和嵌入式設(shè)備,其特征在于, 所述客戶端,用于存儲變體的Boot Loader程序,并在收到嵌入式設(shè)備的版本更新請求時,將所述變體的Boot Loader程序下發(fā)給所述嵌入式設(shè)備; 所述嵌入式設(shè)備,用于在需要進行版本更新時,向所述客戶端發(fā)送版本更新請求,并執(zhí)行收到的變體的Boot Loader程序,進行版本更新。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于, 所述客戶端,用于通過xmodem報文將所述變體的Boot Loader程序分片下發(fā)給所述嵌入式設(shè)備,以及為用戶提供修改所述變體的Boot Loader程序的接口 ;所述嵌入式設(shè)備,用于在請求階段,判斷收到的報文是否是xmodem報文,并將xmodem報文中的變體的Boot Loader程序數(shù)據(jù)保存到內(nèi)存中,丟棄非xmodem報文,以及對收到的變體的Boot Loader程序進行校驗,并在校驗失敗時,重新發(fā)送版本更新請求給所述客戶端。
10.根據(jù)權(quán)利要求8或9所述的系統(tǒng),其特征在于, 所述客戶端,用于在收到HTML頁面后,將所述HTML頁面顯示給用戶并在檢測到用戶導入版本文件后,通過TCP/IP報文將所述版本文件分片下發(fā)給所述嵌入式設(shè)備; 所述嵌入式設(shè)備,用于根據(jù)所述變體的Boot Loader程序提供的驅(qū)動,初始化相應的端口,并通過所述端口,將所述變體的Boot Loader程序提供的HTML頁面發(fā)送給所述客戶端,以及在執(zhí)行變體的Boot Loader程序過程中,收到客戶端下發(fā)的報文時,判斷所述報文是否 是TCP/IP報文,并在所述報文是TCP/IP報文時,判斷所述報文的協(xié)議類型是否是HTTP,在所述報文是HTTP類型的TCP/IP報文時,將所述報文中的版本文件數(shù)據(jù)存入內(nèi)存中;在所述報文為非TCP/IP報文或者為非HTTP類型的TCP/IP報文時,丟棄所述報文,在版本文件接收完畢后,根據(jù)所述變體的Boot Loader程序提供的方法,對所述版本文件進行校驗,并在校驗成功時,將所述版本文件另存到本地Flash中,同時從內(nèi)存啟用所述版本文件,在校驗失敗時,在本機的WEB頁面中提示校驗失敗。
全文摘要
本發(fā)明公開了一種嵌入式設(shè)備的版本更新方法及系統(tǒng),上述方法將變體的Boot Loader程序存儲在客戶端,客戶端收到嵌入式設(shè)備的版本更新請求時,將上述變體的Boot Loader程序下發(fā)給上述嵌入式設(shè)備,上述嵌入式設(shè)備執(zhí)行收到的變體的Boot Loader程序,進行版本更新;上述系統(tǒng),包括客戶端和嵌入式設(shè)備。本發(fā)明節(jié)約了嵌入式設(shè)備中的RAM空間。
文檔編號H04L29/06GK102957669SQ20111024278
公開日2013年3月6日 申請日期2011年8月23日 優(yōu)先權(quán)日2011年8月23日
發(fā)明者周永波 申請人:中興通訊股份有限公司