两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

嵌入式網(wǎng)絡(luò)設(shè)備及其更新固件的方法

文檔序號(hào):6603574閱讀:256來(lái)源:國(guó)知局
專利名稱:嵌入式網(wǎng)絡(luò)設(shè)備及其更新固件的方法
技術(shù)領(lǐng)域
本發(fā)明涉及嵌入式網(wǎng)絡(luò)設(shè)備,尤其涉及一種嵌入式網(wǎng)絡(luò)設(shè)備更新固件的方法。
背景技術(shù)
隨著閃存技術(shù)的發(fā)展,常見(jiàn)的嵌入式網(wǎng)絡(luò)設(shè)備,如ADSL路由器,在使用過(guò)程中更新存放在閃存內(nèi)的固件變得越來(lái)越常見(jiàn)。固件是指嵌入式網(wǎng)絡(luò)設(shè)備底層運(yùn)行的系統(tǒng),沒(méi)有固件,嵌入式網(wǎng)絡(luò)設(shè)備就無(wú)法運(yùn)行。由于固件的特殊性,使得更新固件只能一次就成功,不允許失敗。但實(shí)際情況中存在導(dǎo)致失敗的原因,比如更新過(guò)程中嵌入式網(wǎng)絡(luò)設(shè)備斷電。為應(yīng)對(duì)這種狀況,嵌入式網(wǎng)絡(luò)設(shè)備需要將整個(gè)固件進(jìn)行備份,然后在更新失敗時(shí)啟用備份的固件進(jìn)行啟動(dòng)。嵌入式網(wǎng)絡(luò)設(shè)備的固件一般都存儲(chǔ)在非門閃存(Nor Flash)中。目前市場(chǎng)上非門閃存的價(jià)格一直居高不下,一個(gè)4MB的非門閃存市價(jià)約0.6美金,8MB的約1. 1美金,16MB 的約2美金。很顯然,備份固件所占用的非門閃存無(wú)形中提高了嵌入式網(wǎng)絡(luò)設(shè)備的成本, 這一點(diǎn)對(duì)于大量生產(chǎn)的制造型企業(yè)尤其重要。比如,若一個(gè)嵌入式網(wǎng)絡(luò)設(shè)備的固件大小為 2. 1MB,那么備份固件也需要2. 1MB,那么,該嵌入式網(wǎng)絡(luò)設(shè)備需要4. 2MB的空間來(lái)存儲(chǔ)固件,從而使得該嵌入式網(wǎng)絡(luò)設(shè)備必須使用8MB的非門閃存,比不存儲(chǔ)備份固件時(shí)需要的4MB 的非門閃存成本增加了約1倍。因此,在保證嵌入式網(wǎng)絡(luò)設(shè)備更新固件的可靠性的前提下, 怎樣進(jìn)一步降低固件更新所需的非門閃存帶來(lái)的成本壓力,是業(yè)界有待解決的難題。

