存儲裝置固件修補方法
2023-09-16 20:06:15 1
專利名稱:存儲裝置固件修補方法
技術領域:
本發明是將功能修補程序存儲於存儲裝置內可擦寫的存儲位置,藉以修正或更新固件內功能程序,達到本發明降低成本與簡易更新固件的目的。
背景技術:
在計算機處理的數據愈來愈複雜的現在,現有的容量小或不易攜帶的存儲裝置已不夠一般文件的存取使用,計算機設備商即尋找最新的可攜式又可重複讀寫的技術,這樣可攜式又要有大容量的裝置,還必須搭配一個方便且普遍實施的傳輸協議與接口。故一般市售的可攜式的存儲裝置就應運而生,如數碼攝像機/照相機所使用的存儲卡、方便可攜帶的U盤(USBdrive)或錄音筆等,幾乎都是使用快閃記憶體(flash memory)當作主體存儲裝置。
請參閱圖1所示現有的U盤結構(如中國臺灣專利555047),其中有U盤主體10、連接計算機通用串行總線(USB)接口的USB連接器14及其保護的蓋體12,而主體10更包括許多控制電路與存儲元件,如標示於圖中的內存基板16,用來承載一內存晶片15,另有控制基板18,用來承載此U盤的控制晶片(圖中未標示),控制晶片是控制U盤內存的讀出寫入的功能與信號傳遞,其中需要一些微程序代碼(micro code)來作為控制的指令,大多以成本較小的只讀存儲器或只能存儲一次的內存來存儲這些程序代碼,即所謂介於硬體與軟體間橋梁的固件(firmware),此固件一旦發生軟硬體兼容性或損毀的問題,將使整個裝置無法運作,屆時不是要更換晶片就是重新燒錄,對於各樣的成本或是消費者都沒有保障。
請參閱圖2所示現有技術晶片固件的動態修補方法(中國臺灣專利330291)的結構示意圖,此現有技術為了解決數位訊號處理晶片(DSP)或微處理器(MPU)的內建只讀存儲器無法進行修復或因部分損壞而需更換或丟棄的缺點,部分廠商會用較昂貴重新燒錄的方式或用快閃記憶體來代替只讀存儲器,此現有技術則提供一小量可擦寫的內存來修補原來只讀存儲器的缺陷。附圖標記中包含一晶片只讀存儲器24,其中有一錯誤模塊23,此例就是在裝置內設置或外加一小量的可擦寫內存20,此可擦寫內存20內規劃有一控制區21與一修補區22,修補區22中存放為了修補錯誤模塊23的一修補模塊221,控制區21則為定義晶片只讀存儲器24各程序與模塊的硬體地址,進一步通過控制區21指向修補區22與其中修補模塊221的地址。
上述結構在運作中,在晶片只讀存儲器24中找到其中的錯誤模塊23,則依照定義好的對應地址直接轉移至修補模塊221繼續執行。
雖然圖2所示的現有技術解決了只讀存儲器需要更換的問題,但仍增加了該可擦寫內存20的成本,並且不論原來只讀存儲器是否良好,都需在製作時內建或外加此一內存的成本。本發明鑑於在內存控制晶片中的固件程序的製作中會有難以避免的錯誤或在時間演變下所可能更新的問題,並考慮節省成本,通過存儲裝置內原來作為數據存儲的可擦寫內存部分容量來存放修補程序,並不需用額外的內存而達到修補或更新固件的目的。
發明內容
本發明為一種存儲裝置固件修補方法,其主要特徵是將一個或多個功能修補程序存儲於存儲裝置內可擦寫的存儲位置,藉以修正或更新固件內功能程序,達到本發明降低成本與簡易更新固件的目的。
該固件修補方法步驟如下初始化系統;檢測一個或多個存儲裝置的固件功能是否需要修補;選擇使用該固件功能;判斷該固件功能是否有修補程序;使用加載該存儲區塊對應於固件功能的修補程序。
圖1為現有技術的U盤結構;圖2為現有技術晶片固件的動態修補方法結構示意圖;圖3為本發明存儲裝置固件修補裝置示意圖;圖4為本發明存儲裝置固件修補程序加載存儲區塊流程圖;圖5為本發明存儲裝置固件修補方法的系統運作流程圖。
附圖標記說明10 主體12 蓋體14 USB連接器15 內存晶片16 內存基板18 控制基板20 可擦寫內存21 控制區22 修補區23 錯誤模塊24 模塊區221 修補模塊30 存儲裝置31 存儲區塊33 控制單元35 信號針腳311 修補程序331 微處理器333 固件具體實施方式
本發明是沿用現有的U盤或存儲卡的存儲卡(SD,CF,MS...etc.)架構,並利用其中的存儲裝置存儲修補程序,當裝置中的固件執行某功能時,發現需要修補(patch),本發明即使用存放於可擦寫的存儲區塊中的修補程序來達到目的,而並不需更換或重新燒錄原本的固件。
如圖3所示為本發明存儲裝置固件修補裝置示意圖,圖中存儲裝置30可大致區分為三部份,其一為存儲區塊31,為數據存儲的位置,即一可讀可寫的非揮發性內存(non-volatile),如現有的快閃記憶體(flash memory);另為一控制單元33,為控制此存儲裝置30的輸出輸入信號與數據傳遞,以及存儲區塊31中的數據存取功能,其中至少包括一數位訊號處理的微處理器331,與存儲微程序控制碼的固件333,此固件33中程序代碼是作為控制的指令,大多以成本較小的只讀存儲器或只能存儲一次的內存來存儲這些程序代碼;存儲裝置30一端電性連接多個信號針腳(pin)35,藉以連接計算機系統等設備的連接埠,所有程序指令與數據流都通過信號針腳35接口傳遞。
上述的存儲區塊31中,本發明在設計的時候即預先定義了部分連續或不連續的修補程序區塊311,其中由固件333中的為程序代碼定義多個標記(flag)以標示此修補程序區塊311的程序狀態,若固件333中功能程序需要修補或更新,則通過一燒錄程序將修補程序存儲在預先定義的位置,並將標記設為1(on),以告知系統,當需要某功能時,而此功能的標記為1,則以修補程序區塊311內的功能程序取代原本固件333內舊的程序。
圖4為本發明存儲裝置固件修補程序加載存儲區塊的流程說明圖。在存儲裝置的修補模式下步驟41當系統激活,有一系統初始化的動作,即將固件內的程序載入微處理器,準備好接收連接此存儲裝置的設備的控制信號與存儲數據存取的信息,更包括有定義該預先規劃的修補程序區塊地址的步驟;步驟42之後,檢測存儲裝置中的固件功能是否有更新的資料或是有損毀的情形而需要修補?步驟43若是,表示有需要修補,即利用該燒錄軟體針對需要修補的功能將修補的功能程序加載至存儲區塊內的修補程序區塊,也就是之前預先規劃的位置;步驟44判斷該修補程序是否正確?包括修補程序版本或兼容性是否正確?步驟45若為否,表示該修補程序損毀或是出現版本錯誤與兼容性的問題,即延用原固件內功能程序;步驟46若為是,將此加載的位置設立標記為1(on),此設立一個或多個標記記號的步驟,是為了定義存儲裝置的固件功能已由對應的修補程序取代;
通過上述步驟循環操作的修補步驟達到每一需要功能的修補。
步驟47若已不需修補,即修補結束。
圖5為本發明存儲裝置固件修補方法的系統運作流程圖,此存儲裝置至少包括存儲區塊與其中的修補程序區塊、控制單元內的微處理器與固件,其中該修補方法步驟包括有步驟51系統開啟後,即進行初始化,即固件中驅動程序(driver)加載至與此存儲裝置連接的計算機系統中的系統內存(system memory),通常為隨機存儲器(RAM),並初始化微處理器,進一步還包括有定義該預先規劃的修補程序區塊地址的步驟;步驟52再判斷是否為修補模式?步驟53若判斷為修補模式,即進入圖4所示的加載修補程序的步驟,再進入至步驟54依需要選擇使用系統中的功能;步驟54若為非,即進入系統運作模式,使用者選擇使用系統中的一功能;步驟55由固件中各功能所設立的標記(flag)為0(off)或1(on)判斷該功能是否有修補程序?步驟56若為是,表示該功能有修補程序,即使用載入該存儲區塊對應於固件功能的修補程序,並進行步驟58,將其對應的程序加載到與此存儲裝置連接的計算機系統的系統內存執行;步驟57若為否,即該功能沒有相對應的修補程序,則使用原先預載於該固件的固件功能程序;繼續進行步驟58,將該預載的功能程序加載到內存;步驟58依步驟56與57的情況,將存儲於修補程序區塊或固件中的功能程序加載至系統內存執行;之後,進入一選擇使用系統中功能的循環程序(loop)中。或是進一步繼續判斷是否使用其它固件功能,與判斷是否有修補程序的步驟。
本發明是通過存儲裝置內原本作為數據存儲的可擦寫內存部分容量來存放修補程序,並不需用額外的內存而達到修補或更新固件的目的。
綜上所述,本發明實為一不可多得的發明物品,極具產業上的實用性、新穎性及創造性,完全符合發明專利申請條件,故依法提出申請,敬請詳查並授予本案專利,以保障發明者權益。
但以上所述僅為本發明的較佳可行實施例,不是因此來局限本發明的專利範圍,故凡是運用本發明說明書及附圖內容所作出的等效結構變化,均同理包含於本發明的權利要求保護範圍內。
權利要求
1.一種存儲裝置固件修補方法,該存儲裝置至少包括一存儲區塊與其中的一修補程序區塊、一微處理器與一固件,其中該修補方法步驟包括有初始化系統,其中包括定義該修補程序區塊的地址;檢測是否為修補模式;選擇使用該固件功能;判斷該固件功能是否有修補程序;及使用加載該存儲區塊對應於固件功能的修補程序。
2.如權利要求1所述的存儲裝置固件修補方法,其特徵在於,所述的檢測是否為修補模式的步驟中,若為是,則進入加載該修補程序步驟,包括有加載該固件功能的修補程序於一預先規劃的修補程序區塊;及設立一個或多個標記(flag)記號,即定義該存儲裝置的固件功能已由對應的修補程序取代。
3.如權利要求1所述的存儲裝置固件修補方法,其特徵在於,所述的判斷該固件功能是否有修補程序的步驟,是根據所述的標記記號的設立來判斷。
4.如權利要求1所述的存儲裝置固件修補方法,其特徵在於,所述的判斷該固件功能是否有修補程序的步驟,若為否,則使用原先預載於該固件的固件功能程序。
5.如權利要求1所述的存儲裝置固件修補方法,其特徵在於,在所述的使用加載該存儲區塊對應於固件功能的修補程序之後的步驟進一步包括有加載該固件功能程序於一系統內存中執行;及判斷是否使用其它固件功能。
6.一種存儲裝置固件修補方法,其特徵在於,加載一修補程序於存儲區塊的修補方法步驟包括有初始化系統;檢測一個或多個存儲裝置的固件功能是否需要修補;加載該固件功能的修補程序於預先規劃的修補程序區塊;判斷該修補程序是否正確;及設立一個或多個標記(flag)記號。
7.如權利要求6所述的存儲裝置固件修補方法,其特徵在於,所述的初始化系統進一步包括有定義該預先規劃的修補程序區塊地址的步驟。
8.如權利要求6所述的存儲裝置固件修補方法,其特徵在於,所述的修補程序區塊為一存儲區塊的一部份。
9.如權利要求6所述的存儲裝置固件修補方法,其特徵在於,所述的設立一個或多個標記記號的步驟,是為了定義該存儲裝置的固件功能已由對應的修補程序取代。
10.如權利要求6所述的存儲裝置固件修補方法,其特徵在於,所述的判斷該修補程序是否正確的步驟中,若為否,表示該修補程序損毀或是出現版本錯誤與兼容性的問題,即延用原來的該固件內功能程序。
全文摘要
本發明為一種存儲裝置固件修補方法,是將一個或多個功能修補程序存儲於存儲裝置內可擦寫的存儲位置,藉以修正或更新固件(firmware)內功能程序,一旦需用到該功能時,可直接使用存儲於該存儲位置的程序,並不需要重新燒錄或置換整個固件,達到本發明降低成本與簡易更新固件的目的。
文檔編號G06F11/36GK1797362SQ200410060400
公開日2006年7月5日 申請日期2004年12月22日 優先權日2004年12月22日
發明者葉又熒, 吳信昌, 王基旆 申請人:迅傑科技股份有限公司