專利名稱:WinCE映像文件自修改方法
WinCE映像文件自修改方法
技術領域:
本發(fā)明提供一種WinCE映像文件修改方法,尤指一種WinCE映像文件自修改方法。背景技術:
目前嵌入式設備多使用的是WinCE系統(tǒng), 一般來講,WinCE的映像(image)是分區(qū) 域的,image生成工具會根據配置文件把各個模塊以某種方式放在相應的區(qū)域里,其中操作 系統(tǒng)(OS)核心部分劃分到ROM區(qū)。還有一部分是按需加載的,可以存放在Nand Flash等 介質的Binfs (Bin文件系統(tǒng)驅動)分區(qū)里,在需要時加載器通過Binfs加載這部分里的模 塊到RAM上,以達到節(jié)省RAM縮短OS啟動時間的目的,該部分往往占整個image的相當大 一部分。 當前的WinCE底層開發(fā)者在調試自己的驅動時經常需要重新建立image,然后用 專門的image更新工具把整個image固化到設備中這是一個繁瑣耗時的過程,使開發(fā)者花 很多的時間在無關的事情上,降低開發(fā)效率;同時,采用WinCE的OEM在需要對已經進入市 場的設備做image更新時往往需要把整個image都更新,這并不是一個靈活的方式在很多 時候會帶來不便,間接的帶來維護成本的增加。 有鑒于此,實有必要提供一種WinCE映像文件自修改方法,利用該方法,WinCE底 層開發(fā)者可以在系統(tǒng)里直接用單個的文件替換映像里原來的文件,然后冷啟動后即可,替 換文件可以是開發(fā)者單獨建立出來的,開發(fā)者不用重新建立整個映像,然后再更新整個映 像以使自己的更改生效;代工廠商在更新客戶的驅動或某些其它組件時只用單獨發(fā)布該文 件即可。
發(fā)明內容
為達上述的目的,本發(fā)明提供一種WinCE映像文件自修改方法,利用該方法, WinCE底層開發(fā)者可以在系統(tǒng)里直接用單個的文件替換映像里原來的文件,然后冷啟動后 即可,替換文件可以是開發(fā)者單獨建立出來的,開發(fā)者不用重新建立整個映像,然后再更新 整個映像以使自己的更改生效;代工廠商在更新客戶的驅動或某些其它組件時只用單獨發(fā) 布該文件即可。 本發(fā)明的WinCE映像文件自修改方法,該方法用于一嵌入式系統(tǒng),該嵌入式系統(tǒng) 包括一含有Binfs分區(qū)的存儲設備,該方法包含下列步驟 在Binfs分區(qū)里保留一段空余區(qū)域作為保留區(qū)域,用以作為映像欲修改的模塊或 文件的存儲區(qū)域,并對該保留區(qū)域做幾個控制函數用于對該保留區(qū)域做讀寫操作
對該保留區(qū)域采用記錄的模式管理,把欲修改的模塊或文件放在數據區(qū),而在記 錄區(qū)記錄該欲修改的模塊或文件的相關信息; Binfs文件系統(tǒng)驅動加載后檢查該Binfs分區(qū)里的映像,將所有模塊和文件以鏈 表的形式記錄下來; Binfs文件系統(tǒng)驅動在Binfs創(chuàng)建了該鏈表后對上述保留區(qū)域進行訪問處理訪問上述保留區(qū)域的上述記錄,對于該鏈表有與上述記錄中同名文件或模塊的節(jié)點,以該保 留區(qū)域內的該文件或模塊替換原來映像里的文件或模塊;對于上述記錄中具備而該鏈表中 沒有的而欲增加的文件或模塊的節(jié)點,在該鏈表中追加該節(jié)點,也即將該保留區(qū)域內該欲 增加的文件或模塊添加進去。 相較于現有技術,本發(fā)明的WinCE映像文件自修改方法,利用該方法,WinCE底層 開發(fā)者可以在系統(tǒng)里直接用單個的文件替換映像里原來的文件,然后冷啟動后即可,替換 文件可以是開發(fā)者單獨建立出來的,開發(fā)者不用重新建立整個映像,然后再更新整個映像 以使自己的更改生效;代工廠商在更新客戶的驅動或某些其它組件時只用單獨發(fā)布該文件 即可。 為對本發(fā)明的目的、構造特征及其功能有進一步的了解,茲配合附圖詳細說明如 下
圖1繪示為本發(fā)明的WinCE映像文件自修改方法一較佳實施例的方法流程圖。
具體實施方式
請參閱圖1 ,圖1繪示為本發(fā)明的WinCE映像文件自修改方法一較佳實施例的方法 流程圖。 于本實施例的WinCE映像文件自修改方法,該方法用于一嵌入式系統(tǒng),該嵌入式 系統(tǒng)包括一含有Binfs分區(qū)的存儲設備,該方法包含下列步驟 在Binfs分區(qū)里保留一段空余區(qū)域作為保留區(qū)域,用以作為映像欲修改的模塊或 文件的存儲區(qū)域,并對該保留區(qū)域做幾個控制函數用于對該保留區(qū)域做讀寫操作(步驟
100); 對該保留區(qū)域采用記錄的模式管理,把欲修改的模塊或文件放在數據區(qū),而在記 錄區(qū)記錄該欲修改的模塊或文件的相關信息(步驟101); Binfs文件系統(tǒng)驅動加載后檢查該Binfs分區(qū)里的映像,將所有模塊和文件以鏈 表的形式記錄下來(步驟102); Binfs文件系統(tǒng)驅動在Binfs創(chuàng)建了該鏈表后對上述保留區(qū)域進行訪問處理訪 問上述保留區(qū)域的上述記錄,對于該鏈表有與上述記錄中同名文件或模塊的節(jié)點,以該保 留區(qū)域內的該文件或模塊替換原來映像里的文件或模塊;對于上述記錄中具備而該鏈表中 沒有的而欲增加的文件或模塊的節(jié)點,在該鏈表中追加該節(jié)點,也即將該保留區(qū)域內該欲 增加的文件或模塊添加進去(步驟103)。 其中,對于上述步驟之后還可包括步驟通過一更新機制并借由上述已經實現的 控制函數來訪問該Binfs分區(qū)里的上述保留區(qū)域。該更新機制包括把欲修改的模塊或文件 放到特定位置,并通過一應用程序將該特定位置的內容寫入上述保留區(qū)域,當然,此處還可 以加上限制條件,例如為對寫入內容大小的限制、對寫入內容格式的限制、以及對寫入內 容為特殊目的的限制。 其中,上述步驟100中的該控制函數可以為KernelLibIoControl(為系統(tǒng)內核提 供一種通用的操作的函數)。
其中,上述步驟103中對上述保留區(qū)域進行訪問處理的過程,還包括步驟將該節(jié) 點在該Binfs分區(qū)里的偏移地址更改為保留區(qū)域的文件實際的偏移地址,而上述步驟101 中的該相關信息包括偏移地址。 其中,上述步驟103中對上述保留區(qū)域進行訪問處理的過程,還包括步驟把上述 欲修改的文件或模塊的FILE_ATTRIBUTE_ROMMODULE屬性去掉,使加載器采用解析方式加 載。 其中,上述鏈表記錄有上述文件或模塊的真實大小。 相較于現有技術,本發(fā)明的WinCE映像文件自修改方法,利用該方法,WinCE底層 開發(fā)者可以在系統(tǒng)里直接用單個的文件替換映像里原來的文件,然后冷啟動后即可,替換 文件可以是開發(fā)者單獨建立出來的,開發(fā)者不用重新建立整個映像,然后再更新整個映像 以使自己的更改生效;代工廠商在更新客戶的驅動或某些其它組件時只用單獨發(fā)布該文件 即可。
權利要求
一種WinCE映像文件自修改方法,該方法用于一嵌入式系統(tǒng),該嵌入式系統(tǒng)包括一含有Binfs分區(qū)的存儲設備,其特征在于,該方法包含下列步驟在Binfs分區(qū)里保留一段空余區(qū)域作為保留區(qū)域,用以作為映像欲修改的模塊或文件的存儲區(qū)域,并對該保留區(qū)域做幾個控制函數用于對該保留區(qū)域做讀寫操作;對該保留區(qū)域采用記錄的模式管理,把欲修改的模塊或文件放在數據區(qū),而在記錄區(qū)記錄該欲修改的模塊或文件的相關信息;Binfs文件系統(tǒng)驅動加載后檢查該Binfs分區(qū)里的映像,將所有模塊和文件以鏈表的形式記錄下來;Binfs文件系統(tǒng)驅動在Binfs創(chuàng)建了該鏈表后對上述保留區(qū)域進行訪問處理訪問上述保留區(qū)域的上述記錄,對于該鏈表有與上述記錄中同名文件或模塊的節(jié)點,以該保留區(qū)域內的該文件或模塊替換原來映像里的文件或模塊;對于上述記錄中具備而該鏈表中沒有的而欲增加的文件或模塊的節(jié)點,在該鏈表中追加該節(jié)點,也即將該保留區(qū)域內該欲增加的文件或模塊添加進去。
2. 如權利要求1所述的WinCE映像文件自修改方法,其特征在于,對于上述步驟之后還 包括步驟通過一更新機制并借由上述已經實現的控制函數來訪問該Binfs分區(qū)里的上述 保留區(qū)域。
3. 如權利要求2所述的WinCE映像文件自修改方法,其特征在于,該更新機制包括把欲 修改的模塊或文件放到特定位置,并通過一應用程序將該特定位置的內容寫入上述保留區(qū) 域。
4. 如權利要求3所述的WinCE映像文件自修改方法,其特征在于,該通過一應用程序將 該特定位置的內容寫入上述保留區(qū)域的過程還具備限制條件,該限制條件為對寫入內容大 小的限制或對寫入內容格式的限制或對寫入內容為特殊目的的限制。
5. 如權利要求1、2、3或4所述的WinCE映像文件自修改方法,其特征在于,上述控制函 數為KernelLibIoControl。
6. 如權利要求1、2、3或4所述的WinCE映像文件自修改方法,其特征在于,上述步驟 Binfs文件系統(tǒng)驅動在Binfs創(chuàng)建了該鏈表后對上述保留區(qū)域進行訪問處理訪問上述保 留區(qū)域的上述記錄,對于該鏈表有與上述記錄中同名文件或模塊的節(jié)點,以該保留區(qū)域內 的該文件或模塊替換原來映像里的文件或模塊;對于上述記錄中具備而該鏈表中沒有的而 欲增加的文件或模塊的節(jié)點,在該鏈表中追加該節(jié)點,也即將該保留區(qū)域內該欲增加的文 件或模塊添加進去;其中,對上述保留區(qū)域進行訪問處理的過程,還包括步驟將該節(jié)點在 該Binfs分區(qū)里的偏移地址更改為保留區(qū)域的文件實際的偏移地址,而上述步驟對該保 留區(qū)域采用記錄的模式管理,把欲修改的模塊或文件放在數據區(qū),而在記錄區(qū)記錄該欲修 改的模塊或文件的相關信息,其中的該相關信息包括偏移地址。
7. 如權利要求1、2、3或4所述的WinCE映像文件自修改方法,其特征在于,上述步驟 Binfs文件系統(tǒng)驅動在Binfs創(chuàng)建了該鏈表后對上述保留區(qū)域進行訪問處理訪問上述保 留區(qū)域的上述記錄,對于該鏈表有與上述記錄中同名文件或模塊的節(jié)點,以該保留區(qū)域內 的該文件或模塊替換原來映像里的文件或模塊;對于上述記錄中具備而該鏈表中沒有的而 欲增加的文件或模塊的節(jié)點,在該鏈表中追加該節(jié)點,也即將該保留區(qū)域內該欲增加的文 件或模塊添加進去;上述步驟中對上述保留區(qū)域進行訪問處理的過程,還包括步驟把上述欲修改的文件或模塊的FILE_ATTRIBUTE_ROMMODULE屬性去掉,使加載器采用解析方式 加載。
8.如權利要求1 、2、3或4所述的WinCE映像文件自修改方法,其特征在于,上述鏈表記 錄有上述文件或模塊的真實大小。
全文摘要
本發(fā)明揭示一種WinCE映像文件自修改方法,該方法用于一嵌入式系統(tǒng),該嵌入式系統(tǒng)包括一含有Binfs分區(qū)的存儲設備,該方法包含在Binfs分區(qū)里保留一段空余區(qū)域作為保留區(qū)域,用以作為映像欲修改的模塊或文件的存儲區(qū)域,并對該保留區(qū)域做幾個控制函數用于對該保留區(qū)域做讀寫操作;對該保留區(qū)域采用記錄的模式管理,把欲修改的模塊或文件放在數據區(qū),而在記錄區(qū)記錄該欲修改的模塊或文件的相關信息;Binfs文件系統(tǒng)驅動加載后檢查該Binfs分區(qū)里的映像,將所有模塊和文件以鏈表的形式記錄下來;Binfs文件系統(tǒng)驅動在Binfs創(chuàng)建了該鏈表后對上述保留區(qū)域進行訪問處理。WinCE底層開發(fā)者可以在系統(tǒng)里直接用單個的文件替換映像里原來的文件,不用重新建立整個映像。
文檔編號G06F17/30GK101770468SQ20081020508
公開日2010年7月7日 申請日期2008年12月30日 優(yōu)先權日2008年12月30日
發(fā)明者程國凡 申請人:環(huán)達電腦(上海)有限公司