[发明专利]一种ARM芯片程序在线重构的方法在审
申请号: | 201911045306.8 | 申请日: | 2019-10-30 |
公开(公告)号: | CN110888667A | 公开(公告)日: | 2020-03-17 |
发明(设计)人: | 杨卫平 | 申请(专利权)人: | 北京军懋国兴科技股份有限公司 |
主分类号: | G06F8/656 | 分类号: | G06F8/656 |
代理公司: | 西安智邦专利商标代理有限公司 61211 | 代理人: | 胡乐 |
地址: | 100070 北京市丰台*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 arm 芯片 程序 在线 方法 | ||
本发明提供了一种ARM芯片程序在线重构的方法,解决现有技术在芯片功能重构过程中用户不能操作芯片,且需要由用户设计把控系统工作状态和环境的问题。该ARM芯片程序在线重构的方法是将重构代码作为传输数据写入程序存储器中的约定位置,该约定位置区别于当前运行程序的存储地址;并在地址映射数据池中记录所述重构代码的函数首地址和变量地址;重构代码写入完成后,将待更新函数的函数首地址更改为重构代码的函数首地址,从而程序运行下一个主循环周期执行各个函数时,自动执行重构代码。
技术领域
本申请涉及一种ARM芯片程序重构方法。
背景技术
目前,ARM芯片程序重构,首先需要将重构程序作为数据发送给ARM,由ARM将此数据写入自身的程序存储器,重构完成重启ARM再使用重构后的程序,这种方式ARM芯片在重构过程和重启时会暂时失去原设计功能,重启ARM后恢复。这意味着芯片重构过程中,系统的功能会中断一段时间,原有功能被屏蔽,这时出于重构稳定性的考虑,这时需要用户介入对系统的把控,接手原ARM芯片的功能或停用整个系统。
发明内容
本申请的目的是解决现有技术在芯片功能重构过程中用户不能操作芯片,且需要由用户设计把控系统工作状态和环境的问题。
为了实现以上目的,本申请提出以下解决方案:
一种ARM芯片程序在线重构的方法,其特殊之处在于:当前运行程序的地址映射数据池(也可称为函数地址映射表)保存在程序存储器中,所述地址映射数据池记录有当前运行程序的各函数首地址和变量地址,重构代码用于更新其中至少一个函数;该ARM芯片程序在线重构的方法包括以下步骤:
将重构代码作为传输数据写入程序存储器中的约定位置,该约定位置区别于当前运行程序的存储地址;并在所述地址映射数据池中记录所述重构代码的函数首地址和变量地址;
重构代码写入完成后,将待更新函数的函数首地址更改为重构代码的函数首地址,从而程序运行下一个主循环周期执行各个函数时,自动执行重构代码。
上述约定位置可以是程序存储器的空白存储区域;也可以是程序存储器中的无用代码存储区域,写入的重构代码覆盖所述无用代码。
相应的,本申请还提供一种程序上注装置,包括以下指令(控制程序)模块:
代码写入模块,用于将重构代码作为传输数据写入程序存储器中的约定位置,该约定位置区别于当前运行程序的存储地址;并在所述地址映射数据池中记录所述重构代码的函数首地址和变量地址;
地址更新模块,用于在重构代码写入完成后,将待更新函数的函数首地址更改为重构代码的函数首地址。
相应的,本申请还提供一种动态程序存储器,除了存储有当前运行程序,该动态程序存储器还包括:
a)当前运行程序的地址映射数据池,所述地址映射数据池记录有当前运行程序的各函数首地址和变量地址;
b)空闲存储空间,用于写入重构代码,以更新当前运行程序中的至少一个函数;
c)能够响应程序上注装置指令的接口代码,用于接收并执行程序上注装置发出的指令,以实现以下配置:将重构代码作为传输数据写入所述空闲存储空间,该空闲存储空间区别于当前运行程序的存储地址;并在所述地址映射数据池中记录所述重构代码的函数首地址和变量地址;在重构代码写入完成后,将待更新函数的函数首地址更改为重构代码的函数首地址。
本申请提供了一种可以在芯片正常运行情况下通过外部注入程序数据动态重构芯片功能的方法,ARM重构过程不会停止系统功能,相比之前芯片程序重构后需要重新复位或加电的方式提供更优的用户体验。
附图说明
图1为本申请的系统构成示意图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京军懋国兴科技股份有限公司,未经北京军懋国兴科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911045306.8/2.html,转载请声明来源钻瓜专利网。