[发明专利]为芯片打补丁的方法及芯片在审
申请号: | 202080001617.9 | 申请日: | 2020-01-17 |
公开(公告)号: | CN111868684A | 公开(公告)日: | 2020-10-30 |
发明(设计)人: | 邹南 | 申请(专利权)人: | 深圳市汇顶科技股份有限公司 |
主分类号: | G06F8/65 | 分类号: | G06F8/65 |
代理公司: | 北京龙双利达知识产权代理有限公司 11329 | 代理人: | 毋小妮;毛威 |
地址: | 518045 广东省深*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 芯片 打补丁 方法 | ||
本申请实施例公开了一种为芯片打补丁的方法及芯片,能够通过中断指令进行中转,获得补丁函数的函数地址,从而对需要被替换的函数进行替换。这种方式不需要在指令中携带补丁函数的地址信息,因此不受跳转地址范围的限制,能够实现长地址跳转。所述芯片中包括第一程序,所述方法包括:当运行到所述第一程序中的需要被替换的函数时,根据预存的所述需要被替换的函数的地址与中断指令的对应关系,执行中断服务程序,所述中断服务程序为与所述需要被替换的函数对应的中断指令调度的服务程序,所述中断服务程序的返回地址为所述需要被替换的函数的补丁函数的地址;根据所述补丁函数的地址,运行所述补丁函数,以对所述第一程序进行打补丁处理。
技术领域
本申请实施例涉及计算机技术领域,并且更具体地,涉及一种为芯片打补丁的方法及芯片。
背景技术
补丁技术能够对程序中的错误进行修补,因此受到越来越多的关注。
目前都是基于跳转指令对程序进行打补丁处理,但是跳转指令无法实现长地址跳转,这样对替换函数的存储位置有严格的要求,不利于芯片对于存储器的布局空间设计。
发明内容
本申请实施例提供了一种为芯片打补丁的方法及芯片,能够实现长地址跳转,有利于芯片对于存储器的布局空间设计。
第一方面,提供了一种为芯片打补丁的方法,所述芯片中包括第一程序,所述方法包括:当运行到所述第一程序中的需要被替换的函数时,根据预存的所述需要被替换的函数的地址与中断指令的对应关系,执行中断服务程序,所述中断服务程序为与所述需要被替换的函数对应的中断指令调度的服务程序,所述中断服务程序的返回地址为所述需要被替换的函数的补丁函数的地址;根据所述补丁函数的地址,运行所述补丁函数,以对所述第一程序进行打补丁处理。
该方法通过中断指令进行中转,获得补丁函数的函数地址,从而对需要被替换的函数进行替换。这种方式不需要在中断指令中携带补丁函数的地址信息,而是通过中断服务程序调度补丁函数的地址,因此能够不受跳转地址范围的限制,实现长地址跳转。
在一些可能的实现方式中,所述中断指令为软中断指令。
在一些可能的实现方式中,所述中断指令为系统调用SVC指令。
SVC指令仅需一条指令就能实现中断,占用系统资源少。另外SVC能够支持的中断号比较多,因此能够实现的补丁数量较多。
在一些可能的实现方式中,所述第一程序为所述芯片中的固有程序。
在一些可能的实现方式中,所述需要被替换的函数的地址与所述补丁函数的地址之间的距离超过一个跳转指令能够跳转的地址范围。
在一些可能的实现方式中,所述补丁函数的地址为所述芯片的寄存器中的任意地址。
在一些可能的实现方式中,所述当运行到所述第一程序中的需要被替换的函数时,根据预存的所述需要被替换的函数的地址与中断指令的对应关系,执行中断服务程序,包括:当运行到所述第一程序中的需要被替换的函数时,根据预存的所述需要被替换的函数的地址与中断指令的对应关系,确定与所述需要被替换的函数对应的中断指令;根据所述中断指令,确定中断号;根据所述中断号,执行与所述中断号对应的所述中断服务程序。
在一些可能的实现方式中,在所述根据所述补丁函数的地址,运行所述补丁函数之后,所述方法还包括:运行所述第一程序中的所述需要被替换的函数的下一个函数。
在一些可能的实现方式中,所述第一程序中的需要被替换的函数的地址与中断指令之间具有一一对应关系。
在一些可能的实现方式中,所述第一组件为闪存地址重载与断点FPB。
在一些可能的实现方式中,所述芯片为微控制单元MCU芯片。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市汇顶科技股份有限公司,未经深圳市汇顶科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202080001617.9/2.html,转载请声明来源钻瓜专利网。