專利名稱:嵌入式網(wǎng)絡(luò)設(shè)備及其更新固件的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式網(wǎng)絡(luò)設(shè)備,尤其涉及一種嵌入式網(wǎng)絡(luò)設(shè)備更新固件的方法。
背景技術(shù):
隨著閃存技術(shù)的發(fā)展,常見的嵌入式網(wǎng)絡(luò)設(shè)備,如ADSL路由器,在使用過程中更新存放在閃存內(nèi)的固件變得越來越常見。固件是指嵌入式網(wǎng)絡(luò)設(shè)備底層運行的系統(tǒng),沒有固件,嵌入式網(wǎng)絡(luò)設(shè)備就無法運行。由于固件的特殊性,使得更新固件只能一次就成功,不允許失敗。但實際情況中存在導(dǎo)致失敗的原因,比如更新過程中嵌入式網(wǎng)絡(luò)設(shè)備斷電。為應(yīng)對這種狀況,嵌入式網(wǎng)絡(luò)設(shè)備需要將整個固件進(jìn)行備份,然后在更新失敗時啟用備份的固件進(jìn)行啟動。嵌入式網(wǎng)絡(luò)設(shè)備的固件一般都存儲在非門閃存(Nor Flash)中。目前市場上非門閃存的價格一直居高不下,一個4MB的非門閃存市價約0.6美金,8MB的約1. 1美金,16MB 的約2美金。很顯然,備份固件所占用的非門閃存無形中提高了嵌入式網(wǎng)絡(luò)設(shè)備的成本, 這一點對于大量生產(chǎn)的制造型企業(yè)尤其重要。比如,若一個嵌入式網(wǎng)絡(luò)設(shè)備的固件大小為 2. 1MB,那么備份固件也需要2. 1MB,那么,該嵌入式網(wǎng)絡(luò)設(shè)備需要4. 2MB的空間來存儲固件,從而使得該嵌入式網(wǎng)絡(luò)設(shè)備必須使用8MB的非門閃存,比不存儲備份固件時需要的4MB 的非門閃存成本增加了約1倍。因此,在保證嵌入式網(wǎng)絡(luò)設(shè)備更新固件的可靠性的前提下, 怎樣進(jìn)一步降低固件更新所需的非門閃存帶來的成本壓力,是業(yè)界有待解決的難題。
發(fā)明內(nèi)容
有鑒于此,有必要提供一種嵌入式網(wǎng)絡(luò)設(shè)備,不僅能保證其更新固件的可靠性,還能減小更新固件時備份所需的閃存。同時,還有必要提供一種更新固件的方法,不僅能保證嵌入式網(wǎng)絡(luò)設(shè)備更新固件的可靠性,還能減小更新固件時備份所需的閃存。本發(fā)明實施方式中的嵌入式網(wǎng)絡(luò)設(shè)備,包括內(nèi)存、非門閃存、原固件的第一部分與第二部分,其中,非門閃存包括用于存儲固件的第一部分的第一鏡像區(qū)、用于存儲原固件的第二部分的第二鏡像區(qū)及用于備份的第三鏡像區(qū)。嵌入式網(wǎng)絡(luò)設(shè)備還包括更新模塊,用于獲取嵌入式網(wǎng)絡(luò)設(shè)備的新固件的第一部分及第二部分并存儲于內(nèi)存中,并將第一鏡像區(qū)存儲的原固件的第一部分拷貝到第三鏡像區(qū),將內(nèi)存中的新固件的第一部分拷貝到第一鏡像區(qū),將內(nèi)存中的新固件的第二部分拷貝到第三鏡像區(qū),以及將第一鏡像區(qū)中的新固件的第一部分的啟動指針指向第三鏡像區(qū)。本發(fā)明實施方式中的更新固件的方法,用于嵌入式網(wǎng)絡(luò)設(shè)備中,所述嵌入式網(wǎng)絡(luò)設(shè)備包括內(nèi)存、非門閃存、原固件的第一部分與第二部分,其中,非門閃存包括用于存儲原固件的第一部分的第一鏡像區(qū)、用于存儲原固件的第二部分的第二鏡像區(qū)及用于備份的第三鏡像區(qū)。所述方法包括獲取嵌入式網(wǎng)絡(luò)設(shè)備的新固件的第一部分及第二部分并存儲于內(nèi)存中;將第一鏡像區(qū)存儲的原固件的第一部分拷貝到第三鏡像區(qū);將內(nèi)存中的新固件的第一部分拷貝到第一鏡像區(qū);將內(nèi)存中的新固件的第二部分拷貝到第三鏡像區(qū);及將第一鏡像區(qū)中的新固件的第一部分的啟動指針指向第三鏡像區(qū)。 本發(fā)明實施方式中的嵌入式網(wǎng)絡(luò)設(shè)備,通過只備份固件的一部分來減小更新固件所需的閃存,并結(jié)合采用本發(fā)明實施方式中的更新固件的方法來保證嵌入式網(wǎng)絡(luò)設(shè)備更新固件的可靠性。
圖1為本發(fā)明嵌入式網(wǎng)絡(luò)設(shè)備一實施方式的結(jié)構(gòu)圖。
圖2為本發(fā)明更新固件的方法一實施方式的流程圖。
圖3為圖1中一實施方式的嵌入式網(wǎng)絡(luò)設(shè)備更新固件后啟動的流程圖
圖4為圖1中一實施方式的嵌入式網(wǎng)絡(luò)設(shè)備更新固件的示例圖。
主要元件符號說明
嵌入式網(wǎng)絡(luò)設(shè)備10
處理器12
內(nèi)存14
非門閃存16
第一鏡像區(qū)160
第二鏡像區(qū)162
第三鏡像區(qū)164
更新模塊100
記錄模塊102
啟動裝載程序10具體實施例方式請參閱圖1,所示為本發(fā)明嵌入式網(wǎng)絡(luò)設(shè)備10 —實施方式的結(jié)構(gòu)圖。嵌入式網(wǎng)絡(luò)設(shè)備10包括固件(Firmware),其中,固件是指固化在嵌入式網(wǎng)絡(luò)設(shè)備10的集成電路內(nèi)部的程序代碼,負(fù)責(zé)控制和協(xié)調(diào)集成電路的功能。在本實施方式中,嵌入式網(wǎng)絡(luò)設(shè)備10可以為路由器、調(diào)制解調(diào)器、網(wǎng)關(guān)等嵌入式的網(wǎng)絡(luò)設(shè)備。在本實施方式中,嵌入式網(wǎng)絡(luò)設(shè)備10的固件至少可以分為兩個獨立的部分,此處兩個獨立的部分是指其一個部分的更新不受另一個部分的制約,也就是說僅更新其中的一個部分,未更新的部分亦可結(jié)合已更新的部分正常運行。如,嵌入式網(wǎng)絡(luò)設(shè)備10采用Linux 系統(tǒng),其固件可分為內(nèi)核(Kernel)與跟文件系統(tǒng)(Root File System)兩部分,更新后的內(nèi)核與更新前的根文件系統(tǒng)一樣可以結(jié)合起來正常運行。在本實施方式中,嵌入式網(wǎng)絡(luò)設(shè)備10包括處理器12、內(nèi)存14、非門閃存(Nor Flash) 16、更新模塊100、記錄模塊102及啟動裝載程序104。在嵌入式網(wǎng)絡(luò)設(shè)備10正常運行時,內(nèi)存14中裝載了嵌入式網(wǎng)絡(luò)設(shè)備10的固件,處理器12執(zhí)行裝載在內(nèi)存14中的嵌入式網(wǎng)絡(luò)設(shè)備10的固件,以實現(xiàn)嵌入式網(wǎng)絡(luò)設(shè)備10的正常運行。非門閃存16中包括第一鏡像區(qū)160、第二鏡像區(qū)162及第三鏡像區(qū)164三個存儲區(qū),其中,第二鏡像區(qū)162與第三鏡像區(qū)164在多次更新時輪流作為備份區(qū),S卩如果第一次更新時以第三鏡像區(qū)164作為備份區(qū),那么下次更新時以第二鏡像區(qū)162作為備份區(qū)。此處,以第三鏡像區(qū)164作為備份區(qū)為例對本案進(jìn)行詳細(xì)說明。此時,第一鏡像區(qū)160存儲了嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分,第二鏡像區(qū)162存儲了嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第二部分。在本實施方式中,非門閃存16中還存儲有更新消息,用于標(biāo)識固件更新情況。在本實施方式中,更新消息包括更新狀態(tài)、更新部分、備份區(qū)三個字段。其中,更新狀態(tài)表示固件更新是否成功完成,更新部分表示目前在更新的固件的部分,備份區(qū)表示目前備份固件的存儲區(qū),即第二鏡像區(qū)162或者第三鏡像區(qū)164。此處備份區(qū)以第三鏡像區(qū)164為例進(jìn)行說明。更新模塊100獲取嵌入式網(wǎng)絡(luò)設(shè)備10的新固件并存儲于內(nèi)存14中,并獲取更新信息的備份區(qū)為第三鏡像區(qū)164。更新模塊100先將第一鏡像區(qū)160存儲的嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分拷貝到備份區(qū),然后將內(nèi)存14中的新固件的第一部分拷貝到第一鏡像區(qū)160,再將內(nèi)存14中的新固件的第二部分拷貝到備份區(qū),最后將第一鏡像區(qū)160中的新固件的第一部分的啟動指針指向備份區(qū),從而完成固件更新。在本實施方式中,啟動指標(biāo)是一種指針,其指向哪個區(qū),啟動裝載程序104就會在裝載完新固件的第一部分后自動裝載哪個區(qū)存放的固件。記錄模塊102在更新模塊100拷貝完原固件的第一部分后記錄更新信息的更新狀態(tài)為正在更新中,并記錄更新部分為原固件的第一部分。記錄模塊102在更新模塊100拷貝完新固件的第一部分后將更新信息的更新部分更改為新固件的第二部分,再在更新模塊 100重新指向啟動指針后將更新信息的更新狀態(tài)更改為完成更新,并將備份區(qū)改為第二鏡像區(qū)162。需要說明的是,記錄更新消息的更新狀態(tài)為正在更新中是指將更新消息的更新狀態(tài)字段賦值為用于表達(dá)正在更新的一個值,如,將正在更新中用1表示,將完成更新預(yù)設(shè)為用0表示,則記錄更新消息的更新狀態(tài)為正在更新中就是將更新消息的更新狀態(tài)字段賦值為1,更改所述更新消息的更新狀態(tài)為完成更新就是將更新消息的更新狀態(tài)字段的值更改為0。其它涉及更新消息各字段的記錄、更新、獲取的意思都可依此類推。在完成固件更新后,嵌入式網(wǎng)絡(luò)設(shè)備10重新啟動。此時,啟動裝載程序104讀取更新消息的字段,判斷更新狀態(tài)是否為正在更新中,并在更新狀態(tài)不為正在更新中時裝載嵌入式網(wǎng)絡(luò)設(shè)備10的固件以完成啟動。啟動裝載程序104在更新狀態(tài)為正在更新中時判斷更新部分是否為原固件的第一部分,并在更新部分不為原固件的第一部分時裝載嵌入式網(wǎng)絡(luò)設(shè)備10的固件以完成啟動并在啟動后重新對固件進(jìn)行更新。啟動裝載程序104在更新部分為原固件的第一部分時,將第三鏡像區(qū)164中的原固件的第一部分復(fù)原到第一鏡像區(qū)160,并將更新信息的更新狀態(tài)更改為完成更新,以及裝載第一鏡像區(qū)160與第二鏡像區(qū)162中的固件以完成啟動,并在啟動后引導(dǎo)更新模塊100 與記錄模塊102重新更新固件。因此,在嵌入式網(wǎng)絡(luò)設(shè)備10需要更新固件時,通過處理器12執(zhí)行裝載在內(nèi)存14 中的更新模塊100及記錄模塊102,將非門閃存16中存儲的原固件更新為內(nèi)存14中的新固件,并利用備份區(qū)來保證固件更新過程中即使出錯也能再次啟動。且,備份區(qū)僅需要能夠存儲新固件的第一部分或第二部分中較大的一部分,而不需要存儲新固件的全部。從而,本發(fā)明不僅能保證更新嵌入式網(wǎng)絡(luò)設(shè)備10固件的可靠性,還能減小更新固件時備份所需的閃存。更進(jìn)一步的,嵌入式網(wǎng)絡(luò)設(shè)備10通過更改啟動指針來自動裝載第三鏡像區(qū)164中的固件,從而不需要備份第二鏡像區(qū)162中的固件到第三鏡像區(qū)164,有效簡化了備份步驟,減少更新所需的時間。請參閱圖2,所示為本發(fā)明更新固件的方法一實施方式的流程圖。本方法用于圖1 中的嵌入式網(wǎng)絡(luò)設(shè)備10中,并通過圖1所示的更新模塊100及記錄模塊102完成。此時, 第一鏡像區(qū)160存儲有嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分,第二鏡像區(qū)162存儲有嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第二部分。在步驟S200,更新模塊100獲取新固件并存儲于內(nèi)存14中。在步驟S201,更新模塊100獲取更新信息的備份區(qū),此處為第三鏡像區(qū)164。在步驟S202,更新模塊100將第一鏡像區(qū)160存儲的嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分拷貝到備份區(qū),即第三鏡像區(qū)164。拷貝完成后,第三鏡像區(qū)164中就存儲了嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分。然后,記錄模塊102在步驟S203記錄更新信息的更新狀態(tài)為正在更新中,并記錄更新部分為原固件的第一部分。在步驟S204,更新模塊100將內(nèi)存14中的新固件的第一部分拷貝到第一鏡像區(qū) 160,拷貝完成后,第一鏡像區(qū)160就存儲有新固件的第一部分。然后,記錄模塊102在步驟 S206將更新信息的更新部分更改為新固件的第二部分。在步驟S208,更新模塊100將內(nèi)存14中的新固件的第二部分拷貝到備份區(qū),即第三鏡像區(qū)164。拷貝完成后,第三鏡像區(qū)164就存儲有新固件的第二部分。在步驟S210,更新模塊100將第一鏡像區(qū)160中的新固件的第一部分的啟動指針指向備份區(qū),此時即第三鏡像區(qū)164,使得嵌入式網(wǎng)絡(luò)設(shè)備10會在啟動完新固件的第一部分后從第三鏡像區(qū)164啟動新固件的第二部分。然后,記錄模塊102在步驟S212將更新信息的更新狀態(tài)更改為完成更新,并將備份區(qū)改為第二鏡像區(qū)162。當(dāng)整個更新固件的過程順利完成時,第一鏡像區(qū)160存儲有嵌入式網(wǎng)絡(luò)設(shè)備10的新固件的第一部分,第二鏡像區(qū)162存儲有嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第二部分,第三鏡像區(qū)164存儲有嵌入式網(wǎng)絡(luò)設(shè)備10的新固件的第二部分,且新固件的第一部分的啟動指針指向第三鏡像區(qū)164。另外,更新消息的更新狀態(tài)為完成更新,更新部分為新固件的第二部分,備份區(qū)為第二鏡像區(qū)162。此時,嵌入式網(wǎng)絡(luò)設(shè)備10在更新固件后再次啟動時就會從更新后的固件啟動。其具體的啟動流程請參閱圖3的描述。請參閱圖3,所示為圖1中一實施方式的嵌入式網(wǎng)絡(luò)設(shè)備10采用圖2的更新固件的方法更新固件后啟動的流程圖。本方法用于圖1中的嵌入式網(wǎng)絡(luò)設(shè)備10中,并通過圖1 所示的啟動裝載程序104完成。在步驟S300中,啟動裝載程序104讀取更新消息,判斷更新狀態(tài)是否為正在更新中。如果更新消息的更新狀態(tài)不是正在更新中,而是完成更新,則在步驟S301,啟動裝載程序104裝載嵌入式網(wǎng)絡(luò)設(shè)備的固件以完成啟動。在本實施方式中,更新狀態(tài)為完成更新時, 存在兩種可能,一種為更新過程中沒有出現(xiàn)錯誤,則啟動裝載程序104裝載第一鏡像區(qū)160 的新固件的第一部分與第三鏡像區(qū)164的新固件的第二部分,以完成啟動。另一種為在執(zhí)行步驟S202將第一鏡像區(qū)160存儲的嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分拷貝到備份區(qū)時出錯,則啟動裝載程序104裝載第一鏡像區(qū)160的原固件的第一部分與第二鏡像區(qū)162 的原固件的第二部分,以完成啟動。此時在啟動后就需要重新更新固件。如果更新消息的更新狀態(tài)為正在更新中,則說明更新過程中出現(xiàn)了錯誤,則在步驟S302,啟動裝載程序104判斷更新消息的更新部分是否為原固件的第一部分,以了解錯誤出現(xiàn)在哪個步驟。如果更新消息的更新部分是原固件的第一部分,那么說明更新固件的流程在執(zhí)行步驟S204將內(nèi)存14中的新固件的第一部分拷貝到第一鏡像區(qū)160的時候出錯,則啟動裝載程序104在步驟S304將第三鏡像區(qū)中的原固件的第一部分復(fù)原到第一鏡像區(qū)160,并在步驟S306將更新信息的更新狀態(tài)更改為完成更新。此時,第一鏡像區(qū)160存儲有原固件的第一部分,第二鏡像區(qū)162存儲有原固件的第二部分,則在步驟S308,啟動裝載程序104裝載第一鏡像區(qū)160與第二鏡像區(qū)162中的固件以完成啟動,并在啟動后引導(dǎo)更新模塊100 與記錄模塊102重新更新固件,即重新執(zhí)行圖2所示的流程。如果更新消息的更新部分不是原固件的第一部分,而是新固件的第二部分,那么說明更新固件的流程在執(zhí)行步驟S208將內(nèi)存中的新固件的第二部分拷貝到備份區(qū)的時候出錯。此時,第一鏡像區(qū)160存儲有新固件的第一部分,第二鏡像區(qū)162存儲有原固件的第二部分,則在步驟S308,啟動裝載程序104裝載第一鏡像區(qū)160與第二鏡像區(qū)162中的固件以完成啟動,并在啟動后引導(dǎo)更新模塊100與記錄模塊102重新更新固件,即重新執(zhí)行圖2 所示的流程。由此可見,借助于第三鏡像區(qū)164,無論在固件更新方法的哪個步驟出錯,嵌入式網(wǎng)絡(luò)設(shè)備10均能正常啟動。為了更清楚地說明本發(fā)明更新固件的方法,在此給出具體的實施例來進(jìn)行詳細(xì)說明。如圖4所示,為圖1中一實施方式的嵌入式網(wǎng)絡(luò)設(shè)備10采用圖2所示的更新固件的方法來更新固件的示例圖。在本實施方式中,嵌入式網(wǎng)絡(luò)設(shè)備10采用Linux系統(tǒng),其固件包括內(nèi)核與根文件系統(tǒng)兩個部分。首先,更新模塊100將新內(nèi)核與新根文件系統(tǒng)存入內(nèi)存14中,第一鏡像區(qū)160中存儲有原內(nèi)核,第二鏡像區(qū)162存儲有原根文件系統(tǒng),第三鏡像區(qū)164為備份區(qū)。接下來,更新模塊100將第一鏡像區(qū)160中的原內(nèi)核拷貝到第三鏡像區(qū)164。此時,如果在這個步驟出錯,啟動裝載程序104就通過原內(nèi)核與原根文件系統(tǒng)啟動。接下來,更新模塊100將內(nèi)存中的新內(nèi)核拷貝到第一鏡像區(qū)160中。此時,如果在這個步驟出錯,啟動裝載程序104就將第三鏡像區(qū)164中的原內(nèi)核復(fù)原到第一鏡像區(qū)160, 并通過原內(nèi)核與原根文件系統(tǒng)啟動。接下來,更新模塊100將內(nèi)存中的新根文件系統(tǒng)拷貝到第二鏡像區(qū)162中。此時, 如果在這個步驟出錯,啟動裝載程序104就通過新內(nèi)核與原根文件系統(tǒng)啟動。接下來,更新模塊100將啟動指針指向第三鏡像區(qū)164,下次啟動時,啟動裝載程序104就通過新內(nèi)核與新根文件系統(tǒng)啟動。此時,固件更新就已經(jīng)完成。本發(fā)明提供的嵌入式網(wǎng)絡(luò)設(shè)備10在需要更新固件時,通過更新模塊100及記錄模塊102將非門閃存16中存儲的原固件更新為內(nèi)存14中的新固件,并利用備份區(qū)來保證固件更新過程中即使出錯也能再次啟動。且,備份區(qū)僅需要能夠存儲新固件的第一部分或第二部分中較大的一部分,而不需要存儲新固件的全部。從而,本發(fā)明不僅能保證更新嵌入式網(wǎng)絡(luò)設(shè)備10固件的可靠性,還能減小更新固件時備份所需的閃存。
權(quán)利要求
1.一種嵌入式網(wǎng)絡(luò)設(shè)備,包括內(nèi)存、非門閃存、原固件的第一部分與第二部分,其中,所述非門閃存包括用于存儲所述原固件的第一部分的第一鏡像區(qū)、用于存儲所述原固件的第二部分的第二鏡像區(qū)及用于備份的第三鏡像區(qū),其特征在于所述嵌入式網(wǎng)絡(luò)設(shè)備還包括更新模塊,用于獲取所述嵌入式網(wǎng)絡(luò)設(shè)備的新固件的第一部分及第二部分并存儲于所述內(nèi)存中,并將所述原固件的第一部分拷貝到所述第三鏡像區(qū),將所述新固件的第一部分拷貝到所述第一鏡像區(qū),將所述新固件的第二部分拷貝到所述第三鏡像區(qū),以及將新固件的第一部分的啟動指針指向所述第三鏡像區(qū)。
2.如權(quán)利要求1所述的嵌入式網(wǎng)絡(luò)設(shè)備,其特征在于,所述嵌入式網(wǎng)絡(luò)設(shè)備還包括記錄模塊,用于記錄更新信息,所述更新信息包括更新狀態(tài)、更新部分及備份區(qū)三個字段,其中,所述記錄模塊在所述更新模塊拷貝完原固件的第一部分后記錄所述更新狀態(tài)為正在更新中,并記錄所述更新部分為所述原固件的第一部分,在所述更新模塊拷貝完新固件的第一部分后將所述更新部分更改為新固件的第二部分,以及在所述更新模塊重新指向啟動指針后將所述更新狀態(tài)更改為完成更新,并將所述備份區(qū)更改為所述第二鏡像區(qū)。
3.如權(quán)利要求2所述的嵌入式網(wǎng)絡(luò)設(shè)備,其特征在于,所述嵌入式網(wǎng)絡(luò)設(shè)備還包括啟動裝載程序,用于判斷所述更新狀態(tài)是否為正在更新中,并在所述更新狀態(tài)不為正在更新中時裝載所述嵌入式網(wǎng)絡(luò)設(shè)備的固件以完成啟動。
4.如權(quán)利要求3所述的嵌入式網(wǎng)絡(luò)設(shè)備,其特征在于,所述啟動裝載程序還用于在所述更新狀態(tài)為正在更新中時判斷所述更新部分是否為原固件的第一部分,并在所述更新部分不為原固件的第一部分時裝載所述第一鏡像區(qū)與所述第二鏡像區(qū)中的固件以完成啟動并在啟動后重新更新固件。
5.如權(quán)利要求4所述的嵌入式網(wǎng)絡(luò)設(shè)備,其特征在于,所述啟動裝載程序還用于在所述更新部分為原固件的第一部分時,將所述第三鏡像區(qū)中的原固件的第一部分復(fù)原到所述第一鏡像區(qū),并將所述更新狀態(tài)更改為完成更新,以及裝載所述第一鏡像區(qū)與所述第二鏡像區(qū)中的固件以完成啟動并在啟動后重新更新固件。
6.一種更新固件的方法,用于嵌入式網(wǎng)絡(luò)設(shè)備中,所述嵌入式網(wǎng)絡(luò)設(shè)備包括內(nèi)存、非門閃存、原固件的第一部分與第二部分,其中,非門閃存包括用于存儲所述原固件的第一部分的第一鏡像區(qū)、用于存儲所述原固件的第二部分的第二鏡像區(qū)及用于備份的第三鏡像區(qū), 其特征在于,所述方法包括獲取所述嵌入式網(wǎng)絡(luò)設(shè)備的新固件的第一部分及第二部分并存儲于所述內(nèi)存中;將所述第一鏡像區(qū)存儲的原固件的第一部分拷貝到所述第三鏡像區(qū);將所述內(nèi)存中的新固件的第一部分拷貝到所述第一鏡像區(qū);將所述內(nèi)存中的新固件的第二部分拷貝到所述第三鏡像區(qū);及將所述第一鏡像區(qū)中的新固件的第一部分的啟動指針指向所述第三鏡像區(qū)。
7.如權(quán)利要求6所述的更新固件的方法,其特征在于還包括記錄更新信息,其中更新信息包括更新狀態(tài)、更新部分及備份區(qū)三個字段,所述記錄更新信息的步驟包括在拷貝完所述原固件的第一部分后記錄所述更新狀態(tài)為正在更新中,并記錄所述更新部分為原固件的第一部分;在拷貝完新固件的第一部分后將所述更新部分更改為新固件的第二部分;及在重新指向啟動指針后將所述更新狀態(tài)更改為完成更新,并將所述備份區(qū)更改為第二鏡像區(qū)。
8.如權(quán)利要求7所述的更新固件的方法,其特征在于還包括 判斷所述更新狀態(tài)是否為正在更新中;及若所述更新狀態(tài)不為正在更新中,則裝載所述嵌入式網(wǎng)絡(luò)設(shè)備的固件以完成啟動。
9.如權(quán)利要求8所述的更新固件的方法,其特征在于還包括若所述更新狀態(tài)為正在更新中,則判斷所述更新部分是否為原固件的第一部分;及若所述更新部分不為原固件的第一部分,則裝載所述嵌入式網(wǎng)絡(luò)設(shè)備的固件以完成啟動并在啟動后重新更新固件。
10.如權(quán)利要求9所述的更新固件的方法,其特征在于還包括若所述更新部分為原固件的第一部分,則將所述第三鏡像區(qū)中的原固件的第一部分復(fù)原到所述第一鏡像區(qū);將所述更新狀態(tài)更改為完成更新;及裝載所述第一鏡像區(qū)與所述第二鏡像區(qū)中的固件以完成啟動,并在啟動后重新更新固
全文摘要
一種嵌入式網(wǎng)絡(luò)設(shè)備,包括內(nèi)存、非門閃存、原固件的第一部分與第二部分、更新模塊,其中,非門閃存包括用于存儲原固件的第一部分的第一鏡像區(qū)、用于存儲原固件的第二部分的第二鏡像區(qū)及第三鏡像區(qū)。更新模塊獲取嵌入式網(wǎng)絡(luò)設(shè)備的新固件的第一部分及第二部分并存儲于內(nèi)存中,并將第一鏡像區(qū)存儲的原固件的第一部分拷貝到第三鏡像區(qū),將內(nèi)存中的新固件的第一部分拷貝到第一鏡像區(qū),將內(nèi)存中的新固件的第二部分拷貝到第三鏡像區(qū),及將第一鏡像區(qū)中的新固件的第一部分的啟動指針指向第三鏡像區(qū)。本發(fā)明還提供了一種固件更新的方法。所述嵌入式網(wǎng)絡(luò)設(shè)備及固件更新的方法不僅能保證嵌入式網(wǎng)絡(luò)設(shè)備更新固件的可靠性,還能減小更新固件時備份所需的閃存。
文檔編號G06F9/445GK102270144SQ201010191690
公開日2011年12月7日 申請日期2010年6月4日 優(yōu)先權(quán)日2010年6月4日
發(fā)明者林書弘, 鄭豈銜, 黃光毅 申請人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司