發(fā)明內(nèi)容
有鑒于此,有必要提供一種嵌入式網(wǎng)絡(luò)設(shè)備,不僅能保證其更新固件的可靠性,還能減小更新固件時(shí)備份所需的閃存。同時(shí),還有必要提供一種更新固件的方法,不僅能保證嵌入式網(wǎng)絡(luò)設(shè)備更新固件的可靠性,還能減小更新固件時(shí)備份所需的閃存。本發(fā)明實(shí)施方式中的嵌入式網(wǎng)絡(luò)設(shè)備,包括內(nèi)存、非門閃存、原固件的第一部分與第二部分,其中,非門閃存包括用于存儲(chǔ)固件的第一部分的第一鏡像區(qū)、用于存儲(chǔ)原固件的第二部分的第二鏡像區(qū)及用于備份的第三鏡像區(qū)。嵌入式網(wǎng)絡(luò)設(shè)備還包括更新模塊,用于獲取嵌入式網(wǎng)絡(luò)設(shè)備的新固件的第一部分及第二部分并存儲(chǔ)于內(nèi)存中,并將第一鏡像區(qū)存儲(chǔ)的原固件的第一部分拷貝到第三鏡像區(qū),將內(nèi)存中的新固件的第一部分拷貝到第一鏡像區(qū),將內(nèi)存中的新固件的第二部分拷貝到第三鏡像區(qū),以及將第一鏡像區(qū)中的新固件的第一部分的啟動(dòng)指針指向第三鏡像區(qū)。本發(fā)明實(shí)施方式中的更新固件的方法,用于嵌入式網(wǎng)絡(luò)設(shè)備中,所述嵌入式網(wǎng)絡(luò)設(shè)備包括內(nèi)存、非門閃存、原固件的第一部分與第二部分,其中,非門閃存包括用于存儲(chǔ)原固件的第一部分的第一鏡像區(qū)、用于存儲(chǔ)原固件的第二部分的第二鏡像區(qū)及用于備份的第三鏡像區(qū)。所述方法包括獲取嵌入式網(wǎng)絡(luò)設(shè)備的新固件的第一部分及第二部分并存儲(chǔ)于內(nèi)存中;將第一鏡像區(qū)存儲(chǔ)的原固件的第一部分拷貝到第三鏡像區(qū);將內(nèi)存中的新固件的第一部分拷貝到第一鏡像區(qū);將內(nèi)存中的新固件的第二部分拷貝到第三鏡像區(qū);及將第一鏡像區(qū)中的新固件的第一部分的啟動(dòng)指針指向第三鏡像區(qū)。 本發(fā)明實(shí)施方式中的嵌入式網(wǎng)絡(luò)設(shè)備,通過(guò)只備份固件的一部分來(lái)減小更新固件所需的閃存,并結(jié)合采用本發(fā)明實(shí)施方式中的更新固件的方法來(lái)保證嵌入式網(wǎng)絡(luò)設(shè)備更新固件的可靠性。


