嵌入式系统中rom代码的修改方法

文档序号:6521736阅读:272来源:国知局

专利名称::嵌入式系统中rom代码的修改方法
技术领域
:本发明涉及嵌入式系统中固件代码的修改和升级技术,特别是涉及一种ROM代码的修改方法。
背景技术
:嵌入式系统中固件(firmware)代码的组成常常分为两部分,一部分代码编译后被放进ROM区,另一部分代码编译后放进RAM区。当要对ROM区的代码做某些修改时(打补丁),则必须把ROM区中要修改的代码及相关代码重新编译放进RAM区中。这种修改方法的缺点是,由于嵌入式系统中的RAM通常比较少,修改ROM时必然占用较多的RAM空间。
发明内容本发明要解决的技术问题是提供一种嵌入式系统中ROM代码的修改方法,它可以减少修改ROM时所使用的RAM空间。为解决上述技术问题,本发明的嵌入式系统中ROM代码的修改方法是,在RAM区中构造一个函数表,该函数表中的每一项都存放一个函数的地址,当ROM区中代码调用某个函数时,不是直接调用,而是通过函数表找到被调用函数的地址,然后再去调用它。采用本发明的方法,当要修改ROM区的某个函数时,仅需把该函数提出放到RAM区,同时把函数表中的地址改为新地址就可以了,无需把ROM区中所有调用该函数的函数都调出并进行修改。下面结合附图与具体实施方式对本发明作进一步详细的说明图1是传统的对ROM代码的修改方法;图2本发明所采用的对ROM代码的修改方法。具体实施例方式嵌入式系统中的RAM通常比较少,本发明的目的是为了减少修改ROM代码时使用的RAM空间。如图1所示,设定,RAM的代码区有主函数Main(),ROM代码区有函数Func1(),Func2(),Func3()。现在函数Func3()有问题,需要修改。传统的做法是把修改后(打过补丁后)的Func3_patch()函数从ROM区提出放到RAM区,并且把直接和间接调用Func3的函数Func1和Func2都从ROM区提出放到RAM区。这样必然会占用很多RAM存储空间,使本来就较少的RAM空间,不能发挥其应有的资源作用。在本发明中,对ROM区中的函数调用方式进行了改造,所采用的方法是,在RAM区中构造一个函数表,这张函数表中的每一项都存放一个函数的地址。如图2所示,设定,函数表Func_table中包含函数Func1,Func2,Func3,其对应的下标分别是0,1,2。调用函数Func1,Func2,Func3都是通过引用Func_table和相应的下标来完成。也就是说,对某个函数的调用,不是直接调用该函数,而是通过函数表找到被调用函数的地址,然后再去调用它。现在假如函数Func3有问题,需要修改,只需将要修改的函数Func3_patch提出放到RAM区,同时把函数表Func_table中下标2的地址改为新函数地址Func3_patch就可以了。无需把ROM区中所有直接和间接调用函数Func3的函数Func1和Func2都进行修改并提到RAM区来。权利要求1.一种嵌入式系统中ROM代码的修改方法,其特征在于在RAM区中构造一个函数表,该函数表中的每一项都存放一个函数的地址,当ROM区中代码调用某个函数时,不直接调用该函数,而是通过函数表找到被调用函数的地址,然后再去调用该函数,并将函数表中的地址改为新地址。全文摘要本发明公开了一种嵌入式系统中ROM代码的修改方法,在RAM区中构造一个函数表,通过函数表找到被调用函数的地址,然后再去调用它。本发明可以减少修改ROM代码时所使用的RAM空间。文档编号G06F11/36GK1862510SQ20051002570公开日2006年11月15日申请日期2005年5月10日优先权日2005年5月10日发明者姚晶晶,赵彤,毛宇斌,杨侠申请人:展讯通信(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1