專利名稱:可安全復(fù)原的固件更新方法及其嵌入式電子裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上是關(guān)于一種固件更新的方法,且特別是有關(guān)于一種用于嵌入式電子裝置的可安全復(fù)原的固件更新方法及其嵌入式電子裝置。
背景技術(shù):
目前嵌入式電子裝置(embedded electronic device)可以通過許多方式讓用戶 手動(dòng)將新固件(firmware)由因特網(wǎng)(Internet)下載后,更新到嵌入式電子裝置上。常見 的嵌入式電子裝置固件更新方法包括先通過因特網(wǎng)確認(rèn)服務(wù)器(server)上面有新版本的 固件,然后下載此新版本固件,安裝到指定的裝置上面。此外也可以通過在裝置上面的一塊 特殊存儲(chǔ)裝置來存儲(chǔ)下載的新固件,且以一個(gè)標(biāo)記(flag)來判斷是否要更新,并于成功更 新后清除此標(biāo)記。再者,也可以判斷用戶是否按下裝置上特殊的按鍵組合,再通過通用串行 總線(universal serial bus,簡(jiǎn)稱USB)連線執(zhí)行裝置的固件更新。不過這些更新方法多 是直接下載新版本固件去覆蓋舊的固件,在沒有備份機(jī)制情況下,若在固件更新、寫入存儲(chǔ) 器過程中發(fā)生異常問題,例如系統(tǒng)故障(crash)、停電或此新版本固件本身有問題,此裝置 在固件更新過程后將無法正常運(yùn)作。大多數(shù)嵌入式電子裝置無法容許更新錯(cuò)誤的情況發(fā)生 (例如掛在墻上的監(jiān)視系統(tǒng)的數(shù)字?jǐn)z影機(jī)),一旦更新錯(cuò)誤就可能無法正常啟動(dòng),也就無法 再次進(jìn)行更新。但是在開發(fā)過程中卻總是會(huì)有許多不正常的錯(cuò)誤情況發(fā)生,所以需要有一 套機(jī)制可以安全地更新固件。為了避免嵌入式電子裝置在固件更新后無法正常運(yùn)作,也有一些對(duì)應(yīng)的方法可以 采用。例如,使用兩塊存儲(chǔ)器區(qū)域來存放舊的固件與新版本固件,并通過特殊的標(biāo)記,例如 校驗(yàn)和(checksum)來判斷固件更新是否正確。若固件更新不正確時(shí),可以由用戶通過按鈕 控制驅(qū)動(dòng)舊的固件重新開機(jī)。另外,也可以在固件更新過程前,先進(jìn)入一個(gè)特殊模式,當(dāng)固 件更新不正確時(shí),由此裝置的預(yù)設(shè)的系統(tǒng)監(jiān)視器(watchdog)在預(yù)設(shè)時(shí)間到達(dá)時(shí),重新驅(qū)動(dòng) 舊的固件重新開機(jī)。但是這些需要額外的硬件電路或硬件來達(dá)成,且仍然無法保證固件更 新后每次都可以正常啟動(dòng),甚至需要于更新固件失敗后由人工方式取回此嵌入示電子裝置 以其他方法更新固件。
發(fā)明內(nèi)容
為解決上述的問題,本發(fā)明提供一種固件更新方法,適用于一遠(yuǎn)端嵌入式電子裝置。本發(fā)明另提供一種固件更新方法,適用于嵌入式電子裝置。本發(fā)明另提供一種遠(yuǎn)端嵌入式電子裝置,適用于上述的固件更新方法。為了達(dá)到上述或其他目的,根據(jù)本發(fā)明的實(shí)施例,本發(fā)明提供一種固件更新方法, 適用于遠(yuǎn)端嵌入式電子裝置。固件更新方法包括執(zhí)行啟動(dòng)程序以進(jìn)行初始化的設(shè)定、讀取 只讀存儲(chǔ)器內(nèi)的設(shè)定區(qū)域的更新狀態(tài),以及判斷更新狀態(tài)。若更新狀態(tài)為默認(rèn)狀態(tài),則執(zhí)行 默認(rèn)固件。若更新狀態(tài)非為默認(rèn)狀態(tài),則判斷該更新狀態(tài)是否為已更新狀態(tài)。若更新狀態(tài)為已更新狀態(tài),則將該設(shè)定區(qū)域設(shè)定為啟動(dòng)狀態(tài),并執(zhí)行新固件。若更新狀態(tài)并非為已更新 狀態(tài),則進(jìn)一步判斷更新狀態(tài)是否為執(zhí)行新固件狀態(tài)。若更新狀態(tài)為執(zhí)行新固件狀態(tài),則執(zhí) 行新固件,并執(zhí)行更新確認(rèn)方法,若更新確認(rèn)方法得到確認(rèn)更新完成消息,則將該更新狀態(tài) 設(shè)定為執(zhí)行新固件狀態(tài)。若更新狀態(tài)并非為執(zhí)行新固件狀態(tài),則代表前次的更新失敗,此時(shí) 可執(zhí)行默認(rèn)固件,回復(fù)到初始預(yù)設(shè)的模式。根據(jù)本發(fā)明的實(shí)施例,本發(fā)明另提供一種嵌入式 電子裝置的固件更新方法。其中, 嵌入式電子裝置的固件更新方法包括執(zhí)行啟動(dòng)程序,進(jìn)行初始化的設(shè)定、確認(rèn)嵌入式電子 裝置的設(shè)定區(qū)域的更新狀態(tài)是否進(jìn)入已更新狀態(tài),以及執(zhí)行更新確認(rèn)方法。若確認(rèn)嵌入式 電子裝置的設(shè)定區(qū)域的更新狀態(tài)進(jìn)入已更新狀態(tài),則將更新狀態(tài)設(shè)定為啟動(dòng)狀態(tài),并執(zhí)行 新固件。若更新確認(rèn)方法得到確認(rèn)更新完成消息,則將更新狀態(tài)設(shè)定為執(zhí)行新固件狀態(tài),之 后再次啟動(dòng)時(shí),該嵌入式電子裝置便會(huì)使用新固件。相反地,若更新確認(rèn)方法未得到確認(rèn)更 新完成消息,則更新狀態(tài)依然為啟動(dòng)狀態(tài),當(dāng)重新啟動(dòng)時(shí)便會(huì)執(zhí)行默認(rèn)固件,回復(fù)到初始預(yù) 設(shè)的模式。根據(jù)本發(fā)明的實(shí)施例,本發(fā)明另提供一種遠(yuǎn)端嵌入式電子裝置,用以執(zhí)行上述的 固件更新方法。此遠(yuǎn)端嵌入式電子裝置包括處理器、隨機(jī)存取存儲(chǔ)器、只讀存儲(chǔ)器以及輸入 輸出接口。其中,只讀存儲(chǔ)器分成四個(gè)區(qū)域,此四個(gè)區(qū)域分別用以存儲(chǔ)啟動(dòng)程序、設(shè)定參數(shù)、 默認(rèn)固件以及新的固件。而輸入輸出接口包括網(wǎng)絡(luò)接口?;谏鲜觯景l(fā)明的實(shí)施例提供一個(gè)可安全復(fù)原的固件更新方法,通過確認(rèn)嵌入 式電子裝置的更新狀態(tài)以及確認(rèn)固件成功更新的方法,以讓此嵌入式電子裝置在固件更新 錯(cuò)誤時(shí)選擇默認(rèn)固件重新開機(jī)以確??稍俅胃?。為讓本發(fā)明的上述特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉實(shí)施例,并配合所附圖式 作詳細(xì)說明如下。
圖1是根據(jù)本發(fā)明的實(shí)施例所提出的一種嵌入式電子裝置的系統(tǒng)結(jié)構(gòu)圖。圖2是一種嵌入式電子裝置開機(jī)程序的流程圖。圖3是根據(jù)本發(fā)明的實(shí)施例所提出的一種嵌入式電子裝置固件更新方法的流程 圖。圖4是根據(jù)本發(fā)明的實(shí)施例所提出的一種嵌入式電子裝置固件更新方法中選擇 使用固件的方法的流程圖。圖5是接續(xù)圖四的執(zhí)行更新確認(rèn)程序的方法的詳細(xì)流程圖。圖6是根據(jù)本發(fā)明的實(shí)施例所提出的一個(gè)IP攝影機(jī)使用環(huán)境的示意圖。主要元件符號(hào)說明100:嵌入式電子裝置110、610:處理器120、620 只讀存儲(chǔ)器模塊122,622 啟動(dòng)程序區(qū)域124,624 設(shè)定區(qū)域126,626 默認(rèn)固件區(qū)域
128,628 新固件區(qū)域130 隨機(jī)存取存儲(chǔ)器模塊140:輸出輸入接口
142:網(wǎng)絡(luò)接口144:USB 接口146 大容量存儲(chǔ)裝置接口148 其他輸出輸入裝置接口S202 S206 依照本發(fā)明實(shí)施例說明的嵌入式電子裝置開機(jī)程序的步驟S302 S312 依照本發(fā)明實(shí)施例說明的嵌入式電子裝置固件更新方法的步驟S402 S418 依照本發(fā)明實(shí)施例說明的固件更新方法中選擇使用固件的方法的 步驟S502 S516 依照本發(fā)明實(shí)施例說明的更新確認(rèn)程序的步驟600: IP攝影機(jī)裝置612 隨機(jī)存取存儲(chǔ)器模塊620 快閃存儲(chǔ)器模塊630:網(wǎng)絡(luò)接口632:傳感器接口640:固件下載服務(wù)器650 用戶裝置660:因特網(wǎng)
具體實(shí)施例方式現(xiàn)在將詳細(xì)參照本發(fā)明的實(shí)施例,其實(shí)例繪示于附圖中,附帶一提的是,整個(gè)附圖 中相同的參考標(biāo)記用于表示相同或相似的部件。圖1繪示根據(jù)本發(fā)明的實(shí)施例所提出的一種嵌入式電子裝置100的系統(tǒng)方塊圖。 此嵌入式電子裝置100包括處理器110、只讀存儲(chǔ)器模塊(Read OnlyMemory Module,簡(jiǎn) 稱為ROM模塊)120、隨機(jī)存取存儲(chǔ)器模塊(RandomAccess Memory Module,簡(jiǎn)稱為RAM模 塊)130以及輸出輸入接口 140。此嵌入式電子裝置100的RAM模塊130可存儲(chǔ)程序模塊, 所述程序模塊在由處理器110執(zhí)行時(shí),執(zhí)行產(chǎn)生媒體程序的一個(gè)或多個(gè)過程。RAM模塊130 可為一個(gè)或多個(gè)存儲(chǔ)器裝置,用以存儲(chǔ)資料以及軟件程序,且也可例如包括RAM、磁性存儲(chǔ) 設(shè)備、快閃存儲(chǔ)器存儲(chǔ)(Flash Memory Storage)設(shè)備或光學(xué)存儲(chǔ)設(shè)備中之一或多者。處理 器110可提供為一個(gè)或多個(gè)經(jīng)配置(configuration)以執(zhí)行程序模塊的處理器。如圖1所示,此嵌入式電子裝置100的ROM模塊120分成四個(gè)區(qū)域,此四個(gè)區(qū)域分 別為啟動(dòng)程序(Boot Loader)區(qū)域122、設(shè)定區(qū)域124、默認(rèn)固件區(qū)域126以及新固件區(qū)域 128。另外,此嵌入式電子裝置100的輸出輸入接口 140包括網(wǎng)絡(luò)接口 142、通用串行總線接 Π (Universal Serial Buslnterface,簡(jiǎn)稱為 USB 接口)144、大容量存儲(chǔ)裝置接口 146 以 及其他輸出輸入裝置接口 148。在本實(shí)施例中,ROM模塊120的啟動(dòng)程序122是用以存儲(chǔ)啟動(dòng)(BootLoader)程 序。此啟動(dòng)程序是用以進(jìn)行一些初始化(Initialization)的動(dòng)作,并將主要的固件程序模塊載入RAM模塊130中執(zhí)行。在本發(fā)明的一實(shí)施例中,ROM模塊120的設(shè)定區(qū)域124是用以存儲(chǔ)設(shè)定參數(shù)。此設(shè) 定參數(shù)包括固件的更新狀態(tài)。其中更新狀態(tài)可以被區(qū)分為四種狀態(tài),分別是默認(rèn)(DEFAULT) 狀態(tài)、已更新(UPDATED)狀態(tài)、啟動(dòng)(BOOTING)狀態(tài)以及執(zhí)行新固件(RUNNEW)狀態(tài)。在本實(shí)施例中,ROM模塊120的默認(rèn)固件區(qū)域126是用以存儲(chǔ)默認(rèn)固件。此默認(rèn) 固件具備使嵌入式電子裝置100正常運(yùn)作以及被更新固件的能力。另外,ROM模塊120的新固件區(qū)域128是用以存儲(chǔ)新的固件。在此值得一提的是,以上所述的固件可以是包含操作系統(tǒng)、檔案系統(tǒng)、固件更新程 序、固件更新檢查程序以及其他相關(guān)的應(yīng)用程序。延續(xù)上述的本實(shí)施例,輸出輸入接口 140的網(wǎng)絡(luò)接口 142可為一個(gè)區(qū)域網(wǎng)絡(luò)接 口,用以連結(jié)嵌入式電子裝置100至存儲(chǔ)新固件的一服務(wù)器(Server)。再者,此區(qū)域網(wǎng) 絡(luò)接口也可將此嵌入式電子裝置100連結(jié)到因特網(wǎng)(Internet),用以連結(jié)嵌入式電子裝置 100至存儲(chǔ)新固件的一服務(wù)器(Server)。另外,本發(fā)明中的嵌入式電子裝置100的網(wǎng)絡(luò)接 口 142也可為一個(gè)撥接網(wǎng)絡(luò)連線接口、一個(gè)無線網(wǎng)絡(luò)接口、一個(gè)城域網(wǎng)絡(luò)(Metropolitan AreaNetwork)接口、一個(gè)廣域網(wǎng)絡(luò)(Wide Area Network)接口或一個(gè)光纖網(wǎng)絡(luò)(Optical Fiber Network)接口。輸出輸入接口 140的通用串行總線接口 144用以將此嵌入式電子裝置100連結(jié)至 其他電子裝置來下載新的固件。例如,此其他電子裝置可以是一個(gè)移動(dòng)式存儲(chǔ)模塊,可為一 個(gè)或多個(gè)存儲(chǔ)器裝置,用以存儲(chǔ)資料以及軟件程序,且也可例如包括RAM、磁性存儲(chǔ)設(shè)備、快 閃存儲(chǔ)器存儲(chǔ)設(shè)備或光學(xué)存儲(chǔ)設(shè)備中之一或多者。又例如,此其他電子裝置可以是一個(gè)移 云力式計(jì)算機(jī)(Computer)。輸出輸入接口 140的大容量存儲(chǔ)裝置接口 146用以將此嵌入式電子裝置100連結(jié) 至一個(gè)外接式存儲(chǔ)裝置來下載新的固件。例如,此外接式存儲(chǔ)裝置可以是一個(gè)移動(dòng)式存儲(chǔ) 卡(Memory Card)。又例如,此外接式存儲(chǔ)裝置可以是一個(gè)移動(dòng)式存儲(chǔ)模塊,可為一個(gè)或多 個(gè)存儲(chǔ)器裝置,用以存儲(chǔ)資料以及軟件程序,且也可例如包括RAM、磁性存儲(chǔ)設(shè)備、快閃存儲(chǔ) 器存儲(chǔ)設(shè)備或光學(xué)存儲(chǔ)設(shè)備中之一或多者。另外,輸出輸入接口 140還包括一個(gè)其他輸出輸入裝置接口 148。例如,此其他輸 出輸入裝置接口可以是高效能串行總線接口(為IEEE標(biāo)準(zhǔn)組織制定,簡(jiǎn)稱為IEEE 1394接 Π )。圖2繪示了一種嵌入式電子裝置開機(jī)程序的流程圖。首先,在步驟S202中,處理 器110將只讀存儲(chǔ)器120中的啟動(dòng)程序復(fù)制到RAM模塊130中并執(zhí)行此啟動(dòng)程序。接著,在步驟S204中,啟動(dòng)程序?qū)⒐碳绦驈?fù)制到RAM模塊130中并執(zhí)行此固件程序。然后,在步驟S206中,固件程序?qū)ν鈬布M(jìn)行初始化動(dòng)作并執(zhí)行固件檔案中的 相關(guān)應(yīng)用程序。當(dāng)需要進(jìn)行更新固件時(shí),則需執(zhí)行一個(gè)固件更新程序。以下將以圖3 5 說明本發(fā)明的一實(shí)施例中的一種更新固件方法的技術(shù)手段。圖3繪示根據(jù)本發(fā)明的實(shí)施例所提出的一種嵌入式電子裝置固件更新方法的流 程圖。首先,在步驟302中,處理器110執(zhí)行只讀存儲(chǔ)器120中的一個(gè)固件更新程序。接著,在步驟304中,此固件更新程序取得一個(gè)新的固件檔案。取得此新的固件檔案的方法包括通過輸出輸入接口 140的網(wǎng)絡(luò)接口 142與一個(gè)服務(wù)器建立連線,此服務(wù)器有可以下載的新的固件檔案。另外,此固件更新程序可以通過其他途徑取得新的固件檔案,例 如,此固件更新程序可以通過輸出輸入接口 140的USB接口 144連接到另一個(gè)服務(wù)器來下 載在服務(wù)器中的新的固件檔案。又例如,此固件更新程序可以通過輸入接口 140的大容量 存儲(chǔ)裝置接口 146,連接到一外接式存儲(chǔ)卡來下載在此外接式存儲(chǔ)卡中的新的固件檔案。又 例如,此固件更新程序可以通過一 IEEE 1394接口連接到一光學(xué)存儲(chǔ)模塊,并由此光學(xué)存 儲(chǔ)模塊下載新的固件檔案。再者,在步驟S306中,此固件更新程序?qū)OM模塊120中的新固件區(qū)域128清除。然后,在步驟S308中,此固件更新程序?qū)⒁韵螺d成功的新的固件檔案寫入到新固 件區(qū)域128中。在步驟S310中,此固件更新程序讀取此新固件區(qū)域128中的新的固件是否與之前 取得的新的固件相同。若新固件區(qū)域128中的新的固件與之前取得的新的固件相同,則執(zhí) 行后續(xù)的步驟S312。相反地,若新固件區(qū)域128中的新的固件與之前取得的新的固件不同, 則重新執(zhí)行步驟S304。在步驟S312中,此固件更新程序?qū)OM模塊120的設(shè)定區(qū)域124中的更新狀態(tài)設(shè) 定為“已更新”狀態(tài)。在本實(shí)施例中,為了避免嵌入式電子裝置在固件更新失敗后無法重新啟動(dòng),另外 提供一個(gè)方法于固件更新后啟動(dòng)時(shí),選擇要使用默認(rèn)固件或新的固件來啟動(dòng)此嵌入式電子 裝置。以下將以圖4說明此選擇固件的方法的技術(shù)手段。圖4繪示了根據(jù)本發(fā)明的實(shí)施例所提出的選擇使用固件的方法的流程圖,而此選 擇使用固件的方法是于啟動(dòng)嵌入式電子裝置時(shí)執(zhí)行。首先,在步驟S402中,處理器110執(zhí) 行啟動(dòng)程序。接著,在步驟中S404中,啟動(dòng)程序讀取在ROM模塊120的設(shè)定區(qū)域124中的更新 狀態(tài)。再者,在步驟中S406中,啟動(dòng)程序檢查此更新狀態(tài)是否為“默認(rèn)”狀態(tài)。若更新狀 態(tài)是“默認(rèn)”狀態(tài),則執(zhí)行步驟S414,執(zhí)行默認(rèn)固件。若更新狀態(tài)并非“默認(rèn)”狀態(tài),則執(zhí)行 下一個(gè)步驟S408。在步驟S408中,啟動(dòng)程序檢查此更新狀態(tài)是否為“已更新”狀態(tài)。若更新狀態(tài)是 “已更新”狀態(tài),則執(zhí)行步驟S412。若更新狀態(tài)并非“已更新”狀態(tài),則執(zhí)行步驟S410。在步驟S410中,啟動(dòng)程序檢查此更新狀態(tài)是否為“執(zhí)行新固件”狀態(tài)。若更新狀 態(tài)是“執(zhí)行新固件”狀態(tài),則執(zhí)行步驟S416。若更新狀態(tài)并非“執(zhí)行新固件”狀態(tài),則執(zhí)行步 驟 S414。在步驟S412中,啟動(dòng)程序?qū)OM模塊120的設(shè)定區(qū)域124中的更新狀態(tài)設(shè)定為
“啟動(dòng)”。然后,在步驟S416中,系統(tǒng)執(zhí)行新固件。最后,在步驟S418中,執(zhí)行更新確認(rèn)程序。以下將以圖5說明此更新確認(rèn)程序的 技術(shù)手段。圖5是圖4的執(zhí)行更新確認(rèn)程序的詳細(xì)流程圖。首先,在步驟S502中,處理器110 執(zhí)行更新確認(rèn)程序。
接著,在步驟S504中,更新確認(rèn)程序讀取ROM模塊120的設(shè)定區(qū)域124中的更新 狀態(tài)。再者,在步驟S506中,更新確認(rèn)程序檢查此更新狀態(tài)是否為“啟動(dòng)”。若更新狀態(tài) 為“啟動(dòng)”,則執(zhí)行下一步驟S508。若更新狀態(tài)并非“啟動(dòng)”,則結(jié)束此流程。
然后,在步驟S508中,更新確認(rèn)程序檢查是否有足夠可用的隨機(jī)存取存儲(chǔ)器。若 有足夠可用的隨機(jī)存取存儲(chǔ)器,則執(zhí)行下一步驟S510。若沒有足夠可用的隨機(jī)存取存儲(chǔ)器, 則結(jié)束此流程。在步驟S510中,更新確認(rèn)程序檢查系統(tǒng)外圍(System Peripheral)狀態(tài)是否正 常,此系統(tǒng)外圍狀態(tài)可為網(wǎng)絡(luò)接口、USB接口或大容量存儲(chǔ)裝置接口。若系統(tǒng)外圍狀態(tài)正常, 則執(zhí)行下一步驟S512。若系統(tǒng)外圍狀態(tài)并非運(yùn)作正常,則結(jié)束此流程。在步驟S512中,更新確認(rèn)程序檢查只讀存儲(chǔ)器是否運(yùn)作正常。若只讀存儲(chǔ)器運(yùn)作 正常,則執(zhí)行下一步驟S514。若只讀存儲(chǔ)器并非運(yùn)作正常,則結(jié)束此流程。在步驟S514中,更新確認(rèn)程序檢查其他相關(guān)功能是否運(yùn)作正常。此相他相關(guān)功 能可為該嵌入式電子裝置的主要功能,例如傳輸控制協(xié)議(Transport Control Protocol 簡(jiǎn)稱為TCP)、網(wǎng)絡(luò)協(xié)議(Internet Protocol簡(jiǎn)稱為IP)、用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol簡(jiǎn)稱為UDP)、流媒體服務(wù)(Streaming Service)功能或與流媒體服務(wù)器 (Streaming Server)連線相關(guān)的功能。若這些相關(guān)功能運(yùn)作正常,則執(zhí)行下一步驟S516。 若這些相關(guān)功能并非運(yùn)作正常,則結(jié)束此流程。最后,在步驟S516中,更新確認(rèn)程序?qū)OM模塊120的設(shè)定區(qū)域124中的更新狀 態(tài)設(shè)定為“執(zhí)行新固件”。參照?qǐng)D4與圖5,本發(fā)明中所提到如何選擇使用默認(rèn)固件或是新固件的方式,主要 是由設(shè)定區(qū)域124中的更新狀態(tài)來判斷。其中關(guān)鍵的步驟為更新后第一次執(zhí)行時(shí),啟動(dòng)程 序暫時(shí)將更新狀態(tài)改為“啟動(dòng)”,接著執(zhí)行新的固件。在此新固件中需包含更新確認(rèn)程序,只 有當(dāng)更新確認(rèn)程序測(cè)試過存儲(chǔ)器空間大小、系統(tǒng)外圍裝置狀態(tài)、只讀存儲(chǔ)器存取狀態(tài)以及 此嵌入式電子裝置的主要功能都沒有問題,也即此新固件具有再次更新的能力時(shí),之后才 能將更新狀態(tài)設(shè)定成“執(zhí)行新固件”。如此,此嵌入式電子裝置重新開機(jī)時(shí)也會(huì)使用新的固 件。但若新的固件執(zhí)行過程中系統(tǒng)發(fā)生任何錯(cuò)誤,導(dǎo)致更新確認(rèn)程序無法正常完成的話,更 新狀態(tài)就依然保留為“啟動(dòng)”,直到下次開機(jī)時(shí),啟動(dòng)程序便會(huì)依據(jù)圖4所繪示的流程去執(zhí) 行默認(rèn)固件。以下將以圖6的實(shí)施例說明應(yīng)用本發(fā)明的一種嵌入式電子裝置固件更新方法 的一種遠(yuǎn)端嵌入式電子裝置及其應(yīng)用環(huán)境。圖6是根據(jù)本發(fā)明的實(shí)施例的一個(gè)IP攝影機(jī)裝置600使用環(huán)境的示意圖。此IP 攝影機(jī)裝置使用的環(huán)境包括此IP攝影機(jī)裝置600、固件下載服務(wù)器640、用戶裝置650及因 特網(wǎng)660。其中,此IP攝影機(jī)裝置600、固件下載服務(wù)器640及用戶裝置650通過因特網(wǎng) 660連接在一起。此IP攝影機(jī)裝置600具有將攝影機(jī)所攝錄的影像,經(jīng)過適當(dāng)?shù)膲嚎s處理后,通過 網(wǎng)絡(luò)傳送到預(yù)設(shè)的客戶裝置650。此客戶裝置650可為一臺(tái)計(jì)算機(jī)或一個(gè)具有監(jiān)看IP攝影 機(jī)裝置600所攝錄影像的功能的裝置。用戶可以利用此客戶裝置650來監(jiān)看或錄影IP攝 影機(jī)裝置600所攝錄影像。另外,用戶也可以人工方式由固件下載服務(wù)器640下載此IP攝 影機(jī)裝置600的新的固件,且上傳此新的固件到IP攝影機(jī)裝置600并執(zhí)行固件更新程序。當(dāng)IP攝影機(jī)裝置600更新固件完成后即自動(dòng)重新啟動(dòng),并如圖4所述流程執(zhí)行新的固件及更新確認(rèn)程序。在本實(shí)施例中,除了上述的圖5的相關(guān)檢查流程以外,此IP攝影機(jī)裝置600還檢查相關(guān)功能是否運(yùn)作正常,例如傳感器接口 632、網(wǎng)絡(luò)連線狀態(tài)、網(wǎng)頁(yè)服務(wù)、流媒體服務(wù)器
等應(yīng)用程序等。如果上述的檢查結(jié)果都正常時(shí),下次此IP攝影機(jī)裝置600重新啟動(dòng)時(shí)將使用新的 固件,若上述的檢查結(jié)果并非都正常時(shí),下次重新啟動(dòng)時(shí),則會(huì)執(zhí)行默認(rèn)固件。綜上所述,本發(fā)明通過確認(rèn)嵌入式電子裝置的更新狀態(tài)、確認(rèn)成功更新固件的方 法,以及發(fā)生錯(cuò)誤時(shí)選擇默認(rèn)固件重新開機(jī)來達(dá)到可安全復(fù)原的固件更新。因此可以在不 使用特殊電路的一般狀況下,讓更新后的固件在發(fā)生錯(cuò)誤時(shí)不至于無法挽救,可重新開機(jī) 自動(dòng)執(zhí)行默認(rèn)固件,并可通過默認(rèn)固件進(jìn)行再次更新。雖然本發(fā)明已以實(shí)施例揭露如上,然其并非用以限定本發(fā)明,任何所屬技術(shù)領(lǐng)域 中具有通常知識(shí)者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的更動(dòng)與潤(rùn)飾,故本發(fā)明 的保護(hù)范圍當(dāng)視后附的權(quán)利要求所界定者為準(zhǔn)。
權(quán)利要求
一種固件更新方法,適用于電子裝置,其中該方法包括執(zhí)行一啟動(dòng)程序,進(jìn)行初始化的設(shè)定;讀取一存儲(chǔ)器內(nèi)的一設(shè)定區(qū)域的更新狀態(tài);以及判斷該更新狀態(tài),若為一默認(rèn)狀態(tài),則執(zhí)行一默認(rèn)固件啟動(dòng)系統(tǒng),若非為默認(rèn)狀態(tài),則進(jìn)行底下的判斷判斷該更新狀態(tài)是否為一已更新狀態(tài),若該更新狀態(tài)為該已更新狀態(tài),則將該設(shè)定區(qū)域設(shè)定為啟動(dòng)狀態(tài),并執(zhí)行一新固件,若該更新狀態(tài)并非該已更新狀態(tài),則進(jìn)行以下的判斷判斷該更新狀態(tài)是否為一執(zhí)行新固件狀態(tài),若該更新狀態(tài)為該執(zhí)行新固件狀態(tài),則執(zhí)行該新固件,并于啟動(dòng)后執(zhí)行一更新確認(rèn)方法,若該更新狀態(tài)并非該執(zhí)行新固件狀態(tài),則執(zhí)行該默認(rèn)固件。
2.如權(quán)利要求1所述的固件更新方法,其中該更新確認(rèn)方法包括 讀取該存儲(chǔ)器內(nèi)的設(shè)定區(qū)域的更新狀態(tài);以及判斷該更新狀態(tài)是否為該啟動(dòng)狀態(tài), 若該更新狀態(tài)并非該啟動(dòng)狀態(tài),則結(jié)束更新確認(rèn)方法, 若該更新狀態(tài)是該啟動(dòng)狀態(tài),則檢查是否符合再次下載該新固件的條件, 若符合該些再次下載該新固件的條件,則發(fā)出一確認(rèn)完成消息,并將該更新狀態(tài)設(shè)定 為該執(zhí)行新固件狀態(tài)。
3.如權(quán)利要求2所述的固件更新方法,其中該些再次下載該新固件的條件包括建立該 電子裝置與一服務(wù)器的連線路徑,以達(dá)成再次下載該新固件的能力。
4.如權(quán)利要求3所述的固件更新方法,其中該些再次下載該新固件的條件,用以檢查 該電子裝置的系統(tǒng)外圍裝置、該存儲(chǔ)器的運(yùn)作、該存儲(chǔ)器空間大小其中之一或其組合。
5.如權(quán)利要求1所述的固件更新方法,其中該方法還包括該電子裝置經(jīng)由一因特網(wǎng)與 一服務(wù)器建立連線路徑,并由該服務(wù)器下載該新固件。
6.如權(quán)利要求1所述的固件更新方法,其中該方法還包括該電子裝置經(jīng)由一撥接網(wǎng)絡(luò) 與一服務(wù)器建立連線路徑,并由該服務(wù)器下載該新固件。
7.如權(quán)利要求1所述的固件更新方法,其中該方法還包括該電子裝置經(jīng)由一區(qū)域網(wǎng)絡(luò) 接口與一服務(wù)器建立連線路徑,并由該服務(wù)器下載該新固件。
8.如權(quán)利要求1所述的固件更新方法,其中該方法還包括該電子裝置經(jīng)由一無線網(wǎng)絡(luò) 接口與一服務(wù)器建立連線路徑,并由該服務(wù)器下載該新固件。
9.如權(quán)利要求1所述的固件更新方法,其中該存儲(chǔ)器為該電子裝置內(nèi)的多個(gè)只讀存儲(chǔ) 器其中之一。
10.如權(quán)利要求1所述的固件更新方法,其中該只讀存儲(chǔ)器為快閃只讀存儲(chǔ)器。
11.一種固件更新方法,適用于電子裝置,其方法包括 執(zhí)行一啟動(dòng)程序,進(jìn)行初始化的設(shè)定;確認(rèn)該電子裝置內(nèi)的一存儲(chǔ)器的一設(shè)定區(qū)域的一更新狀態(tài)是否進(jìn)入一已更新狀態(tài), 若該存儲(chǔ)器的該設(shè)定區(qū)域的更新狀態(tài)是進(jìn)入該已更新狀態(tài),則將該更新狀態(tài)設(shè)定為一 啟動(dòng)狀態(tài),并執(zhí)行一新固件;以及執(zhí)行一更新確認(rèn)方法,若該更新確認(rèn)方法得到一確認(rèn)更新完成消息,則將該更新狀態(tài)設(shè)定為該執(zhí)行新固件狀 態(tài),并讓該電子裝置使用新固件,若該更新確認(rèn)方法未得到該確認(rèn)更新完成消息,則執(zhí)行一默認(rèn)固件。
12.如權(quán)利要求11所述的電子裝置的固件更新方法,其中該更新確認(rèn)方法包括判斷該 更新狀態(tài)是否為該啟動(dòng)狀態(tài),若該更新狀態(tài)并非該啟動(dòng)狀態(tài),則結(jié)束更新確認(rèn)方法, 若該更新狀態(tài)是該啟動(dòng)狀態(tài),則檢查是否符合再次下載該新固件的條件, 若符合該再次下載該新固件的條件,則發(fā)出該確認(rèn)完成消息,并將該更新狀態(tài)設(shè)定為 該執(zhí)行新固件狀態(tài)。
13.如權(quán)利要求12所述的電子裝置的固件更新方法,其中該些再次下載該新固件的條 件,用以建立該電子裝置與一服務(wù)器的連線路徑,以達(dá)成再次下載該新固件的能力。
14.如權(quán)利要求13所述的固件更新方法,其中該些再次下載該新固件的條件還包括檢 查該電子裝置的系統(tǒng)外圍裝置、該只讀存儲(chǔ)器的運(yùn)作、該存儲(chǔ)器空間大小其中之一或其組合。
15.如權(quán)利要求11所述的固件更新方法,其中該方法還包括該電子裝置經(jīng)由一因特網(wǎng) 與一服務(wù)器建立連線路徑,并由該服務(wù)器下載該新固件。
16.如權(quán)利要求11所述的固件更新方法,其中該方法還包括該電子裝置經(jīng)由一通用串 行總線接口下載該新固件。
17.如權(quán)利要求11所述的固件更新方法,其中該方法還包括該電子裝置經(jīng)由一存儲(chǔ)裝 置接口下載該新固件。
18.如權(quán)利要求11所述的固件更新方法,其中該方法還包括該電子裝置經(jīng)由一區(qū)域網(wǎng) 絡(luò)接口與一服務(wù)器建立連線路徑,并由該服務(wù)器下載該新固件。
19.如權(quán)利要求11所述的固件更新方法,其中該方法還包括該電子裝置經(jīng)由一無線網(wǎng) 絡(luò)接口與一服務(wù)器建立連線路徑,并由該服務(wù)器下載該新固件。
20.一種電子裝置,用以執(zhí)行如權(quán)利要求第11項(xiàng)所述的固件更新方法,其中該裝置包括處理器;隨機(jī)存取存儲(chǔ)器;以及只讀存儲(chǔ)器,該存儲(chǔ)器具有四個(gè)區(qū)域,其中該四個(gè)區(qū)域包括第一區(qū)域,用以存儲(chǔ)一啟動(dòng)程序;第二區(qū)域,用以存儲(chǔ)設(shè)定參數(shù);第三區(qū)域,用以存儲(chǔ)默認(rèn)固件;以及第四區(qū)域,用以存儲(chǔ)一新固件;以及輸入輸出接口,其中該輸出輸入接口包括一網(wǎng)絡(luò)接口。
21.如權(quán)利要求20所述的電子裝置,其中該啟動(dòng)程序?qū)υ撾娮友b置進(jìn)行初始化的設(shè) 定,并執(zhí)行下述的步驟確認(rèn)該電子裝置內(nèi)的該存儲(chǔ)器的該第二區(qū)域的一更新狀態(tài)是否進(jìn)入一已更新狀態(tài), 若該存儲(chǔ)器的該第二區(qū)域的更新狀態(tài)是進(jìn)入該已更新狀態(tài),則將該更新狀態(tài)設(shè)定為一啟動(dòng)狀態(tài),并執(zhí)行該新固件;以及執(zhí)行一更新確認(rèn)方法,若該更新確認(rèn)方法得到一確認(rèn)更新完成消息,則將該更新狀態(tài)設(shè)定為該執(zhí)行新固件狀 態(tài),并讓該電子裝置使用新固件,若該更新確認(rèn)方法未得到該確認(rèn)更新完成消息,則執(zhí)行該默認(rèn)固件。
22.如權(quán)利要求20所述的電子裝置,其中該更新確認(rèn)方法包括判斷該更新狀態(tài)是否為 啟動(dòng)狀態(tài),若該更新狀態(tài)并非該啟動(dòng)狀態(tài),則結(jié)束更新確認(rèn)方法,若該更新狀態(tài)是該啟動(dòng)狀態(tài),則檢查是否符合再次下載該新固件的條件,若符合該再次下載該新固件的條件,則發(fā)出該確認(rèn)完成消息,并將該更新狀態(tài)設(shè)定為 該執(zhí)行新固件狀態(tài)。
23.如權(quán)利要求20所述的電子裝置,其中該些再次下載該新固件的條件,用以建立該 電子裝置與一服務(wù)器的連線路徑,以達(dá)成再次下載該新固件的能力。
24.如權(quán)利要求20所述的電子裝置,其中該些再次下載該新固件的條件還包括檢查該 電子裝置的該輸入輸出接口、該隨機(jī)存取存儲(chǔ)器的運(yùn)作、該存儲(chǔ)器的運(yùn)作、存儲(chǔ)器空間大小 其中之一或其組合。
25.如權(quán)利要求20所述的電子裝置,其中該裝置的該輸入輸出接口還包括通用串行總線接口 ;以及外接式大容量存儲(chǔ)裝置接口。
26.如權(quán)利要求20所述的電子裝置,其中該些再次下載該新固件的條件包括該電子裝 置經(jīng)由一因特網(wǎng)與一服務(wù)器建立連線路徑,以達(dá)成再次下載該新固件的能力。
27.如權(quán)利要求20所述的電子裝置,其中該些再次下載該新固件的條件包括該電子裝 置經(jīng)由一撥接網(wǎng)絡(luò)與一服務(wù)器建立連線路徑,以達(dá)成再次下載該新固件的能力。
28.如權(quán)利要求20所述的電子裝置,其中該些再次下載該新固件的條件包括該電子裝 置經(jīng)由一區(qū)域網(wǎng)絡(luò)與一服務(wù)器建立連線路徑,以達(dá)成再次下載該新固件的能力。
29.如權(quán)利要求20所述的電子裝置,其中該些再次下載該新固件的條件包括該電子裝 置經(jīng)由一無線網(wǎng)絡(luò)與一服務(wù)器建立連線路徑,以達(dá)成再次下載該新固件的能力。
30.如權(quán)利要求20所述的電子裝置,其中該些再次下載該新固件的條件包括該電子裝 置經(jīng)由一城域網(wǎng)絡(luò)與一服務(wù)器建立連線路徑,以達(dá)成再次下載該新固件的能力。
31.如權(quán)利要求20所述的電子裝置,其中該些再次下載該新固件的條件包括該電子裝 置經(jīng)由一廣域網(wǎng)絡(luò)與一服務(wù)器建立連線路徑,以達(dá)成再次下載該新固件的能力。
32.如權(quán)利要求20所述的電子裝置,其中該些再次下載該新固件的條件包括該電子裝 置經(jīng)由一光纖網(wǎng)絡(luò)與一服務(wù)器建立連線路徑,以達(dá)成再次下載該新固件的能力。
全文摘要
一種遠(yuǎn)端嵌入式電子裝置的固件更新方法。此方法包括讀取只讀存儲(chǔ)器內(nèi)的更新狀態(tài)以及判斷更新狀態(tài)。若更新狀態(tài)為默認(rèn)狀態(tài),則執(zhí)行默認(rèn)固件。若更新狀態(tài)并非默認(rèn)狀態(tài),則判斷更新狀態(tài)是否為已更新狀態(tài)。若更新狀態(tài)為已更新狀態(tài),則將設(shè)定區(qū)域設(shè)定為啟動(dòng)狀態(tài),并執(zhí)行新固件。若更新狀態(tài)并非已更新狀態(tài),則判斷更新狀態(tài)是否為執(zhí)行新固件狀態(tài)。若更新狀態(tài)為執(zhí)行新固件狀態(tài),則執(zhí)行新固件,并執(zhí)行更新確認(rèn)方法,若更新確認(rèn)方法得到確認(rèn)更新完成消息,則將更新狀態(tài)設(shè)定為執(zhí)行新固件狀態(tài)。若更新狀態(tài)并非執(zhí)行新固件狀態(tài),則執(zhí)行默認(rèn)固件。
文檔編號(hào)G06F9/445GK101807149SQ200910006488
公開日2010年8月18日 申請(qǐng)日期2009年2月18日 優(yōu)先權(quán)日2009年2月18日
發(fā)明者施向玨, 郭冠良 申請(qǐng)人:聯(lián)詠科技股份有限公司