圖1為本發(fā)明嵌入式網(wǎng)絡(luò)設(shè)備一實(shí)施方式的結(jié)構(gòu)圖。
圖2為本發(fā)明更新固件的方法一實(shí)施方式的流程圖。
圖3為圖1中一實(shí)施方式的嵌入式網(wǎng)絡(luò)設(shè)備更新固件后啟動(dòng)的流程圖
圖4為圖1中一實(shí)施方式的嵌入式網(wǎng)絡(luò)設(shè)備更新固件的示例圖。
主要元件符號(hào)說(shuō)明
嵌入式網(wǎng)絡(luò)設(shè)備10
處理器12
內(nèi)存14
非門閃存16
第一鏡像區(qū)160
第二鏡像區(qū)162
第三鏡像區(qū)164
更新模塊100
記錄模塊102
啟動(dòng)裝載程序10具體實(shí)施例方式請(qǐng)參閱圖1,所示為本發(fā)明嵌入式網(wǎng)絡(luò)設(shè)備10 —實(shí)施方式的結(jié)構(gòu)圖。嵌入式網(wǎng)絡(luò)設(shè)備10包括固件(Firmware),其中,固件是指固化在嵌入式網(wǎng)絡(luò)設(shè)備10的集成電路內(nèi)部的程序代碼,負(fù)責(zé)控制和協(xié)調(diào)集成電路的功能。在本實(shí)施方式中,嵌入式網(wǎng)絡(luò)設(shè)備10可以為路由器、調(diào)制解調(diào)器、網(wǎng)關(guān)等嵌入式的網(wǎng)絡(luò)設(shè)備。在本實(shí)施方式中,嵌入式網(wǎng)絡(luò)設(shè)備10的固件至少可以分為兩個(gè)獨(dú)立的部分,此處兩個(gè)獨(dú)立的部分是指其一個(gè)部分的更新不受另一個(gè)部分的制約,也就是說(shuō)僅更新其中的一個(gè)部分,未更新的部分亦可結(jié)合已更新的部分正常運(yùn)行。如,嵌入式網(wǎng)絡(luò)設(shè)備10采用Linux 系統(tǒng),其固件可分為內(nèi)核(Kernel)與跟文件系統(tǒng)(Root File System)兩部分,更新后的內(nèi)核與更新前的根文件系統(tǒng)一樣可以結(jié)合起來(lái)正常運(yùn)行。在本實(shí)施方式中,嵌入式網(wǎng)絡(luò)設(shè)備10包括處理器12、內(nèi)存14、非門閃存(Nor Flash) 16、更新模塊100、記錄模塊102及啟動(dòng)裝載程序104。在嵌入式網(wǎng)絡(luò)設(shè)備10正常運(yùn)行時(shí),內(nèi)存14中裝載了嵌入式網(wǎng)絡(luò)設(shè)備10的固件,處理器12執(zhí)行裝載在內(nèi)存14中的嵌入式網(wǎng)絡(luò)設(shè)備10的固件,以實(shí)現(xiàn)嵌入式網(wǎng)絡(luò)設(shè)備10的正常運(yùn)行。非門閃存16中包括第一鏡像區(qū)160、第二鏡像區(qū)162及第三鏡像區(qū)164三個(gè)存儲(chǔ)區(qū),其中,第二鏡像區(qū)162與第三鏡像區(qū)164在多次更新時(shí)輪流作為備份區(qū),S卩如果第一次更新時(shí)以第三鏡像區(qū)164作為備份區(qū),那么下次更新時(shí)以第二鏡像區(qū)162作為備份區(qū)。此處,以第三鏡像區(qū)164作為備份區(qū)為例對(duì)本案進(jìn)行詳細(xì)說(shuō)明。此時(shí),第一鏡像區(qū)160存儲(chǔ)了嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分,第二鏡像區(qū)162存儲(chǔ)了嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第二部分。在本實(shí)施方式中,非門閃存16中還存儲(chǔ)有更新消息,用于標(biāo)識(shí)固件更新情況。在本實(shí)施方式中,更新消息包括更新?tīng)顟B(tài)、更新部分、備份區(qū)三個(gè)字段。其中,更新?tīng)顟B(tài)表示固件更新是否成功完成,更新部分表示目前在更新的固件的部分,備份區(qū)表示目前備份固件的存儲(chǔ)區(qū),即第二鏡像區(qū)162或者第三鏡像區(qū)164。此處備份區(qū)以第三鏡像區(qū)164為例進(jìn)行說(shuō)明。更新模塊100獲取嵌入式網(wǎng)絡(luò)設(shè)備10的新固件并存儲(chǔ)于內(nèi)存14中,并獲取更新信息的備份區(qū)為第三鏡像區(qū)164。更新模塊100先將第一鏡像區(qū)160存儲(chǔ)的嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分拷貝到備份區(qū),然后將內(nèi)存14中的新固件的第一部分拷貝到第一鏡像區(qū)160,再將內(nèi)存14中的新固件的第二部分拷貝到備份區(qū),最后將第一鏡像區(qū)160中的新固件的第一部分的啟動(dòng)指針指向備份區(qū),從而完成固件更新。在本實(shí)施方式中,啟動(dòng)指標(biāo)是一種指針,其指向哪個(gè)區(qū),啟動(dòng)裝載程序104就會(huì)在裝載完新固件的第一部分后自動(dòng)裝載哪個(gè)區(qū)存放的固件。記錄模塊102在更新模塊100拷貝完原固件的第一部分后記錄更新信息的更新?tīng)顟B(tài)為正在更新中,并記錄更新部分為原固件的第一部分。記錄模塊102在更新模塊100拷貝完新固件的第一部分后將更新信息的更新部分更改為新固件的第二部分,再在更新模塊 100重新指向啟動(dòng)指針后將更新信息的更新?tīng)顟B(tài)更改為完成更新,并將備份區(qū)改為第二鏡像區(qū)162。需要說(shuō)明的是,記錄更新消息的更新?tīng)顟B(tài)為正在更新中是指將更新消息的更新?tīng)顟B(tài)字段賦值為用于表達(dá)正在更新的一個(gè)值,如,將正在更新中用1表示,將完成更新預(yù)設(shè)為用0表示,則記錄更新消息的更新?tīng)顟B(tài)為正在更新中就是將更新消息的更新?tīng)顟B(tài)字段賦值為1,更改所述更新消息的更新?tīng)顟B(tài)為完成更新就是將更新消息的更新?tīng)顟B(tài)字段的值更改為0。其它涉及更新消息各字段的記錄、更新、獲取的意思都可依此類推。在完成固件更新后,嵌入式網(wǎng)絡(luò)設(shè)備10重新啟動(dòng)。此時(shí),啟動(dòng)裝載程序104讀取更新消息的字段,判斷更新?tīng)顟B(tài)是否為正在更新中,并在更新?tīng)顟B(tài)不為正在更新中時(shí)裝載嵌入式網(wǎng)絡(luò)設(shè)備10的固件以完成啟動(dòng)。啟動(dòng)裝載程序104在更新?tīng)顟B(tài)為正在更新中時(shí)判斷更新部分是否為原固件的第一部分,并在更新部分不為原固件的第一部分時(shí)裝載嵌入式網(wǎng)絡(luò)設(shè)備10的固件以完成啟動(dòng)并在啟動(dòng)后重新對(duì)固件進(jìn)行更新。啟動(dòng)裝載程序104在更新部分為原固件的第一部分時(shí),將第三鏡像區(qū)164中的原固件的第一部分復(fù)原到第一鏡像區(qū)160,并將更新信息的更新?tīng)顟B(tài)更改為完成更新,以及裝載第一鏡像區(qū)160與第二鏡像區(qū)162中的固件以完成啟動(dòng),并在啟動(dòng)后引導(dǎo)更新模塊100 與記錄模塊102重新更新固件。因此,在嵌入式網(wǎng)絡(luò)設(shè)備10需要更新固件時(shí),通過(guò)處理器12執(zhí)行裝載在內(nèi)存14 中的更新模塊100及記錄模塊102,將非門閃存16中存儲(chǔ)的原固件更新為內(nèi)存14中的新固件,并利用備份區(qū)來(lái)保證固件更新過(guò)程中即使出錯(cuò)也能再次啟動(dòng)。且,備份區(qū)僅需要能夠存儲(chǔ)新固件的第一部分或第二部分中較大的一部分,而不需要存儲(chǔ)新固件的全部。從而,本發(fā)明不僅能保證更新嵌入式網(wǎng)絡(luò)設(shè)備10固件的可靠性,還能減小更新固件時(shí)備份所需的閃存。更進(jìn)一步的,嵌入式網(wǎng)絡(luò)設(shè)備10通過(guò)更改啟動(dòng)指針來(lái)自動(dòng)裝載第三鏡像區(qū)164中的固件,從而不需要備份第二鏡像區(qū)162中的固件到第三鏡像區(qū)164,有效簡(jiǎn)化了備份步驟,減少更新所需的時(shí)間。請(qǐng)參閱圖2,所示為本發(fā)明更新固件的方法一實(shí)施方式的流程圖。本方法用于圖1 中的嵌入式網(wǎng)絡(luò)設(shè)備10中,并通過(guò)圖1所示的更新模塊100及記錄模塊102完成。此時(shí), 第一鏡像區(qū)160存儲(chǔ)有嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分,第二鏡像區(qū)162存儲(chǔ)有嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第二部分。在步驟S200,更新模塊100獲取新固件并存儲(chǔ)于內(nèi)存14中。在步驟S201,更新模塊100獲取更新信息的備份區(qū),此處為第三鏡像區(qū)164。在步驟S202,更新模塊100將第一鏡像區(qū)160存儲(chǔ)的嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分拷貝到備份區(qū),即第三鏡像區(qū)164??截愅瓿珊?,第三鏡像區(qū)164中就存儲(chǔ)了嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分。然后,記錄模塊102在步驟S203記錄更新信息的更新?tīng)顟B(tài)為正在更新中,并記錄更新部分為原固件的第一部分。在步驟S204,更新模塊100將內(nèi)存14中的新固件的第一部分拷貝到第一鏡像區(qū) 160,拷貝完成后,第一鏡像區(qū)160就存儲(chǔ)有新固件的第一部分。然后,記錄模塊102在步驟 S206將更新信息的更新部分更改為新固件的第二部分。在步驟S208,更新模塊100將內(nèi)存14中的新固件的第二部分拷貝到備份區(qū),即第三鏡像區(qū)164。拷貝完成后,第三鏡像區(qū)164就存儲(chǔ)有新固件的第二部分。在步驟S210,更新模塊100將第一鏡像區(qū)160中的新固件的第一部分的啟動(dòng)指針指向備份區(qū),此時(shí)即第三鏡像區(qū)164,使得嵌入式網(wǎng)絡(luò)設(shè)備10會(huì)在啟動(dòng)完新固件的第一部分后從第三鏡像區(qū)164啟動(dòng)新固件的第二部分。然后,記錄模塊102在步驟S212將更新信息的更新?tīng)顟B(tài)更改為完成更新,并將備份區(qū)改為第二鏡像區(qū)162。當(dāng)整個(gè)更新固件的過(guò)程順利完成時(shí),第一鏡像區(qū)160存儲(chǔ)有嵌入式網(wǎng)絡(luò)設(shè)備10的新固件的第一部分,第二鏡像區(qū)162存儲(chǔ)有嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第二部分,第三鏡像區(qū)164存儲(chǔ)有嵌入式網(wǎng)絡(luò)設(shè)備10的新固件的第二部分,且新固件的第一部分的啟動(dòng)指針指向第三鏡像區(qū)164。另外,更新消息的更新?tīng)顟B(tài)為完成更新,更新部分為新固件的第二部分,備份區(qū)為第二鏡像區(qū)162。此時(shí),嵌入式網(wǎng)絡(luò)設(shè)備10在更新固件后再次啟動(dòng)時(shí)就會(huì)從更新后的固件啟動(dòng)。其具體的啟動(dòng)流程請(qǐng)參閱圖3的描述。請(qǐng)參閱圖3,所示為圖1中一實(shí)施方式的嵌入式網(wǎng)絡(luò)設(shè)備10采用圖2的更新固件的方法更新固件后啟動(dòng)的流程圖。本方法用于圖1中的嵌入式網(wǎng)絡(luò)設(shè)備10中,并通過(guò)圖1 所示的啟動(dòng)裝載程序104完成。在步驟S300中,啟動(dòng)裝載程序104讀取更新消息,判斷更新?tīng)顟B(tài)是否為正在更新中。如果更新消息的更新?tīng)顟B(tài)不是正在更新中,而是完成更新,則在步驟S301,啟動(dòng)裝載程序104裝載嵌入式網(wǎng)絡(luò)設(shè)備的固件以完成啟動(dòng)。在本實(shí)施方式中,更新?tīng)顟B(tài)為完成更新時(shí), 存在兩種可能,一種為更新過(guò)程中沒(méi)有出現(xiàn)錯(cuò)誤,則啟動(dòng)裝載程序104裝載第一鏡像區(qū)160 的新固件的第一部分與第三鏡像區(qū)164的新固件的第二部分,以完成啟動(dòng)。另一種為在執(zhí)行步驟S202將第一鏡像區(qū)160存儲(chǔ)的嵌入式網(wǎng)絡(luò)設(shè)備10的原固件的第一部分拷貝到備份區(qū)時(shí)出錯(cuò),則啟動(dòng)裝載程序104裝載第一鏡像區(qū)160的原固件的第一部分與第二鏡像區(qū)162 的原固件的第二部分,以完成啟動(dòng)。此時(shí)在啟動(dòng)后就需要重新更新固件。如果更新消息的更新?tīng)顟B(tài)為正在更新中,則說(shuō)明更新過(guò)程中出現(xiàn)了錯(cuò)誤,則在步驟S302,啟動(dòng)裝載程序104判斷更新消息的更新部分是否為原固件的第一部分,以了解錯(cuò)誤出現(xiàn)在哪個(gè)步驟。如果更新消息的更新部分是原固件的第一部分,那么說(shuō)明更新固件的流程在執(zhí)行步驟S204將內(nèi)存14中的新固件的第一部分拷貝到第一鏡像區(qū)160的時(shí)候出錯(cuò),則啟動(dòng)裝載程序104在步驟S304將第三鏡像區(qū)中的原固件的第一部分復(fù)原到第一鏡像區(qū)160,并在步驟S306將更新信息的更新?tīng)顟B(tài)更改為完成更新。此時(shí),第一鏡像區(qū)160存儲(chǔ)有原固件的第一部分,第二鏡像區(qū)162存儲(chǔ)有原固件的第二部分,則在步驟S308,啟動(dòng)裝載程序104裝載第一鏡像區(qū)160與第二鏡像區(qū)162中的固件以完成啟動(dòng),并在啟動(dòng)后引導(dǎo)更新模塊100 與記錄模塊102重新更新固件,即重新執(zhí)行圖2所示的流程。如果更新消息的更新部分不是原固件的第一部分,而是新固件的第二部分,那么說(shuō)明更新固件的流程在執(zhí)行步驟S208將內(nèi)存中的新固件的第二部分拷貝到備份區(qū)的時(shí)候出錯(cuò)。此時(shí),第一鏡像區(qū)160存儲(chǔ)有新固件的第一部分,第二鏡像區(qū)162存儲(chǔ)有原固件的第二部分,則在步驟S308,啟動(dòng)裝載程序104裝載第一鏡像區(qū)160與第二鏡像區(qū)162中的固件以完成啟動(dòng),并在啟動(dòng)后引導(dǎo)更新模塊100與記錄模塊102重新更新固件,即重新執(zhí)行圖2 所示的流程。由此可見(jiàn),借助于第三鏡像區(qū)164,無(wú)論在固件更新方法的哪個(gè)步驟出錯(cuò),嵌入式網(wǎng)絡(luò)設(shè)備10均能正常啟動(dòng)。為了更清楚地說(shuō)明本發(fā)明更新固件的方法,在此給出具體的實(shí)施例來(lái)進(jìn)行詳細(xì)說(shuō)明。如圖4所示,為圖1中一實(shí)施方式的嵌入式網(wǎng)絡(luò)設(shè)備10采用圖2所示的更新固件的方法來(lái)更新固件的示例圖。在本實(shí)施方式中,嵌入式網(wǎng)絡(luò)設(shè)備10采用Linux系統(tǒng),其固件包括內(nèi)核與根文件系統(tǒng)兩個(gè)部分。首先,更新模塊100將新內(nèi)核與新根文件系統(tǒng)存入內(nèi)存14中,第一鏡像區(qū)160中存儲(chǔ)有原內(nèi)核,第二鏡像區(qū)162存儲(chǔ)有原根文件系統(tǒng),第三鏡像區(qū)164為備份區(qū)。接下來(lái),更新模塊100將第一鏡像區(qū)160中的原內(nèi)核拷貝到第三鏡像區(qū)164。此時(shí),如果在這個(gè)步驟出錯(cuò),啟動(dòng)裝載程序104就通過(guò)原內(nèi)核與原根文件系統(tǒng)啟動(dòng)。接下來(lái),更新模塊100將內(nèi)存中的新內(nèi)核拷貝到第一鏡像區(qū)160中。此時(shí),如果在這個(gè)步驟出錯(cuò),啟動(dòng)裝載程序104就將第三鏡像區(qū)164中的原內(nèi)核復(fù)原到第一鏡像區(qū)160, 并通過(guò)原內(nèi)核與原根文件系統(tǒng)啟動(dòng)。接下來(lái),更新模塊100將內(nèi)存中的新根文件系統(tǒng)拷貝到第二鏡像區(qū)162中。此時(shí), 如果在這個(gè)步驟出錯(cuò),啟動(dòng)裝載程序104就通過(guò)新內(nèi)核與原根文件系統(tǒng)啟動(dòng)。接下來(lái),更新模塊100將啟動(dòng)指針指向第三鏡像區(qū)164,下次啟動(dòng)時(shí),啟動(dòng)裝載程序104就通過(guò)新內(nèi)核與新根文件系統(tǒng)啟動(dòng)。此時(shí),固件更新就已經(jīng)完成。本發(fā)明提供的嵌入式網(wǎng)絡(luò)設(shè)備10在需要更新固件時(shí),通過(guò)更新模塊100及記錄模塊102將非門閃存16中存儲(chǔ)的原固件更新為內(nèi)存14中的新固件,并利用備份區(qū)來(lái)保證固件更新過(guò)程中即使出錯(cuò)也能再次啟動(dòng)。且,備份區(qū)僅需要能夠存儲(chǔ)新固件的第一部分或第二部分中較大的一部分,而不需要存儲(chǔ)新固件的全部。從而,本發(fā)明不僅能保證更新嵌入式網(wǎng)絡(luò)設(shè)備10固件的可靠性,還能減小更新固件時(shí)備份所需的閃存。
權(quán)利要求
1.一種嵌入式網(wǎng)絡(luò)設(shè)備,包括內(nèi)存、非門閃存、原固件的第一部分與第二部分,其中,所述非門閃存包括用于存儲(chǔ)所述原固件的第一部分的第一鏡像區(qū)、用于存儲(chǔ)所述原固件的第二部分的第二鏡像區(qū)及用于備份的第三鏡像區(qū),其特征在于所述嵌入式網(wǎng)絡(luò)設(shè)備還包括更新模塊,用于獲取所述嵌入式網(wǎng)絡(luò)設(shè)備的新固件的第一部分及第二部分并存儲(chǔ)于所述內(nèi)存中,并將所述原固件的第一部分拷貝到所述第三鏡像區(qū),將所述新固件的第一部分拷貝到所述第一鏡像區(qū),將所述新固件的第二部分拷貝到所述第三鏡像區(qū),以及將新固件的第一部分的啟動(dòng)指針指向所述第三鏡像區(qū)。
2.如權(quán)利要求1所述的嵌入式網(wǎng)絡(luò)設(shè)備,其特征在于,所述嵌入式網(wǎng)絡(luò)設(shè)備還包括記錄模塊,用于記錄更新信息,所述更新信息包括更新?tīng)顟B(tài)、更新部分及備份區(qū)三個(gè)字段,其中,所述記錄模塊在所述更新模塊拷貝完原固件的第一部分后記錄所述更新?tīng)顟B(tài)為正在更新中,并記錄所述更新部分為所述原固件的第一部分,在所述更新模塊拷貝完新固件的第一部分后將所述更新部分更改為新固件的第二部分,以及在所述更新模塊重新指向啟動(dòng)指針后將所述更新?tīng)顟B(tài)更改為完成更新,并將所述備份區(qū)更改為所述第二鏡像區(qū)。
3.如權(quán)利要求2所述的嵌入式網(wǎng)絡(luò)設(shè)備,其特征在于,所述嵌入式網(wǎng)絡(luò)設(shè)備還包括啟動(dòng)裝載程序,用于判斷所述更新?tīng)顟B(tài)是否為正在更新中,并在所述更新?tīng)顟B(tài)不為正在更新中時(shí)裝載所述嵌入式網(wǎng)絡(luò)設(shè)備的固件以完成啟動(dòng)。
4.如權(quán)利要求3所述的嵌入式網(wǎng)絡(luò)設(shè)備,其特征在于,所述啟動(dòng)裝載程序還用于在所述更新?tīng)顟B(tài)為正在更新中時(shí)判斷所述更新部分是否為原固件的第一部分,并在所述更新部分不為原固件的第一部分時(shí)裝載所述第一鏡像區(qū)與所述第二鏡像區(qū)中的固件以完成啟動(dòng)并在啟動(dòng)后重新更新固件。
5.如權(quán)利要求4所述的嵌入式網(wǎng)絡(luò)設(shè)備,其特征在于,所述啟動(dòng)裝載程序還用于在所述更新部分為原固件的第一部分時(shí),將所述第三鏡像區(qū)中的原固件的第一部分復(fù)原到所述第一鏡像區(qū),并將所述更新?tīng)顟B(tài)更改為完成更新,以及裝載所述第一鏡像區(qū)與所述第二鏡像區(qū)中的固件以完成啟動(dòng)并在啟動(dòng)后重新更新固件。
6.一種更新固件的方法,用于嵌入式網(wǎng)絡(luò)設(shè)備中,所述嵌入式網(wǎng)絡(luò)設(shè)備包括內(nèi)存、非門閃存、原固件的第一部分與第二部分,其中,非門閃存包括用于存儲(chǔ)所述原固件的第一部分的第一鏡像區(qū)、用于存儲(chǔ)所述原固件的第二部分的第二鏡像區(qū)及用于備份的第三鏡像區(qū), 其特征在于,所述方法包括獲取所述嵌入式網(wǎng)絡(luò)設(shè)備的新固件的第一部分及第二部分并存儲(chǔ)于所述內(nèi)存中;將所述第一鏡像區(qū)存儲(chǔ)的原固件的第一部分拷貝到所述第三鏡像區(qū);將所述內(nèi)存中的新固件的第一部分拷貝到所述第一鏡像區(qū);將所述內(nèi)存中的新固件的第二部分拷貝到所述第三鏡像區(qū);及將所述第一鏡像區(qū)中的新固件的第一部分的啟動(dòng)指針指向所述第三鏡像區(qū)。
7.如權(quán)利要求6所述的更新固件的方法,其特征在于還包括記錄更新信息,其中更新信息包括更新?tīng)顟B(tài)、更新部分及備份區(qū)三個(gè)字段,所述記錄更新信息的步驟包括在拷貝完所述原固件的第一部分后記錄所述更新?tīng)顟B(tài)為正在更新中,并記錄所述更新部分為原固件的第一部分;在拷貝完新固件的第一部分后將所述更新部分更改為新固件的第二部分;及在重新指向啟動(dòng)指針后將所述更新?tīng)顟B(tài)更改為完成更新,并將所述備份區(qū)更改為第二鏡像區(qū)。
8.如權(quán)利要求7所述的更新固件的方法,其特征在于還包括 判斷所述更新?tīng)顟B(tài)是否為正在更新中;及若所述更新?tīng)顟B(tài)不為正在更新中,則裝載所述嵌入式網(wǎng)絡(luò)設(shè)備的固件以完成啟動(dòng)。
9.如權(quán)利要求8所述的更新固件的方法,其特征在于還包括若所述更新?tīng)顟B(tài)為正在更新中,則判斷所述更新部分是否為原固件的第一部分;及若所述更新部分不為原固件的第一部分,則裝載所述嵌入式網(wǎng)絡(luò)設(shè)備的固件以完成啟動(dòng)并在啟動(dòng)后重新更新固件。
10.如權(quán)利要求9所述的更新固件的方法,其特征在于還包括若所述更新部分為原固件的第一部分,則將所述第三鏡像區(qū)中的原固件的第一部分復(fù)原到所述第一鏡像區(qū);將所述更新?tīng)顟B(tài)更改為完成更新;及裝載所述第一鏡像區(qū)與所述第二鏡像區(qū)中的固件以完成啟動(dòng),并在啟動(dòng)后重新更新固
全文摘要
一種嵌入式網(wǎng)絡(luò)設(shè)備,包括內(nèi)存、非門閃存、原固件的第一部分與第二部分、更新模塊,其中,非門閃存包括用于存儲(chǔ)原固件的第一部分的第一鏡像區(qū)、用于存儲(chǔ)原固件的第二部分的第二鏡像區(qū)及第三鏡像區(qū)。更新模塊獲取嵌入式網(wǎng)絡(luò)設(shè)備的新固件的第一部分及第二部分并存儲(chǔ)于內(nèi)存中,并將第一鏡像區(qū)存儲(chǔ)的原固件的第一部分拷貝到第三鏡像區(qū),將內(nèi)存中的新固件的第一部分拷貝到第一鏡像區(qū),將內(nèi)存中的新固件的第二部分拷貝到第三鏡像區(qū),及將第一鏡像區(qū)中的新固件的第一部分的啟動(dòng)指針指向第三鏡像區(qū)。本發(fā)明還提供了一種固件更新的方法。所述嵌入式網(wǎng)絡(luò)設(shè)備及固件更新的方法不僅能保證嵌入式網(wǎng)絡(luò)設(shè)備更新固件的可靠性,還能減小更新固件時(shí)備份所需的閃存。
文檔編號(hào)G06F9/445GK102270144SQ201010191690
公開(kāi)日2011年12月7日 申請(qǐng)日期2010年6月4日 優(yōu)先權(quán)日2010年6月4日
發(fā)明者林書弘, 鄭豈銜, 黃光毅 申請(qǐng)人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
唐海县| 海口市| 诏安县| 北碚区| 凌云县| 西宁市| 章丘市| 延安市| 牡丹江市| 南澳县| SHOW| 曲沃县| 长岛县| 吉木乃县| 固阳县| 汝阳县| 密云县| 常州市| 来凤县| 扶风县| 突泉县| 铁岭市| 中江县| 星座| 莱州市| 上虞市| 嘉鱼县| 马公市| 新蔡县| 天门市| 临武县| 眉山市| 吴旗县| 山东| 伊川县| 静乐县| 耿马| 黑龙江省| 武陟县| 衡阳市| 霍城县|