TWI598816B - 可更新韌體之電子裝置及其韌體下載方法 - Google Patents

可更新韌體之電子裝置及其韌體下載方法 Download PDF

Info

Publication number
TWI598816B
TWI598816B TW103140938A TW103140938A TWI598816B TW I598816 B TWI598816 B TW I598816B TW 103140938 A TW103140938 A TW 103140938A TW 103140938 A TW103140938 A TW 103140938A TW I598816 B TWI598816 B TW I598816B
Authority
TW
Taiwan
Prior art keywords
firmware
segment
parameter
segments
firmware data
Prior art date
Application number
TW103140938A
Other languages
English (en)
Other versions
TW201619821A (zh
Inventor
羅峻譯
Original Assignee
慧榮科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Priority to TW103140938A priority Critical patent/TWI598816B/zh
Priority to CN201410833579.XA priority patent/CN105630533B/zh
Priority to US14/711,513 priority patent/US9766880B2/en
Publication of TW201619821A publication Critical patent/TW201619821A/zh
Priority to US15/661,800 priority patent/US9846578B2/en
Application granted granted Critical
Publication of TWI598816B publication Critical patent/TWI598816B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Description

可更新韌體之電子裝置及其韌體下載方法
本發明係關於一種可更新韌體之電子裝置之韌體下載方法;特別係關於一種可中斷之韌體下載方法。
隨著使用者的使用習慣以及使用需求的改變,愈來愈多的電子裝置上,例如個人電腦、手持式(handheld)或可攜式(portable)的電子裝置例如智慧型手機(smart phone)、個人數位助理(PDA)、平板電腦(Tablet PC)或超便攜電腦(UMPC,Ultra Mobile PC)等,都配置有許多不同的周邊以增加使用上的便利性。
周邊裝置系統運作所需的韌體程式資料一般會燒錄在非易失性的儲存單元當中,例如快閃唯讀記憶體(Flash ROM),並附隨著硬體裝置釋出。然而,當周邊裝置釋出後,為了修補程式中的缺陷、或為提供新增的服務或功能,製造者或研發者可能會提供新版本的程式,用以進行周邊裝置程式的更新或升級。在某些裝置上,燒錄程式的過程是不允許有中斷的事件發生,否則會產生周邊裝置無法運作或者需要重新下載等問題。
本發明所提供之電子裝置以及韌體下載方法可在 韌體更新的過程中被中斷。
本發明提供一種韌體下載方法,適用於一主機以及一周邊裝置,其中周邊裝置包括一記憶體裝置以及一控制器,包括:自主機傳送一第一韌體資料段至周邊裝置,其中第一韌體資料段具有一第一模式參數;以及在記憶體裝置發生一中斷事件後,重新自主機傳送具有一第二模式參數之第一韌體資料段至周邊裝置。
在另一實施例中,韌體下載方法更包括藉由控制器讀取所接收之第一韌體資料段中之參數段,其中第一韌體資料段中之參數段包括第一模式參數或者第二模式參數;將具有第一模式參數之第一韌體資料段中之程式碼段,儲存至記憶體裝置;以及忽略具有第二模式參數之第一韌體資料段中之程式碼段。值得注意的是,第一韌體資料段為複數韌體資料段中之一者,每一韌體資料段包括一程式碼段以及一參數段,並且複數韌體資料段中之程式碼段係用以構成一韌體。在另一實施例中,每一韌體資料段中之參數段更包括一韌體版本參數、一模式參數、一索引、一控制器版本參數、一資料總量參數以及一校驗參數。
本發明亦提供另一種韌體下載方法,適用於一主機以及一周邊裝置,其中周邊裝置包括一記憶體裝置以及一控制器,包括:自主機依序傳送複數韌體資料段至周邊裝置,其中N個韌體資料段用以構成一韌體,並且每一韌體資料段具有一第一模式參數;以及當依序傳送韌體中之複數韌體資料段至周邊裝置的過程在第M個韌體資料段被中斷後,重新依序傳送 第1個至第N個韌體資料段至周邊裝置,其中N大於M,重新傳送之第1個至第M-1個韌體資料段具有一第二模式參數,並且重新傳送之第M個至第N個韌體資料段具有第一模式參數。
在另一實施例中,韌體下載方法更包括:藉由控制器讀取所接收之韌體資料段中之參數段,其中韌體資料段中之參數段包括第一模式參數或者第二模式參數;將具有第一模式參數之韌體資料段中之程式碼段,依序儲存至記憶體裝置;忽略具有第二模式參數之韌體資料段中之程式碼段;以及當依序傳送韌體中之複數韌體資料段至周邊裝置的過程在第M個韌體資料段被中斷時,藉由主機,將第1個至第M-1個韌體資料段中之第一模式參數改寫為第二模式參數。
本發明又提供一種可更新韌體之電子裝置包括一記憶體裝置以及一控制器。控制器用以自一主機依序接收用以構成一韌體之複數韌體資料段,讀取所接收之韌體資料段中之參數段,以將參數段中具有一第一模式參數之韌體資料段中之程式碼段儲存至記憶體裝置,並忽略參數段中具有一第二模式參數之韌體資料段中之程式碼段,其中韌體依序係由韌體資料段中之程式碼段所構成。
在另一實施例中,控制器更用以讀取所接收之韌體資料段中之參數段,以根據參數段中之一索引,確認韌體資料段的順序,並依照韌體資料段的順序將韌體資料段中之程式碼段儲存至記憶體裝置中所相應之位置。控制器更用以讀取所接收之韌體資料段中之參數段,以根據參數段中之一資料總量參數,確認韌體的長度,並根據資料總量參數以及索引判斷韌 體資料段是否已接收完畢。控制器更用以讀取所接收之韌體資料段中之參數段,以根據所接收之韌體資料段之參數段中所具有的一第三模式參數,判斷是否需要將所接收之韌體資料段之程式碼段儲存至記憶體裝置。控制器更用以讀取所接收之韌體資料段中之參數段,以根據參數段中之一控制器版本參數確認控制器之版本是否正確,根據參數段中之一校驗參數校驗韌體資料段中之程式碼段,並根據參數段中之一韌體版本參數確認韌體之版本是否正確。
100‧‧‧電子裝置
102‧‧‧主機
104‧‧‧周邊裝置
1042‧‧‧控制器
1044‧‧‧暫存器
1046‧‧‧記憶體裝置
DS1~DSN‧‧‧韌體資料段
CS1~CSN‧‧‧程式碼段
PS1~PSN‧‧‧參數段
FW‧‧‧韌體
S400-S636‧‧‧步驟
第1圖係本發明之可更新韌體之電子裝置之一種實施例之方塊圖。
第2圖係本發明之韌體資料段之一種實施例的示意圖。
第3圖係本發明之韌體之一種實施例的示意圖。
第4圖係本發明之韌體下載方法之一種實施例之流程圖。
第5A、5B圖係本發明之韌體下載方法之另一種實施例之流程圖。
第6A~6C圖係本發明之韌體下載方法之另一種實施例之流程圖。
以下將詳細討論本發明各種實施例之裝置及使用方法。然而值得注意的是,本發明所提供之許多可行的發明概念可實施在各種特定範圍中。這些特定實施例僅用於舉例說明本發明之裝置及使用方法,但非用於限定本發明之範圍。
電子裝置100包括一主機102以及一周邊裝置104。主機102可實施於各種電腦系統樣態(configuration)上,例如桌上型電腦、筆記型電腦、智慧型手機、平板電腦、個人數位助理以及類似之設備,但本發明不限於此。周邊裝置104可內嵌於主機102之內或者藉由連接埠連接至主機102。另外,周邊裝置104可為感測裝置、輸出輸入裝置或者資料儲存裝置等等,本發明不限於此。在一實施例中,周邊裝置104可為一資料儲存裝置,其中資料儲存裝置是使用SATA SPEC中之”Download Micro Code”的規則更新韌體,故其不能在下載韌體的過程中斷電或者中斷,但本發明不限於此。在其他實施例中,在更新周邊裝置104的過程中,韌體需要依序的寫入周邊裝置104。
主機102用以經由網路或者其他裝置下載周邊裝置104之韌體(Firmware),並將所下載之韌體傳送至周邊裝置104,以更新周邊裝置104。值得注意的是,韌體係由複數韌體資料段DS1~DSN中之程式碼段所構成的,並且主機102係用以依序將複數韌體資料段DS1~DSN傳送至周邊裝置104,以更新周邊裝置104。另外,當一中斷事件在第M個韌體資料段DS1~DSN發生時,主機102更用以將第1個至第M-1個韌體資料段DS1~DSN中之第一模式參數改寫為第二模式參數,其中M小於N,並且M和N皆為大於1的整數。換言之,主機102會判斷是否有一中斷事件發生,並當中斷事件發生時,將已傳送至周邊裝置104的韌體資料段中之模式參數設定為第二模式參數,其中中斷事件可包括周邊裝置104斷電、周邊裝置104脫離主機 102、網路中斷等事件,但本發明不限於此。另外,主機102更用以在中斷事件後,將修改後之韌體資料段DS1~DSN重新傳送至周邊裝置104。舉例而言,主機102可在中斷事件發生後,偵測中斷事件是否結束以及與周邊裝置104的連結是否回復。當中斷事件結束以及與周邊裝置104的連結回復時,主機102將修改後之韌體資料段DS1~DSN重新傳送至周邊裝置104,但本發明不限於此。主機102亦可在中斷事件發生後,根據一繼續更新的命令,將修改後之韌體資料段DS1~DSN重新傳送至周邊裝置104。
周邊裝置104更包括一控制器1042、一暫存器1044以及一記憶體裝置1046。控制器1042用以自主機102依序接收用以構成一韌體之複數韌體資料段DS1~DSN,並暫存至暫存器1044中。另外,控制器1042更用以自暫存器1044中讀取所接收之韌體資料段DS1~DSN中之參數段,以將參數段中具有一第一模式參數之韌體資料段中之程式碼段儲存至記憶體裝置1046,並忽略參數段中具有一第二模式參數之韌體資料段中之程式碼段。暫存器1044用以暫存自主機102所接收之韌體資料段DS1~DSN。記憶體裝置1046係為一非易失性記憶體,用以儲存韌體以供控制器1042執行。
第2圖係本發明之韌體資料段之一種實施例的示意圖,其中每一韌體資料段DS1~DSN包括一程式碼段CS1~CSN以及一參數段PS1~PSN。在本實施例中,參數段PS1~PSN是位於韌體資料段DS1~DSN的起始位置。舉例而言,每一韌體資料段DS1~DSN的大小可為512Bytes,其中參數段PS1~PSN是在 512Bytes中起始的16Bytes上,但本發明不限於此。在其他實施例中,參數段PS1~PSN亦可位於韌體資料段DS1~DSN的尾端,或者其他既定之位置。值得注意的是,複數韌體資料段DS1~DSN中之程式碼段PS1~PSN係用以依序構成供控制器1042所執行的一韌體FW,如第3圖所示。參數段PS1~PSN系分別用以紀錄所屬之韌體資料段DS1~DSN的資訊。在一實施例中,參數段PS1~PSN分別包括一模式參數,模式參數可為一第一模式參數或者一第二模式參數,其中第一模式參數代表所相應之程式碼段尚未寫入記憶體裝置1046,並且第二模式參數代表所相應之程式碼段已寫入記憶體裝置1046,但本發明不限於此。在其他實施例中,參數段PS1~PSN更可分別包括一韌體版本參數、一索引、一控制器版本參數、一資料總量參數以及一校驗參數等,但本發明不限於此。
當參數段PS1~PSN更包括韌體版本參數、索引、控制器版本參數、資料總量參數以及校驗參數時,控制器1042更用以讀取所接收之韌體資料段DS1~DSN中之參數段,以獲得該等參數。詳細而言,索引係用以提供控制器1042確認韌體資料段DS1~DSN的順序,使得控制器1042可依照韌體資料段DS1~DSN的順序將韌體資料段DS1~DSN中之程式碼段儲存至記憶體裝置1046中所相應之位置,以在記憶體裝置1046中構成如第3圖所示之韌體FW。因此,在網路不穩定或者其他導致資料傳輸失序的狀態下,周邊裝置104仍可藉由所接收之韌體資料段DS1~DSN的索引,依序的儲存所接收之韌體資料段DS1~DSN。資料總量參數係用以提供控制器1042確認韌體FW 的長度,使得控制器1042可根據資料總量參數以及索引判斷韌體資料段DS1~DSN是否已全數接收完畢。控制器版本參數係用以提供控制器1042確認控制器1042之版本是否正確。換言之,控制器1042可根據控制器版本參數確認所接收之韌體資料段DS1~DSN的版本與控制器1042之版本是否相符。校驗參數係用以提供控制器1042校驗韌體資料段DS1~DSN中之程式碼段CS1~CSN。舉例而言,校驗參數可為一校驗和(checksum)參數,控制器1042可經由校驗和的演算法以及校驗和參數檢查所接收之校驗韌體資料段DS1~DSN中之程式碼段CS1~CSN是否正確。韌體版本參數係用以提供控制器1042確認韌體FW之版本是否正確。
又另一實施例中,模式參數可為一第一模式參數、一第二模式參數或者一第三模式參數,其中第一模式參數代表所相應之程式碼段尚未寫入記憶體裝置1046,第二模式參數代表所相應之程式碼段已寫入記憶體裝置1046,並且第三模式參數用以致使控制器1042自行判斷是否寫入所相應之程式碼段,但本發明不限於此。值得注意的是,在此實施例中,控制器1042更用以根據所接收之韌體資料段之參數段中所具有的一第三模式參數,判斷是否需要將所接收之韌體資料段之程式碼段儲存至記憶體裝置1046。舉例而言,控制器1042可在接收到具有第三模式參數之韌體資料段後,根據所接收之韌體資料段中之參數段的索引,判斷所接收之韌體資料段在記憶體裝置1046中之位址,並檢查該位址是否已寫入程式碼段。當該位址已寫入程式碼段時,控制器1042忽略(不儲存)所接收之韌體 資料段的程式碼段。當該位址未寫入程式碼段時,控制器1042將所接收之韌體資料段的程式碼段寫入該位址,但本發明不限於此。
第4圖係本發明之韌體下載方法之一種實施例之流程圖。韌體下載方法適用於第1圖所示之電子裝置100,用以根據一命令更新周邊裝置104之韌體。流程開始於步驟S400。
在步驟S400中,主機102依序傳送複數韌體資料段DS1~DSN至周邊裝置104,其中N個韌體資料段DS1~DSN用以構成一韌體FW,如第3圖所示。舉例而言,主機102係依照韌體資料段DS1~DSN用以構成韌體FW的順序,依序將第一韌體資料段DS1、第二韌體資料段DS2、第三韌體資料段DS3...、第N韌體資料段DSN傳送至周邊裝置104。值得注意的是,在步驟S400中,主機102每傳送完一個韌體資料段,流程即進行至步驟S402。另外,在初始條件中(即韌體資料段DS1~DSN第一次被傳送至周邊裝置104),主機102傳送至周邊裝置104的韌體資料段DS1~DSN所具有之模式參數係為一第一模式參數,用以代表韌體資料段DS1~DSN並未被寫入周邊裝置104之記憶體裝置1046中。然而,韌體資料段DS1~DSN所具有之模式參數可由主機102改寫。舉例而言,在步驟S400中,主機102將第一韌體資料段DS1傳送至周邊裝置104。在初始條件中,主機102傳送至周邊裝置104的第一韌體資料段DS1所具有之一模式參數係為一第一模式參數,用以代表第一韌體資料段DS1並未被寫入周邊裝置104中之記憶體裝置1046中。當第一韌體資料段DS1已被寫入周邊裝置104中之記憶體裝置1046時,主機102會將第一韌 體資料段DS1所具有之模式參數改寫為一第二模式參數,再將具有第二模式參數之第一韌體資料段DS1傳送至周邊裝置104。值得注意的是,主機102可在中斷事件發生後,偵測中斷事件是否結束以及與周邊裝置104的連結是否回復。當中斷事件結束以及與周邊裝置104的連結回復時,主機102再將修改後之韌體資料段DS1~DSN重新傳送至周邊裝置104,但本發明不限於此。主機102亦可在中斷事件發生後,根據一繼續更新的命令,將修改後之韌體資料段DS1~DSN重新傳送至周邊裝置104。
接著,在步驟S402中,周邊裝置104先將所接收之韌體資料段暫存於一暫存器1044中,並且藉由控制器1042讀取暫存器1044中所儲存之韌體資料段的參數段,以判斷所接收之韌體資料段的模式參數係為一第一模式參數或者一第二模式參數。當所接收之韌體資料段的模式參數係為一第一模式參數,流程進行至步驟S404。當所接收之韌體資料段的模式參數係為第二模式參數,流程回到步驟S400,主機102繼續傳送接續的韌體資料段至周邊裝置104。換言之,當所接收之韌體資料段的模式參數係為第二模式參數時,控制器1042忽略具有第二模式參數之韌體資料段,並且不儲存具有第二模式參數之程式碼段。舉例而言,周邊裝置104先將所接收之第一韌體資料段DS1暫存於一暫存器1044中,並讀取所接收之第一韌體資料段DS1的參數段PS1,以判斷所接收之第一韌體資料段DS1的模式參數係為一第一模式參數或者一第二模式參數。當所接收之第一韌體資料段DS1的模式參數係為一第一模式參數,流程進 行至步驟S404。當所接收之第一韌體資料段DS1的模式參數係為一第二模式參數,流程回到步驟S400,主機102繼續傳送接續的第二韌體資料段DS2至周邊裝置104。換言之,當第一韌體資料段DS1的模式參數係為第二模式參數時,控制器1042忽略具有第二模式參數的第一韌體資料段DS1,並且不儲存具有第二模式參數之第一韌體資料段DS1的程式碼段CS1。
在步驟S404中,周邊裝置104之控制器1042將具有第一模式參數之韌體資料段中之程式碼段,依序儲存至記憶體裝置1046,以合併韌體資料段DS1~DSN中之程式碼段CS1~CSN並構成韌體FW。舉例而言,周邊裝置104之控制器1042將具有第一模式參數之第一韌體資料段DS1中之程式碼段CS1,儲存至一第一位址,其中第一位址是韌體FW的起始位址。另外,周邊裝置104之控制器1042將具有第一模式參數之第二韌體資料段DS2中之程式碼段CS2,儲存至一第二位址,其中第二位址是接續於程式碼段CS1後之位址,但本發明不限於此。
在步驟S406中,主機102判斷是否有一中斷事件發生,其中中斷事件可包括周邊裝置104斷電、周邊裝置104脫離主機102、網路中斷等事件,但本發明不限於此。主機102可藉由與周邊裝置104的連結或者其他機制判斷是否有中斷事件發生,本發明不限於此。當有中斷事件發生時,流程進行至步驟S408,否則,流程回到步驟S400,主機102繼續傳送接續的韌體資料段至周邊裝置104。
在步驟S408中,主機102將已傳送至周邊裝置104被寫入之韌體資料段中之模式參數,改寫為第二模式參數。舉 例而言,當依序傳送韌體中之複數韌體資料段DS1~DSN至周邊裝置104的過程在第M個韌體資料段DS1~DSN被中斷時,主機102將第1個至第M-1個韌體資料段DS1~DSN中之第一模式參數改寫為第二模式參數,其中M小於N,並且M以及N為正整數。值得注意的是,當步驟S408完成後,主機102偵測中斷事件是否結束以及與周邊裝置104的連結是否回復,或者判斷是否接收到一繼續更新的命令。當中斷事件結束以及與周邊裝置104的連結回復或者接收到一繼續更新的命令時,流程接著回到步驟S400,主機102在步驟S400中,重新依序傳送韌體資料段DS1~DSN至周邊裝置104。換言之,在步驟S408完成後,主機102重新由第一韌體資料段DS1開始,依序傳送韌體資料段至周邊裝置104,其中重新傳送之第1個至第M-1個韌體資料段DS1~DSN具有第二模式參數,並且重新傳送之第M個至第N個韌體資料段DS1~DSN具有第一模式參數。
第5圖係本發明之韌體下載方法之另一種實施例之流程圖。韌體下載方法適用於第1圖所示之電子裝置100,用以根據一命令更新周邊裝置104之韌體。流程開始於步驟S500。值得注意的是,在本實施例中,參數段PS1~PSN更可分別包括一韌體版本參數、一索引、一控制器版本參數、一資料總量參數以及一校驗參數等,但本發明不限於此。
在步驟S500中,周邊裝置104自主機102接收複數韌體資料段DS1~DSN,其中N個韌體資料段DS1~DSN用以構成一韌體FW,如第3圖所示。舉例而言,周邊裝置104自主機102接收第一韌體資料段DS1、第二韌體資料段DS2、第三韌體資 料段DS3等等。值得注意的是,在步驟S500中,周邊裝置104每接收到一個韌體資料段,流程即進行至步驟S502。
接著,在步驟S502中,周邊裝置104先將所接收之韌體資料段暫存於一暫存器1044中。
接著,在步驟S504中,控制器1042讀取參數段中之控制器版本參數,並根據參數段中之控制器版本參數,判斷控制器1042之版本是否正確。換言之,控制器1042可根據控制器版本參數確認所接收之韌體資料段的版本與控制器1042之版本是否相符。當控制器版本正確時,流程進行至步驟S506,否則,流程結束於步驟S504,控制器1042停止更新周邊裝置104。
在步驟S506中,控制器1042讀取參數段中之校驗參數,並根據參數段中之校驗參數,校驗所接收之韌體資料段中之程式碼段是否正確。舉例而言,校驗參數可為一校驗和(checksum)參數,控制器1042可經由校驗和的演算法以及校驗和參數檢查所接收之校驗韌體資料段中之程式碼段是否正確。當程式碼段正確時,流程進行至步驟S508,否則,流程結束於步驟S506,控制器1042停止更新周邊裝置104。
在步驟S508中,控制器1042讀取參數段中之模式參數,並根據參數段中之模式參數,判斷所接收之韌體資料段的模式參數係為一第一模式參數或者一第二模式參數。當所接收之韌體資料段的模式參數係為第一模式參數,流程進行至步驟S510。當所接收之韌體資料段的模式參數係為第二模式參數,流程進行至步驟S518。
在步驟S510中,控制器1042讀取參數段中之韌體版本參數,並根據參數段中之韌體版本參數,確認所接收之韌體資料段所相應之韌體FW之版本是否正確。當韌體版本正確時,流程進行至步驟S512,否則,流程結束於步驟S510,控制器1042停止更新周邊裝置104。
在步驟S512中,控制器1042讀取參數段中之索引以及資料總量參數,其中控制器1042根據資料總量參數得知韌體FW的長度,並且根據參數段中之索引判斷所接收之韌體資料段相應的位址。舉例而言,控制器1042可根據索引得知目前所接收之韌體資料段的順序,並根據韌體資料段的順序以及程式碼段的長度,計算出所接收之韌體資料段的位址。因此,控制器1042可依照韌體資料段DS1~DSN的位址,依序地將韌體資料段DS1~DSN中之程式碼段儲存至記憶體裝置1046中所相應之位置,以在記憶體裝置1046中構成如第3圖所示之韌體FW。值得注意的是,控制器1042可根據資料總量參數以及索引判斷所接收之韌體資料段是否為最後一個韌體資料段DSN。
在步驟S514中,控制器1042依照在步驟S512中所獲得的位址,將所接收之韌體資料段的程式碼段儲存至記憶體裝置1046。
接著,在步驟S516中,控制器1042回報主機102,以通知主機102資料寫入的狀況,但本發明不限於此。在其他實施例中,步驟S516可被省略。
在步驟S518中,控制器1042讀取參數段中之韌體版本參數,並根據參數段中之韌體版本參數,確認所接收之韌 體資料段所相應之韌體FW之版本是否正確。當韌體版本正確時,流程進行至步驟S520,否則,流程結束於步驟S518,控制器1042停止更新周邊裝置104。
在步驟S520中,控制器1042讀取參數段中之索引以及資料總量參數,其中控制器1042根據資料總量參數得知韌體FW的長度,並且根據參數段中之索引判斷所接收之韌體資料段相應的位址。
在步驟S522中,控制器1042判斷在步驟S520中所獲得的位址上是否已寫入程式碼段。當位址上已被寫入程式碼段,流程進行至步驟S526。換言之,在步驟S522中,控制器1042判斷位址上是否有資料,以確定模式參數為第二模式參數的韌體資料段中的程式碼段是否已寫入記憶體裝置1046,並在確認程式碼段已寫入記憶體裝置1046後,忽略所接收之韌體資料段,並且不儲存所接收之韌體資料段中的程式碼段。
在步驟S524中,控制器1042依照在步驟S520中所獲得的位址,將所接收之韌體資料段的程式碼段儲存至記憶體裝置1046。
接著,在步驟S526中,控制器1042回報主機102,以通知主機102資料寫入的狀況,但本發明不限於此。在其他實施例中,步驟S526可被省略。又另一實施例中,步驟S518~S526皆可被省略。換言之,當控制器1042判斷模式參數為第二模式參數後,直接忽略所接收之韌體資料段,並回到步驟S500,以繼續接收並處理下一個韌體資料段。
第6圖係本發明之韌體下載方法之另一種實施例 之流程圖。韌體下載方法適用於第1圖所示之電子裝置100,用以根據一命令更新周邊裝置104之韌體。在本實施例中,模式參數更包括一第三模式參數。流程開始於步驟S600。值得注意的是步驟S600~S606、S610~S626相似於第5圖所示之步驟S500~S506、S510~S526,故相關說明請參考第5圖,在此不再贅述。
在步驟S608中,控制器1042讀取參數段中之模式參數,並根據參數段中之模式參數,判斷所接收之韌體資料段的模式參數係為一第一模式參數、一第二模式參數或者一第三模式參數。當所接收之韌體資料段的模式參數係為第一模式參數,流程進行至步驟S610。當所接收之韌體資料段的模式參數係為第二模式參數,流程進行至步驟S618。當所接收之韌體資料段的模式參數係為第三模式參數,流程進行至步驟S628。
在步驟S628中,控制器1042讀取參數段中之韌體版本參數,並根據參數段中之韌體版本參數,確認所接收之韌體資料段所相應之韌體FW之版本是否正確。當韌體版本正確時,流程進行至步驟S630,否則,流程結束於步驟S528,控制器1042停止更新周邊裝置104。
在步驟S630中,控制器1042讀取參數段中之索引以及資料總量參數,其中控制器1042根據資料總量參數得知韌體FW的長度,並且根據參數段中之索引判斷所接收之韌體資料段相應的位址。
在步驟S632中,控制器1042自行判斷所接收之韌體資料段是否需要寫入記憶體裝置1046中。控制器1042判斷所 接收之韌體資料段需要寫入記憶體裝置1046時,流程進行至步驟S634,否則,流程進行至步驟S636。舉例而言,控制器1042可根據周邊裝置104的操作狀態或者資料寫入狀態決定是否寫入所接收之韌體資料段。
在步驟S634中,控制器1042依照在步驟S530中所獲得的位址,將所接收之韌體資料段的程式碼段儲存至記憶體裝置1046。
接著,在步驟S636中,控制器1042回報主機102,以通知主機102資料寫入的狀況,但本發明不限於此。在其他實施例中,步驟S636可被省略。
由上述可知,本發明所提供之電子裝置100以及韌體下載方法可在韌體更新的過程中被中斷。在另一實施例中,本發明所提供之電子裝置100以及韌體下載方法,更可判斷所接收之韌體資料段的順序,故可在傳送順序出錯時,仍可成功地下載韌體。
本發明之方法,或特定型態或其部份,可以以程式碼的型態存在。程式碼可儲存於實體媒體,如軟碟、光碟片、硬碟、或是任何其他機器可讀取(如電腦可讀取)儲存媒體,亦或不限於外在形式之電腦程式產品,其中,當程式碼被機器,如電腦載入且執行時,此機器變成用以參與本發明之裝置。程式碼也可透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態進行傳送,其中,當程式碼被機器,如電腦接收、載入且執行時,此機器變成用以參與本發明之裝置。當在一般用途處理單元實作時,程式碼結合處理單元提供一操作類似於應 用特定邏輯電路之獨特裝置。
惟以上所述者,僅為本發明之較佳實施例而已,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利範圍及發明說明內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。另外本發明的任一實施例或申請專利範圍不須達成本發明所揭露之全部目的或優點或特點。此外,摘要部分和標題僅是用來輔助專利文件搜尋之用,並非用來限制本發明之權利範圍。
100‧‧‧電子裝置
102‧‧‧主機
104‧‧‧周邊裝置
1042‧‧‧控制器
1044‧‧‧暫存器
1046‧‧‧記憶體裝置
DS1~DSN‧‧‧韌體資料段

Claims (14)

  1. 一種韌體下載方法,適用於一主機以及一周邊裝置,其中上述周邊裝置包括一記憶體裝置以及一控制器,韌體下載方法包括:自上述主機傳送一第一韌體資料段至上述周邊裝置,其中上述第一韌體資料段具有一第一模式參數;以及在上述記憶體裝置發生一中斷事件後,重新自上述主機傳送上述第一韌體資料段至上述周邊裝置,其中重新傳送之上述第一韌體資料段之一第一部分具有上述第一模式參數,並且上述第一韌體資料段之上述第一部分外剩餘的一第二部分具有一第二模式參數。
  2. 根據申請專利範圍第1項之韌體下載方法,更包括:藉由上述控制器讀取所接收之上述第一韌體資料段中之參數段,其中上述第一韌體資料段中之參數段包括上述第一模式參數或者上述第二模式參數;將具有上述第一模式參數之上述第一韌體資料段中之程式碼段,儲存至上述記憶體裝置;以及忽略具有上述第二模式參數之上述第一韌體資料段中之程式碼段。
  3. 根據申請專利範圍第1項之韌體下載方法,其中上述第一韌體資料段為複數韌體資料段中之一者,每一上述韌體資料段包括一程式碼段以及一參數段,並且上述複數韌體資料段中之程式碼段係用以構成一韌體。
  4. 根據申請專利範圍第3項之韌體下載方法,其中每一上述韌 體資料段中之參數段包括一韌體版本參數、一模式參數、一索引、一控制器版本參數、一資料總量參數以及一校驗參數。
  5. 一種韌體下載方法,適用於一主機以及一周邊裝置,其中上述周邊裝置包括一記憶體裝置以及一控制器,韌體下載方法包括:自上述主機依序傳送複數韌體資料段至上述周邊裝置,其中N個上述韌體資料段用以構成一韌體,並且每一上述韌體資料段具有一第一模式參數;以及當上述依序傳送上述韌體中之上述複數韌體資料段至上述周邊裝置的過程在第M個上述韌體資料段被中斷後,重新依序傳送第1個至第N個上述韌體資料段至上述周邊裝置,其中N大於M,重新傳送之第1個至第M-1個上述韌體資料段具有一第二模式參數,並且重新傳送之第M個至第N個上述韌體資料段具有上述第一模式參數。
  6. 根據申請專利範圍第5項之韌體下載方法,更包括:藉由上述控制器讀取所接收之上述韌體資料段中之參數段,其中上述韌體資料段中之參數段包括上述第一模式參數或者上述第二模式參數;將具有上述第一模式參數之上述韌體資料段中之程式碼段,依序儲存至上述記憶體裝置;以及忽略具有上述第二模式參數之上述韌體資料段中之程式碼段。
  7. 根據申請專利範圍第5項之韌體下載方法,更包括: 當上述依序傳送上述韌體中之上述複數韌體資料段至上述周邊裝置的過程在第M個上述韌體資料段被中斷時,藉由上述主機,將第1個至第M-1個上述韌體資料段中之上述第一模式參數改寫為上述第二模式參數。
  8. 一種可更新韌體之電子裝置,包括:一記憶體裝置;以及一控制器,用以自一主機依序接收用以構成一韌體之複數韌體資料段,讀取所接收之上述韌體資料段中之參數段,以將參數段中具有一第一模式參數之上述韌體資料段中之程式碼段儲存至上述記憶體裝置,並忽略參數段中具有一第二模式參數之上述韌體資料段中之程式碼段。
  9. 根據申請專利範圍第8項之可更新韌體之電子裝置,其中上述韌體依序係由上述韌體資料段中之程式碼段所構成。
  10. 根據申請專利範圍第8項之可更新韌體之電子裝置,其中上述控制器更用以讀取所接收之上述韌體資料段中之參數段,以根據參數段中之一索引,確認上述韌體資料段的順序,並依照上述韌體資料段的順序將上述韌體資料段中之程式碼段儲存至上述記憶體裝置中所相應之位置。
  11. 根據申請專利範圍第8項之可更新韌體之電子裝置,其中上述控制器更用以讀取所接收之上述韌體資料段中之參數段,以根據參數段中之一資料總量參數,確認上述韌體的長度,並根據上述資料總量參數以及上述索引判斷上述韌體資料段是否已接收完畢。
  12. 根據申請專利範圍第8項之可更新韌體之電子裝置,其中上 述控制器更用以讀取所接收之上述韌體資料段中之參數段,以根據所接收之上述韌體資料段之參數段中所具有的一第三模式參數,判斷是否需要將所接收之上述韌體資料段之程式碼段儲存至上述記憶體裝置。
  13. 根據申請專利範圍第8項之可更新韌體之電子裝置,其中上述控制器更用以讀取所接收之上述韌體資料段中之參數段,以根據參數段中之一控制器版本參數確認上述控制器之版本是否正確,根據參數段中之一校驗參數校驗上述韌體資料段中之程式碼段,並根據參數段中之一韌體版本參數確認上述韌體之版本是否正確。
  14. 根據申請專利範圍第8項之可更新韌體之電子裝置,其中N個上述韌體資料段中之程式碼段用以構成上述韌體,當一中斷事件在第M個上述韌體資料段發生時,上述主機更用以將第1個至第M-1個上述韌體資料段中之上述第一模式參數改寫為上述第二模式參數,其中M小於N。
TW103140938A 2014-11-26 2014-11-26 可更新韌體之電子裝置及其韌體下載方法 TWI598816B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
TW103140938A TWI598816B (zh) 2014-11-26 2014-11-26 可更新韌體之電子裝置及其韌體下載方法
CN201410833579.XA CN105630533B (zh) 2014-11-26 2014-12-29 可更新固件的电子装置及其固件下载方法
US14/711,513 US9766880B2 (en) 2014-11-26 2015-05-13 Electronic device and method for firmware updating thereof
US15/661,800 US9846578B2 (en) 2014-11-26 2017-07-27 Electronic device and method for firmware updating thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW103140938A TWI598816B (zh) 2014-11-26 2014-11-26 可更新韌體之電子裝置及其韌體下載方法

Publications (2)

Publication Number Publication Date
TW201619821A TW201619821A (zh) 2016-06-01
TWI598816B true TWI598816B (zh) 2017-09-11

Family

ID=56010268

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103140938A TWI598816B (zh) 2014-11-26 2014-11-26 可更新韌體之電子裝置及其韌體下載方法

Country Status (3)

Country Link
US (2) US9766880B2 (zh)
CN (1) CN105630533B (zh)
TW (1) TWI598816B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI760036B (zh) * 2020-12-30 2022-04-01 技嘉科技股份有限公司 透過http/https的伺服器韌體的資料傳輸方法及伺服器

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452322B2 (en) * 2015-07-15 2019-10-22 Ricoh Company, Ltd. Information processing device, information processing system, and computer program product
US9940123B1 (en) * 2015-12-29 2018-04-10 Amazon Technologies, Inc. Updating device code through a bus
TWI700627B (zh) 2017-05-23 2020-08-01 慧榮科技股份有限公司 認證韌體資料之資料儲存裝置與資料儲存方法
CN108279920A (zh) * 2018-01-22 2018-07-13 郑州云海信息技术有限公司 一种断电情况下无线升级固件的方法及系统
CN108733517A (zh) * 2018-06-05 2018-11-02 深圳忆联信息系统有限公司 Ssd固件升级保护方法及装置
TWI687790B (zh) * 2018-06-25 2020-03-11 緯創資通股份有限公司 可偵測熱插拔次數之電子系統
CN111538513B (zh) * 2020-04-16 2021-08-27 深圳比特微电子科技有限公司 一种虚拟货币矿机电源的批量固件更新方法和系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63227146A (ja) * 1987-03-16 1988-09-21 Nec Corp ポ−リング方式における送信ブロツク数制御方式
JPH10269109A (ja) * 1997-03-21 1998-10-09 Mitsubishi Electric Corp マイクロコンピュータ
AU6775600A (en) 1999-08-16 2001-03-13 General Instrument Corporation Method and system for automatically purging code objects being updated by download
CN101494830A (zh) * 2008-01-25 2009-07-29 北京美科互动科技有限公司 移动数据传输方法及系统以及在新闻采访中的应用
CN101291195B (zh) * 2008-05-23 2011-01-19 中兴通讯股份有限公司 实现断点续传的文件下载的方法、系统及终端
TW201102924A (en) 2009-07-03 2011-01-16 Inventec Appliances Corp Embedded electronic device and method for updating firmware thereof
EP2282435B1 (en) * 2009-07-30 2014-12-31 STMicroelectronics Srl Signals communication apparatus
US20120117365A1 (en) 2010-11-08 2012-05-10 Delta Electronics (Thailand) Public Co., Ltd. Firmware update method and system for micro-controller unit in power supply unit
CN102495906A (zh) * 2011-12-23 2012-06-13 天津神舟通用数据技术有限公司 一种实现断点续传的增量式数据迁移方法
US9647689B2 (en) * 2015-01-15 2017-05-09 Texas Instruments Incorporated Robust connection for low-energy wireless networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI760036B (zh) * 2020-12-30 2022-04-01 技嘉科技股份有限公司 透過http/https的伺服器韌體的資料傳輸方法及伺服器
US11375000B1 (en) 2020-12-30 2022-06-28 Giga-Byte Technology Co., Ltd. Data transmission method and device of server firmware via HTTP/HTTPS

Also Published As

Publication number Publication date
CN105630533A (zh) 2016-06-01
US20160147527A1 (en) 2016-05-26
US20170322798A1 (en) 2017-11-09
US9766880B2 (en) 2017-09-19
TW201619821A (zh) 2016-06-01
CN105630533B (zh) 2019-11-05
US9846578B2 (en) 2017-12-19

Similar Documents

Publication Publication Date Title
TWI598816B (zh) 可更新韌體之電子裝置及其韌體下載方法
US9513900B2 (en) Peripheral device and method for updating firmware thereof
JP6568947B2 (ja) 車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア
US8539471B2 (en) Updating firmware of an electronic device
CN105094903A (zh) 对固件进行升级的方法及装置
US20150127882A1 (en) Read operation prior to retrieval of scatter gather list
TW200900925A (en) Remove-on-delete technologies for solid state drive optimization
TWI396076B (zh) 無線終端機、無線終端機之非揮發性記憶體及診斷資訊之故障安全保存方法
CN102934089B (zh) 针对文件的错误检测
CN111813428A (zh) 终端固件的升级方法、装置、电子设备及存储介质
US20120210116A1 (en) Method and apparatus for booting from a flash memory
CN102365644B (zh) 用于保护具有磨损均衡的存储设备上的敏感数据的方法
KR20120109800A (ko) Fota 기반의 데이터 갱신 방법 및 이를 지원하는 휴대 단말기
CN111752583A (zh) 固件升级方法、装置、电子设备和计算机可读存储介质
JP2006085534A (ja) 情報処理装置、情報処理装置のソフトウェア更新方法、プログラム
US10732887B2 (en) Cable modem and operating method thereof
US9443604B2 (en) Electronic device and data-management method thereof
TW201913391A (zh) 快閃記憶體裝置的重新啟動方法以及使用該方法的裝置
TWI489390B (zh) 電子裝置及其系統更新方法
JP2010079382A (ja) ソフトウエア更新方法
JP5158883B2 (ja) ファームウェア更新方法及びファームウェア更新装置
TWI260539B (en) Firmware updating system of mobile communication device and method thereof
TWI812534B (zh) 資料儲存裝置與韌體更新方法
TWI814634B (zh) 資料儲存裝置與韌體更新方法
JP5981477B2 (ja) フラッシュメモリ制御装置、フラッシュメモリ内蔵機器、フラッシュメモリ制御方法、及びそのためのプログラム