專利名稱::一種實現(xiàn)固件更新的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及固件更新
技術(shù)領(lǐng)域:
,特別涉及一種實現(xiàn)嵌入式系統(tǒng)固件更新的方法和系統(tǒng)。
背景技術(shù):
:固件是具有軟件功能的硬件,在早期這種器件一般都是存有軟件的可擦除只讀存儲器(EROM)或可擦除可編程只讀存儲器(EPROM)等。固件發(fā)展到今天已經(jīng)具有了新的定義,一般來說,將擔任著一個系統(tǒng)最基礎(chǔ)、最底層工作的軟件稱為固件,并且以系統(tǒng)中的閃存為載體,與系統(tǒng)其他硬件部分同時存在,支持系統(tǒng)運行。固件廣泛存在于嵌入式系統(tǒng)中,比如手機中,數(shù)碼相機中,隨身聽中等都有。固件常常需要進行更新,例如當嵌入式系統(tǒng)發(fā)生故障,就需要對固件進行更新,以修復缺陷。另外,固件更新帶來的不僅是硬件性能地提升,還能為硬件增添許多嶄新的功能。例如,打印機進行了固件更新后,可以很大程度地改善打印質(zhì)量,提升進紙速度等。目前的嵌入式固件更新方法主要是通過硬件傳輸線在嵌入式系統(tǒng)和上位機間建立連接,嵌入式系統(tǒng)的主程序與上位機之間進行配合,完成設(shè)備枚舉,在需要進行固件更新時,上位機需要通過客戶端應(yīng)用程序和專用的硬件傳輸線根據(jù)私有的客戶端協(xié)議向嵌入式系統(tǒng)的主程序發(fā)出固件更新的通知,嵌入式系統(tǒng)先通過執(zhí)行主程序,獲得該固件更新通知,將固件更新程序從主程序所在的那個存儲器中移到一個緩存中,然后從緩存中讀取該固件更新程序并執(zhí)行,執(zhí)行的結(jié)果是將從上位機獲得的新的固件存儲到存儲器的指定位置(一般為原固件程序所在的位置)中,并對新的固件進行校驗,將校驗結(jié)果反饋給上位機,上位機通過專門的應(yīng)用程序獲得并顯示該校驗結(jié)果,從而通知用戶固件更新是否成功。其中所述的上位機為可以為PC機或者其他可以用于更新固件程序的服務(wù)器??梢钥闯?,目前的嵌入式固件更新方法需要專門的硬件傳輸線、專門的應(yīng)用程序和私有的協(xié)議客戶端軟件,當對應(yīng)不同的嵌入式系統(tǒng)時,必須在上位機中安裝相應(yīng)的客戶端軟件,系統(tǒng)和操作都比較復雜,不方便嵌入式系統(tǒng)進行固件程序的更新。另外,現(xiàn)有的嵌入式系統(tǒng)中為了實現(xiàn)固件更新而設(shè)計的系統(tǒng)結(jié)構(gòu)也比較復雜,研發(fā)和產(chǎn)品成本較高。
發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種實現(xiàn)固件更新的方法,使嵌入式系統(tǒng)的固件更新簡單方便。本發(fā)明的第二個目的在于提供一種實現(xiàn)固件更新的系統(tǒng),使嵌入式系統(tǒng)的固件更新簡單方便。為了實現(xiàn)上述第一個目的,本發(fā)明提供了一種實現(xiàn)固件更新的方法,該方法包括在固件更新模式下,在嵌入式系統(tǒng)中加載固件更新模塊,所述固件更新模塊建立虛擬文件分配表FAT;在上位機與嵌入式系統(tǒng)連接后,進行設(shè)備枚舉過程,上位機基于存儲設(shè)備協(xié)議,根據(jù)所述虛擬FAT將所述嵌入式系統(tǒng)識別為可進行數(shù)據(jù)存儲操作的設(shè)備;執(zhí)行固件更新過程,所述上位機將固件程序拷貝到嵌入式系統(tǒng),所述固件更新模塊接收來自上位機的固件程序,并根據(jù)所述虛擬FAT存儲該固件程序。優(yōu)選的,所述虛擬FAT可以包括FAT引導扇區(qū)FATHEADER,只包含F(xiàn)AT表區(qū)的數(shù)據(jù)頭的2個FAT表區(qū),只包含1個文件名內(nèi)容的目錄和文件名區(qū),以及虛擬數(shù)據(jù)區(qū)。優(yōu)選的,所述固件更新模塊可以加載在所述嵌入式系統(tǒng)的引導系統(tǒng)BOOT內(nèi),所述虛擬FAT的FATHEADER、FAT表區(qū)以及目錄和文件名區(qū)均在所述BOOT中建立,所述虛擬數(shù)據(jù)區(qū)被映射到所述嵌入式系統(tǒng)的存儲空間中。所述固件更新模塊接收來自上位機的固件程序后,進一步可對固件程序進行校驗,將校驗結(jié)果通過所述虛擬FAT返回給所述上位機,并且在校驗通過時存儲固件程序。優(yōu)選的,所述固件更新模塊將校驗結(jié)果通過虛擬FAT返回給所述上位機具體是,根據(jù)校驗結(jié)果生成狀態(tài)反饋文件,所述生成狀態(tài)反饋文件為將校驗結(jié)果以字符串的形式填充在虛擬FAT中的目錄和文件名區(qū)內(nèi);在生成狀態(tài)反饋文件后,固件更新模塊通知上位機虛擬FAT內(nèi)數(shù)據(jù)改變,上位機進行自動刷新,顯示以校驗結(jié)果作為文件名的狀態(tài)反饋文件。優(yōu)選的,所述設(shè)備枚舉過程包括上位機讀取FATHEADER,固件更新模塊返回FATHEADER內(nèi)容;上位機根據(jù)返回的FATHEADER內(nèi)容讀取FAT表區(qū)以及目錄和文件名區(qū)內(nèi)容,固件更新模塊根據(jù)FATHEADER中標識的FAT表區(qū)以及目錄和文件名區(qū)的長度來返回簡化的FAT表區(qū)以及目錄和文件名區(qū)內(nèi)容。優(yōu)選的,在校驗通過時,所述固件更新模塊將所述固件程序存儲到映射在所述嵌入式系統(tǒng)的存儲空間中的虛擬數(shù)據(jù)區(qū)內(nèi);在校驗未通過時,所述固件更新模塊將所述固件程序丟棄。優(yōu)選的,所述可進行數(shù)據(jù)存儲操作的設(shè)備為通用的可移動存儲設(shè)備;所述存儲設(shè)備協(xié)議為通用的可移動存儲設(shè)備協(xié)議。優(yōu)選的,所述固件更新模塊為U盤系統(tǒng),所述通用的可移動存儲設(shè)備協(xié)議為U盤的軟硬件協(xié)議,所述上位機將嵌入式系統(tǒng)識別為U盤;所述上位機通過USB電纜與嵌入式系統(tǒng)連接。為了實現(xiàn)上述第二個目的,本發(fā)明提供了一種實現(xiàn)固件更新的系統(tǒng),該系統(tǒng)包括上位機和嵌入式系統(tǒng),嵌入式系統(tǒng)中設(shè)置有固件更新模塊,所述固件更新模塊在固件更新模式下被加載,并在加載后建立虛擬文件分配表FAT;上位機,與處于固件更新模式下的嵌入式系統(tǒng)連接,并用于在連接后根據(jù)所述虛擬FAT,基于存儲設(shè)備協(xié)議將所述嵌入式系統(tǒng)識別為可進行數(shù)據(jù)存儲操作的設(shè)備;所述上位機還用于將固件程序拷貝到所述嵌入式系統(tǒng),所述固件更新模塊用于接收來自上位機的固件程序,并根據(jù)所述虛擬FAT存儲該固件程序至嵌入式系統(tǒng)的存儲空間。優(yōu)選的,所述固件更新模塊中的虛擬FAT包含F(xiàn)ATHEADER,只包含F(xiàn)AT表區(qū)的數(shù)據(jù)頭的2個FAT表區(qū),只包含1個文件名內(nèi)容的目錄和文件名區(qū),以及虛擬數(shù)據(jù)區(qū)。所述固件更新模塊進一步用于對來自上位機的固件程序進行校驗,并根據(jù)校驗結(jié)果生成狀態(tài)反饋文件,所述生成狀態(tài)反饋文件為將校驗結(jié)果以字符串的形式填充在虛擬FAT中的目錄和文件名區(qū)內(nèi);在生成狀態(tài)反饋文件之后,固件更新模塊進一步用于通知上位機虛擬FAT內(nèi)數(shù)據(jù)改變;所述上位機進一步用于進行自動刷新,顯示以校驗結(jié)果作為文件名的狀態(tài)反饋文件。優(yōu)選的,所述固件更新模塊加載在所述嵌入式系統(tǒng)的引導系統(tǒng)BOOT內(nèi),所述虛擬FAT的FATHEADER、FAT表區(qū)以及目錄和文件名區(qū)均設(shè)置在所述BOOT中,所述虛擬數(shù)據(jù)區(qū)映射到所述嵌入式系統(tǒng)的存儲空間中。優(yōu)選的,所述固件更新模塊為U盤系統(tǒng),所述存儲設(shè)備協(xié)議為U盤的軟硬件協(xié)議,所述上位機將嵌入式系統(tǒng)識別為U盤;所述上位機與所述嵌入式系統(tǒng)中的U盤系統(tǒng)通過USB電纜連接。由以上技術(shù)方案可以看出,本發(fā)明通過在嵌入式系統(tǒng)中設(shè)置具有虛擬文件分配表FAT的固件更新模塊,在上位機和嵌入式系統(tǒng)之間建立連接后,上位機基于存儲設(shè)備協(xié)議可自動識別嵌入式系統(tǒng),并通過執(zhí)行文件拷貝的操作,即可將固件程序拷貝到嵌入式系統(tǒng),使固件更新模塊進行固件更新的操作,將固件程序存儲到嵌入式系統(tǒng)的存儲空間中。因此與現(xiàn)有技術(shù)中必須由嵌入式系統(tǒng)的主程序與上位機配合才能完成固件更新不同的是,本發(fā)明針對不同的嵌入式系統(tǒng)不需要采用專門的傳輸線和私有的協(xié)議客戶端軟件,使嵌入式系統(tǒng)的固件更新簡單方便。圖1為實現(xiàn)固件更新的系統(tǒng)結(jié)構(gòu)示意圖;圖2為基本固件更新模塊的虛擬FAT分布示意圖;圖3為實現(xiàn)固件更新的方法流程圖;圖4為本發(fā)明所提供實施例的方法流程圖。具體實施例方式為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和實施例對本發(fā)明做進一步地詳細描述。首先有必要對存儲設(shè)備協(xié)議進行說明。本文中所采用的存儲設(shè)備協(xié)議是指上位機所通用的,用于對存儲設(shè)備進行識別,并與存儲設(shè)備進行通信的標準協(xié)議。本領(lǐng)域內(nèi)技術(shù)人員所公知的,上位機為了識別某些類型的存儲設(shè)備,一般都預先配置了存儲設(shè)備協(xié)議,這些存儲設(shè)備協(xié)議因其通用性而成為業(yè)內(nèi)的標準協(xié)議,并在存儲設(shè)備連接到上位機后,上位機無需其它應(yīng)用程序控制,即可自動對該存儲設(shè)備進行設(shè)備枚舉,識別設(shè)備,并可在使用過程中對該存儲設(shè)備進行數(shù)據(jù)存取的操作。舉例來說,如現(xiàn)在的電腦一般都具有U盤的軟硬件協(xié)議,當將U盤插入電腦的USB接口后,電腦可以自動識別出U盤,從而在電腦的操作系統(tǒng)中,通過打開文件夾的方式,對U盤進行文件操作。另外,目前一些MP3播放器、手機等設(shè)備也可以在無需特別安裝驅(qū)動程序的情況下,被電腦識別并進行文件存取操作。這里的存儲設(shè)備及存儲設(shè)備協(xié)議包括現(xiàn)在已有的以及未來將有的通用的存儲設(shè)備及存儲設(shè)備協(xié)議。所述存儲設(shè)備及存儲設(shè)備協(xié)議可以為現(xiàn)有的或未來將有的通用的可移動存儲設(shè)備和通用的可移動存儲設(shè)備協(xié)議。本發(fā)明的核心思想是,利用上位機具備根據(jù)所述存儲設(shè)備協(xié)議自動識別外部設(shè)備的性能,使上位機將嵌入式系統(tǒng)自動識別為可進行數(shù)據(jù)存儲操作的設(shè)備,通過上位機向該設(shè)備拷貝文件的簡單操作完成復雜的固件更新過程。本文中所述的“拷貝”的操作,不僅包括傳統(tǒng)意義上的將文件從一個文件夾復制到另一個文件夾的過程,還包括將文件從一個文件夾移動到另一個文件夾,或?qū)⑽募囊粋€文件夾剪切后粘貼到另一個文件,等等類似的過程。下面,首先對本發(fā)明所提供的一種實現(xiàn)固件更新的系統(tǒng)進行描述。圖1為實現(xiàn)固件更新的系統(tǒng)結(jié)構(gòu)示意圖。如圖1所示,該系統(tǒng)包括上位機100和嵌入式系統(tǒng)110。其中,上位機100為可自動根據(jù)存儲設(shè)備協(xié)議,將所連接的設(shè)備識別為可進行數(shù)據(jù)存儲操作的設(shè)備的上位機;嵌入式系統(tǒng)100中設(shè)置有固件更新模塊111,以及存儲空間112。固件更新模塊111在被加載后,建立虛擬FAT,并可以基于存儲設(shè)備協(xié)議和虛擬FAT與上位機100進行設(shè)備枚舉過程和固件更新過程。下面參照現(xiàn)有FAT對本發(fā)明的固件更新模塊中的虛擬FAT進行描述。目前公知的標準的文件分配表FAT,以FAT16為例,如圖2所示,分為FATHEADER201、2個FAT表區(qū)202和203、目錄和文件名區(qū)204、以及數(shù)據(jù)區(qū)205。其中,F(xiàn)ATHEADER201一般用來標識FAT系統(tǒng),也可用來標識FAT表區(qū)202和203、目錄和文件名區(qū)204、以及數(shù)據(jù)區(qū)的長度。FAT表區(qū)202和203用來記錄每一扇區(qū)是否使用,以及它們的位置關(guān)系。目錄和文件名區(qū)204用來記錄文件名和路徑名,記錄根目錄下每個文件的起始單元、文件屬性等。定位文件位置時,操作系統(tǒng)根據(jù)目錄和文件名區(qū)204以及FAT表202和203就可以知道文件的具體位置和大小了。數(shù)據(jù)區(qū)205用來存儲數(shù)據(jù)。由于標準的文件分配表FAT中包含的信息很多,一般其所占用的存儲空間很大,很多時候都達到了500k。因此現(xiàn)有的這種標準FAT將占用大量的內(nèi)存空間。本發(fā)明對FAT作虛擬化處理,即只有在進入固件更新模式后,嵌入式系統(tǒng)才會將固件更新模塊加載到內(nèi)存中,固件更新模塊工作的過程中才會建立虛擬FAT,虛擬FAT的內(nèi)容才會被緩存在內(nèi)存中;而在非固件更新模式下,虛擬FAT會因為固件更新模塊未被加載或從嵌入式系統(tǒng)的內(nèi)存中移除,而未被建立或同時被移除。從而達到虛擬FAT一方面可以幫助實現(xiàn)基于存儲設(shè)備協(xié)議進行固件更新的過程,另一方面又不占用嵌入式系統(tǒng)的內(nèi)存空間的目的。另外,為了簡化嵌入式系統(tǒng)的結(jié)構(gòu),所述固件更新模塊111可以加載在嵌入式系統(tǒng)的BOOT中,這樣嵌入式系統(tǒng)的固件更新過程將不依賴于系統(tǒng)的主程序,而獨立工作。但因為目前的嵌入式系統(tǒng)分配給BOOT的內(nèi)存空間很小,一般在30k左右,因此現(xiàn)有的標準的FAT不能設(shè)置在現(xiàn)在的嵌入式系統(tǒng)的BOOT內(nèi)。為了能夠在BOOT中加載固件更新模塊,固件更新模塊111中建立的虛擬FAT可以采用虛擬化后的簡化的文件分配表FAT。即保留FATHEADER區(qū);2個FAT表區(qū)只包含F(xiàn)AT表區(qū)的數(shù)據(jù)頭,只占3-4字節(jié),F(xiàn)AT表區(qū)中的其余數(shù)據(jù)用0表示,不占用空間,同時還可以表示所有的扇區(qū)未被使用,那么數(shù)據(jù)區(qū)的0地址即為固件程序的存放地址;目錄和文件名區(qū)只保留1個文件名內(nèi)容,為32字節(jié),該文件名內(nèi)容是狀態(tài)反饋文件的文件名內(nèi)容,在固件更新之前,此文件名內(nèi)容為空。本虛擬FAT的數(shù)據(jù)區(qū)被直接映射到嵌入式設(shè)備的存儲空間112中,成為一個虛擬數(shù)據(jù)區(qū)。這樣就可以將簡化的虛擬FAT放到BOOT中,即將虛擬FAT的FATHEADER區(qū)、2個FAT表區(qū)、以及目錄和文件名區(qū)放到BOOT中,只占用BOOT很少的內(nèi)存空間,而虛擬數(shù)據(jù)區(qū)實際存在于嵌入式設(shè)備的存儲空間112中,它不占用BOOT的內(nèi)存空間。進一步地,上位機100,與處于固件更新模式下的嵌入式系統(tǒng)110連接,并用于在連接后根據(jù)所述存儲設(shè)備協(xié)議以及虛擬FAT將所述嵌入式系統(tǒng)110識別為可進行數(shù)據(jù)存儲操作的設(shè)備;所述上位機100還用于將固件程序拷貝到所述嵌入式系統(tǒng)110,所述固件更新模塊111用于接收來自上位機100的固件程序,并對固件程序進行校驗,將校驗結(jié)果通過所述虛擬FAT返回給所述上位機100,并在校驗通過時根據(jù)所述虛擬FAT存儲該固件程序至嵌入式系統(tǒng)的存儲空間112。所述上位機一般為PC機,也可以為能夠識別固件更新模塊的其他設(shè)備。所述固件更新模塊111將校驗結(jié)果通過所述虛擬FAT返回給所述上位機100具體可以是在校驗過程中,根據(jù)固件程序的長度和校驗碼來校驗數(shù)據(jù),并根據(jù)校驗結(jié)果生成狀態(tài)反饋文件,然后向上位機100發(fā)送數(shù)據(jù)改變通知。其中,所述生成的狀態(tài)反饋文件用來表征校驗是否成功,校驗成功則生成表征正確的狀態(tài)反饋文件;校驗失敗,則生成表征錯誤的狀態(tài)反饋文件。所述狀態(tài)反饋文件以字符串的形式填充在所述虛擬FAT的目錄和文件名區(qū)中。上位機100,接收到固件更新模塊111發(fā)來的數(shù)據(jù)改變通知后,自動進行刷新,顯示以校驗結(jié)果作為文件名的狀態(tài)反饋文件。作為一種具體實施的方式,所述固件更新模塊111可以為U盤系統(tǒng),所述存儲設(shè)備協(xié)議為U盤的軟硬件協(xié)議;上位機與嵌入式系統(tǒng)的連接可以采用USB傳輸線連接。下面對本發(fā)明所提供的實現(xiàn)固件更新的方法做詳細的描述。圖3為實現(xiàn)固件更新的方法流程圖。如圖3所示,該方法包括以下步驟步驟301在固件更新模式下,在嵌入式系統(tǒng)中加載固件更新模塊,固件更新模塊建立虛擬FAT。步驟302連接上位機與嵌入式系統(tǒng),進行設(shè)備枚舉過程,并根據(jù)存儲設(shè)備協(xié)議以及虛擬FAT將所述嵌入式系統(tǒng)識別為可進行數(shù)據(jù)存儲操作的設(shè)備。步驟303執(zhí)行固件更新過程,所述上位機將固件程序拷貝到嵌入式系統(tǒng),所述固件更新模塊接收來自上位機的固件程序,并根據(jù)所述虛擬FAT存儲該固件程序。所述步驟303進一步可以包括,固件更新模塊對固件程序進行校驗,將校驗結(jié)果通過所述虛擬FAT返回給上位機。步驟303之后,該方法還可以進一步包括上位機自動刷新,顯示校驗結(jié)果。上述是本發(fā)明所提供方法的主要流程,下面以從PC機下載固件程序,固件更新模塊為U盤系統(tǒng)為例,對本發(fā)明所提供的實現(xiàn)固件更新的方法進行詳細描述。圖4為本發(fā)明所提供實施例的方法流程圖。如圖4所示,該方法包括以下步驟步驟401在固件更新模式下,在嵌入式系統(tǒng)的BOOT內(nèi)加載U盤系統(tǒng),U盤系統(tǒng)建立虛擬FAT。本領(lǐng)域內(nèi)普通技術(shù)人員應(yīng)當可以想到,為了使嵌入式系統(tǒng)進入固件更新模式,可以為嵌入式系統(tǒng)設(shè)置工作模式選擇開關(guān),在將PC與嵌入式系統(tǒng)連接之前,將工作模式選擇開關(guān)選定至普通工作狀態(tài),則PC與嵌入式系統(tǒng)連接后,將按照公知的步驟,進入正常的工作狀態(tài),此步驟可以為現(xiàn)有技術(shù),本發(fā)明不贅述;將工作模式選擇開關(guān)選定至固件更新狀態(tài)時,則嵌入式系統(tǒng)進入固件更新模式。U盤系統(tǒng)可以為一軟件模塊,預先存儲在嵌入式系統(tǒng)的存儲空間中,當系統(tǒng)切換到固件更新模式下時,才在BOOT內(nèi)加載該U盤系統(tǒng)。U盤系統(tǒng)被加載后,將建立虛擬FAT。U盤系統(tǒng)中的虛擬FAT可以采用簡化的FAT12/FAT16。保留FATHEADER區(qū);2個FAT表區(qū)只包含F(xiàn)AT表區(qū)的數(shù)據(jù)頭,只占3-4字節(jié);目錄和文件名區(qū)只保留1個文件名內(nèi)容,為32字節(jié)。這樣,在BOOT內(nèi)建立的虛擬FAT實際上只包括FATHEADER區(qū)、2個FAT表區(qū)、以及目錄和文件名區(qū),虛擬FAT的虛擬數(shù)據(jù)區(qū)被映射到嵌入式系統(tǒng)的存儲空間112中。本實施例中,嵌入式系統(tǒng)110可以為MP3播放器、掌上電腦等PMP(PortableMultiMediaPlayer,便攜式多媒體播放器)設(shè)備,嵌入式系統(tǒng)110的內(nèi)存可以采用SRAM、SDRAM等內(nèi)存RAM,存儲空間112可以采用非易失性存儲器NORFLASH、或NANDFLASH等。U盤系統(tǒng)與上位機通信時,是采用標準的USB設(shè)備傳輸協(xié)議,該協(xié)議為目前的計算機所通用,所以本實施例在進行固件更新時,可以不再需要專門的私有協(xié)議客戶端軟件,遵循私有協(xié)議進行通信,使嵌入式系統(tǒng)的固件更新更加的方便簡單。步驟402連接PC與嵌入式系統(tǒng)。本步驟中是通過USB電纜連接PC與嵌入式系統(tǒng)的,連接后PC端可顯示已格式化的U盤。所述PC端顯示已格式化的U盤的過程,即為U盤系統(tǒng)的枚舉過程PC端首先讀取FATHEADER,U盤系統(tǒng)返回FATHEADER內(nèi)容;然后PC端會根據(jù)FATHEADER內(nèi)容來讀取FAT表區(qū)或者目錄和文件名區(qū)內(nèi)容,U盤系統(tǒng)根據(jù)FATHEADER中標識的FAT表區(qū)、目錄和文件名區(qū)的長度來返回簡化的FAT表區(qū)或者目錄和文件名區(qū)內(nèi)容,對于不占用存儲空間的簡化數(shù)據(jù)用0數(shù)據(jù)代替。PC讀取完這些數(shù)據(jù)后完成U盤系統(tǒng)的枚舉。枚舉過程完成后,PC機上會顯示出表示嵌入式系統(tǒng)的設(shè)備符號,比如打開windows操作系統(tǒng)中的“我的電腦”或者“windows資源管理器”,可以看到其中新出現(xiàn)了一個表示嵌入式系統(tǒng)的U盤標識符。雙擊該標識符可以進入到嵌入式系統(tǒng)的根目錄中,此時進入根目錄將是固件程序的存儲位置。步驟403通過U盤系統(tǒng),將固件程序從PC拷貝到嵌入式系統(tǒng)的存儲空間。本步驟中的固件程序一般是打包好的固件程序的數(shù)據(jù)塊。其中包含固件程序的數(shù)據(jù)長度和校驗碼,用于確定固件程序拷貝的結(jié)束和拷貝結(jié)束后的校驗數(shù)據(jù)。本步驟具體的實現(xiàn)過程如下需要進行固件更新時,上位機接收到將固件程序拷貝到嵌入式系統(tǒng)中的指令后,上位機按照扇區(qū)塊操作的方式,將固件程序的數(shù)據(jù)塊通過傳輸線傳輸;嵌入式系統(tǒng)通過其U盤系統(tǒng),接收上位機發(fā)送過來的固件程序的數(shù)據(jù)塊,并進行分析,剝離出固件程序后,將其存儲到地址為0的嵌入式系統(tǒng)的存儲空間。當拷貝到數(shù)據(jù)區(qū)的長度達到了打包固件程序中包含的固件程序數(shù)據(jù)的長度時,固件程序的拷貝結(jié)束。所述U盤系統(tǒng)的數(shù)據(jù)區(qū)映射在嵌入式系統(tǒng)的存儲空間中,本步驟實際上就是將固件程序從PC拷貝到了嵌入式系統(tǒng)的存儲空間中。對用戶而言,本步驟的操作是在PC機的windows操作系統(tǒng)中,將其它磁盤中的固件程序拷貝到了嵌入式系統(tǒng)中的存儲空間,其操作與將一磁盤的文件拷貝到另一磁盤的操作一樣。步驟404校驗數(shù)據(jù),在U盤系統(tǒng)中生成狀態(tài)反饋文件。U盤系統(tǒng)接收固件程序時,將先根據(jù)固件程序中包含的數(shù)據(jù)長度和校驗碼進行固件程序數(shù)據(jù)的校驗,校驗成功,在U盤系統(tǒng)中生成表征正確的狀態(tài)反饋文件,并將固件程序存儲到嵌入式系統(tǒng)的存儲空間;校驗失敗,則在U盤系統(tǒng)中生成表征錯誤的狀態(tài)反饋文件,并將拷貝的固件程序數(shù)據(jù)丟棄。生成的狀態(tài)反饋文件以字符串的形式填充在U盤系統(tǒng)中32字節(jié)的目錄和文件名區(qū)。如校驗成功,可以在目錄和文件名區(qū)生成“success.txt”,校驗失敗,則可以在目錄和文件名區(qū)生成“fail.txt”。步驟405通知PC端U盤系統(tǒng)內(nèi)數(shù)據(jù)改變,PC端自動刷新。校驗數(shù)據(jù)和狀態(tài)反饋文件生成后,U盤系統(tǒng)將根據(jù)新的數(shù)據(jù)重新改變虛擬FAT。然后向PC端通知U盤系統(tǒng)內(nèi)的數(shù)據(jù)改變,PC端收到通知后,進行自動刷新,顯示U盤系統(tǒng)的狀態(tài)反饋文件。例如,PC端自動刷新后,在PC端上嵌入式系統(tǒng)的根目錄下,可以看到文件名為“success.txt”或“fail.txt”的文件。用戶可以根據(jù)PC顯示的U盤系統(tǒng)的狀態(tài)反饋文件解析固件更新成功或者失敗的原因。由上述描述可以看出,本發(fā)明與現(xiàn)有技術(shù)相比存在如下優(yōu)勢1、由于固件更新模塊采用通用的存儲設(shè)備協(xié)議與上位機通信,上位機根據(jù)虛擬FAT對嵌入式系統(tǒng)進行設(shè)備識別,固件更新模塊根據(jù)虛擬FAT執(zhí)行固件更新過程,因此上位機無需另外安裝特定的客戶端程序,只需要通過普通的打開設(shè)備上的文件夾、拷貝文件到設(shè)備、刷新設(shè)備狀態(tài)的簡單操作,即可實現(xiàn)固件更新。也使嵌入式系統(tǒng)的固件更新擺脫了傳統(tǒng)的需要到特定的上位機上,通過特定的硬件傳輸線的束縛,在任意一臺可自動識別該存儲設(shè)備的機器上即可實現(xiàn)。其操作過程相當簡單。2、由于固件更新模塊內(nèi)建立的虛擬FAT為虛擬化并簡化的虛擬FAT,虛擬FAT本身在固件更新模塊未被加載時不占用嵌入式系統(tǒng)的內(nèi)存空間,使嵌入式系統(tǒng)可分配更多的內(nèi)存空間給其它功能模塊使用。3、由于固件更新模塊被加載后,虛擬FAT只占用很少的內(nèi)存空間,進一步保證固件更新模塊可以設(shè)置在現(xiàn)有的BOOT內(nèi)。而利用BOOT作為引導系統(tǒng),在主程序啟動之前工作的特性,使本發(fā)明實現(xiàn)固件更新的過程將不再依賴于嵌入式系統(tǒng)的主程序,且其固件更新的系統(tǒng)結(jié)構(gòu)也得到了大大的簡化。4、固件更新的校驗結(jié)果通過虛擬FAT傳遞給上位機,將校驗結(jié)果的接收、顯示過程簡化成了上位機自動刷新設(shè)備文件夾狀態(tài)的過程,使上位機不再需要特定的客戶端應(yīng)用程序接收和顯示校驗結(jié)果,進一步使固件更新過程不依賴于客戶端應(yīng)用程序、特定的硬件傳輸線和私有協(xié)議。權(quán)利要求1.一種實現(xiàn)固件更新的方法,其特征在于,該方法包括在固件更新模式下,在嵌入式系統(tǒng)中加載固件更新模塊,所述固件更新模塊建立虛擬文件分配表FAT;在上位機與嵌入式系統(tǒng)連接后,進行設(shè)備枚舉過程,上位機基于存儲設(shè)備協(xié)議,根據(jù)所述虛擬FAT將所述嵌入式系統(tǒng)識別為可進行數(shù)據(jù)存儲操作的設(shè)備;執(zhí)行固件更新過程,所述上位機將固件程序拷貝到嵌入式系統(tǒng),所述固件更新模塊接收來自上位機的固件程序,并根據(jù)所述虛擬FAT存儲該固件程序。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述虛擬FAT包括FAT引導扇區(qū)FATHEADER,只包含F(xiàn)AT表區(qū)的數(shù)據(jù)頭的2個FAT表區(qū),只包含1個文件名內(nèi)容的目錄和文件名區(qū),以及虛擬數(shù)據(jù)區(qū)。3.根據(jù)權(quán)利要求2所述的方法,其特征在于所述固件更新模塊加載在所述嵌入式系統(tǒng)的引導系統(tǒng)BOOT內(nèi),所述虛擬FAT的FATHEADER、FAT表區(qū)以及目錄和文件名區(qū)均在所述BOOT中建立,所述虛擬數(shù)據(jù)區(qū)被映射到所述嵌入式系統(tǒng)的存儲空間中。4.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述固件更新模塊接收來自上位機的固件程序后,進一步對固件程序進行校驗,將校驗結(jié)果通過所述虛擬FAT返回給所述上位機,并且在校驗通過時存儲固件程序。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述固件更新模塊將校驗結(jié)果通過虛擬FAT返回給所述上位機具體是,根據(jù)校驗結(jié)果生成狀態(tài)反饋文件,所述生成狀態(tài)反饋文件為將校驗結(jié)果以字符串的形式填充在虛擬FAT中的目錄和文件名區(qū)內(nèi);在生成狀態(tài)反饋文件后,固件更新模塊通知上位機虛擬FAT內(nèi)數(shù)據(jù)改變,上位機進行自動刷新,顯示以校驗結(jié)果作為文件名的狀態(tài)反饋文件。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述設(shè)備枚舉過程包括上位機讀取FATHEADER,固件更新模塊返回FATHEADER內(nèi)容;上位機根據(jù)返回的FATHEADER內(nèi)容讀取FAT表區(qū)以及目錄和文件名區(qū)內(nèi)容,固件更新模塊根據(jù)FATHEADER中標識的FAT表區(qū)以及目錄和文件名區(qū)的長度來返回簡化的FAT表區(qū)以及目錄和文件名區(qū)內(nèi)容。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在校驗通過時,所述固件更新模塊將所述固件程序存儲到映射在所述嵌入式系統(tǒng)的存儲空間中的虛擬數(shù)據(jù)區(qū)內(nèi);在校驗未通過時,所述固件更新模塊將所述固件程序丟棄。8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述可進行數(shù)據(jù)存儲操作的設(shè)備為通用的可移動存儲設(shè)備;所述存儲設(shè)備協(xié)議為通用的可移動存儲設(shè)備協(xié)議。9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述固件更新模塊為U盤系統(tǒng),所述通用的可移動存儲設(shè)備協(xié)議為U盤的軟硬件協(xié)議,所述上位機將嵌入式系統(tǒng)識別為U盤;所述上位機通過USB電纜與嵌入式系統(tǒng)連接。10.一種實現(xiàn)固件更新的系統(tǒng),該系統(tǒng)包括上位機和嵌入式系統(tǒng),其特征在于,嵌入式系統(tǒng)中設(shè)置有固件更新模塊,所述固件更新模塊在固件更新模式下被加載,并在加載后建立虛擬文件分配表FAT;上位機,與處于固件更新模式下的嵌入式系統(tǒng)連接,并用于在連接后根據(jù)所述虛擬FAT,基于存儲設(shè)備協(xié)議將所述嵌入式系統(tǒng)識別為可進行數(shù)據(jù)存儲操作的設(shè)備;所述上位機還用于將固件程序拷貝到所述嵌入式系統(tǒng),所述固件更新模塊用于接收來自上位機的固件程序,并根據(jù)所述虛擬FAT存儲該固件程序至嵌入式系統(tǒng)的存儲空間。11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述固件更新模塊中的虛擬FAT包含F(xiàn)ATHEADER,只包含F(xiàn)AT表區(qū)的數(shù)據(jù)頭的2個FAT表區(qū),只包含1個文件名內(nèi)容的目錄和文件名區(qū),以及虛擬數(shù)據(jù)區(qū)。12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述固件更新模塊進一步用于對來自上位機的固件程序進行校驗,并根據(jù)校驗結(jié)果生成狀態(tài)反饋文件,所述生成狀態(tài)反饋文件為將校驗結(jié)果以字符串的形式填充在虛擬FAT中的目錄和文件名區(qū)內(nèi);在生成狀態(tài)反饋文件之后,固件更新模塊進一步用于通知上位機虛擬FAT內(nèi)數(shù)據(jù)改變;所述上位機進一步用于進行自動刷新,顯示以校驗結(jié)果作為文件名的狀態(tài)反饋文件。13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于所述固件更新模塊加載在所述嵌入式系統(tǒng)的引導系統(tǒng)BOOT內(nèi),所述虛擬FAT的FATHEADER、FAT表區(qū)以及目錄和文件名區(qū)均設(shè)置在所述BOOT中,所述虛擬數(shù)據(jù)區(qū)映射到所述嵌入式系統(tǒng)的存儲空間中。14.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述固件更新模塊為U盤系統(tǒng),所述存儲設(shè)備協(xié)議為U盤的軟硬件協(xié)議,所述上位機將嵌入式系統(tǒng)識別為U盤;所述上位機與所述嵌入式系統(tǒng)中的U盤系統(tǒng)通過USB電纜連接。全文摘要本發(fā)明提供了一種實現(xiàn)固件更新的方法和系統(tǒng),通過在固件更新模式下,在嵌入式系統(tǒng)中加載固件更新模塊,固件更新模塊建立虛擬文件分配表FAT,連接上位機與嵌入式系統(tǒng)進行設(shè)備枚舉過程,并根據(jù)存儲設(shè)備協(xié)議以及虛擬FAT將所述嵌入式系統(tǒng)識別為存儲設(shè)備,執(zhí)行固件更新過程,根據(jù)所述虛擬FAT將固件程序通過固件更新模塊拷貝到所述嵌入式系統(tǒng)中。解決了現(xiàn)有技術(shù)中需要專門私有的協(xié)議客戶端軟件才能實現(xiàn)固件升級時,系統(tǒng)復雜,操作麻煩的問題,使固件更新更加簡單方便。文檔編號G06F9/445GK101030146SQ20071006530公開日2007年9月5日申請日期2007年4月10日優(yōu)先權(quán)日2007年4月10日發(fā)明者劉勇,譚帥,張華申請人:北京中星微電子有限公司