專利名稱::嵌入式系統(tǒng)中rom代碼的修改方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及嵌入式系統(tǒng)中固件代碼的修改和升級技術(shù),特別是涉及一種ROM代碼的修改方法。
背景技術(shù):
:嵌入式系統(tǒng)中固件(firmware)代碼的組成常常分為兩部分,一部分代碼編譯后被放進(jìn)ROM區(qū),另一部分代碼編譯后放進(jìn)RAM區(qū)。當(dāng)要對ROM區(qū)的代碼做某些修改時(打補(bǔ)丁),則必須把ROM區(qū)中要修改的代碼及相關(guān)代碼重新編譯放進(jìn)RAM區(qū)中。這種修改方法的缺點(diǎn)是,由于嵌入式系統(tǒng)中的RAM通常比較少,修改ROM時必然占用較多的RAM空間。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種嵌入式系統(tǒng)中ROM代碼的修改方法,它可以減少修改ROM時所使用的RAM空間。為解決上述技術(shù)問題,本發(fā)明的嵌入式系統(tǒng)中ROM代碼的修改方法是,在RAM區(qū)中構(gòu)造一個函數(shù)表,該函數(shù)表中的每一項(xiàng)都存放一個函數(shù)的地址,當(dāng)ROM區(qū)中代碼調(diào)用某個函數(shù)時,不是直接調(diào)用,而是通過函數(shù)表找到被調(diào)用函數(shù)的地址,然后再去調(diào)用它。采用本發(fā)明的方法,當(dāng)要修改ROM區(qū)的某個函數(shù)時,僅需把該函數(shù)提出放到RAM區(qū),同時把函數(shù)表中的地址改為新地址就可以了,無需把ROM區(qū)中所有調(diào)用該函數(shù)的函數(shù)都調(diào)出并進(jìn)行修改。下面結(jié)合附圖與具體實(shí)施方式對本發(fā)明作進(jìn)一步詳細(xì)的說明圖1是傳統(tǒng)的對ROM代碼的修改方法;圖2本發(fā)明所采用的對ROM代碼的修改方法。具體實(shí)施例方式嵌入式系統(tǒng)中的RAM通常比較少,本發(fā)明的目的是為了減少修改ROM代碼時使用的RAM空間。如圖1所示,設(shè)定,RAM的代碼區(qū)有主函數(shù)Main(),ROM代碼區(qū)有函數(shù)Func1(),F(xiàn)unc2(),F(xiàn)unc3()?,F(xiàn)在函數(shù)Func3()有問題,需要修改。傳統(tǒng)的做法是把修改后(打過補(bǔ)丁后)的Func3_patch()函數(shù)從ROM區(qū)提出放到RAM區(qū),并且把直接和間接調(diào)用Func3的函數(shù)Func1和Func2都從ROM區(qū)提出放到RAM區(qū)。這樣必然會占用很多RAM存儲空間,使本來就較少的RAM空間,不能發(fā)揮其應(yīng)有的資源作用。在本發(fā)明中,對ROM區(qū)中的函數(shù)調(diào)用方式進(jìn)行了改造,所采用的方法是,在RAM區(qū)中構(gòu)造一個函數(shù)表,這張函數(shù)表中的每一項(xiàng)都存放一個函數(shù)的地址。如圖2所示,設(shè)定,函數(shù)表Func_table中包含函數(shù)Func1,F(xiàn)unc2,F(xiàn)unc3,其對應(yīng)的下標(biāo)分別是0,1,2。調(diào)用函數(shù)Func1,F(xiàn)unc2,F(xiàn)unc3都是通過引用Func_table和相應(yīng)的下標(biāo)來完成。也就是說,對某個函數(shù)的調(diào)用,不是直接調(diào)用該函數(shù),而是通過函數(shù)表找到被調(diào)用函數(shù)的地址,然后再去調(diào)用它?,F(xiàn)在假如函數(shù)Func3有問題,需要修改,只需將要修改的函數(shù)Func3_patch提出放到RAM區(qū),同時把函數(shù)表Func_table中下標(biāo)2的地址改為新函數(shù)地址Func3_patch就可以了。無需把ROM區(qū)中所有直接和間接調(diào)用函數(shù)Func3的函數(shù)Func1和Func2都進(jìn)行修改并提到RAM區(qū)來。權(quán)利要求1.一種嵌入式系統(tǒng)中ROM代碼的修改方法,其特征在于在RAM區(qū)中構(gòu)造一個函數(shù)表,該函數(shù)表中的每一項(xiàng)都存放一個函數(shù)的地址,當(dāng)ROM區(qū)中代碼調(diào)用某個函數(shù)時,不直接調(diào)用該函數(shù),而是通過函數(shù)表找到被調(diào)用函數(shù)的地址,然后再去調(diào)用該函數(shù),并將函數(shù)表中的地址改為新地址。全文摘要本發(fā)明公開了一種嵌入式系統(tǒng)中ROM代碼的修改方法,在RAM區(qū)中構(gòu)造一個函數(shù)表,通過函數(shù)表找到被調(diào)用函數(shù)的地址,然后再去調(diào)用它。本發(fā)明可以減少修改ROM代碼時所使用的RAM空間。文檔編號G06F11/36GK1862510SQ20051002570公開日2006年11月15日申請日期2005年5月10日優(yōu)先權(quán)日2005年5月10日發(fā)明者姚晶晶,趙彤,毛宇斌,楊俠申請人:展訊通信(上海)有限公司