CN111694594B - 补丁程序的控制方法和系统 - Google Patents

补丁程序的控制方法和系统 Download PDF

Info

Publication number
CN111694594B
CN111694594B CN202010420170.0A CN202010420170A CN111694594B CN 111694594 B CN111694594 B CN 111694594B CN 202010420170 A CN202010420170 A CN 202010420170A CN 111694594 B CN111694594 B CN 111694594B
Authority
CN
China
Prior art keywords
patch
program
cpu
value
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010420170.0A
Other languages
English (en)
Other versions
CN111694594A (zh
Inventor
杨磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Sydtek Microelectronics Co ltd
Original Assignee
Chengdu Sydtek Microelectronics Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Sydtek Microelectronics Co ltd filed Critical Chengdu Sydtek Microelectronics Co ltd
Priority to CN202010420170.0A priority Critical patent/CN111694594B/zh
Publication of CN111694594A publication Critical patent/CN111694594A/zh
Application granted granted Critical
Publication of CN111694594B publication Critical patent/CN111694594B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种补丁程序的控制方法和系统,涉及片上系统技术领域。该补丁程序的控制方法包括以下步骤:在CPU执行原程序的过程中,通过程序计数器寄存器进行计数以得到计数值,判断计数值与预设补丁跳转地址的值是否相同;当计数值与预设补丁跳转地址的值相同时触发CPU中断,CPU再跳转至中断处理函数中,以执行补丁程序;中断处理函数预设链接寄存器中的地址的值,当CPU执行完补丁程序时,CPU退出中断处理函数,并根据链接寄存器中的地址的值跳转至原程序的对应位置继续工作。本发明的补丁程序的控制方法通过监测程序计数器寄存器的计数值与预设补丁跳转地址的值是否相同以触发CPU中断,并通过中断处理函数执行补丁程序,使得处理更加方便。

Description

补丁程序的控制方法和系统
技术领域
本发明涉及片上系统技术领域,特别是涉及一种补丁程序的控制方法和系统。
背景技术
SoC(System-on-a-Chip,片上系统) 是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容;它是信息系统核心的芯片集成,将系统关键部件集成在一块芯片上。一般来说,制作完成后的SoC不能被修改。当需要对SoC的已知的问题进行修复或者添加新的性能时,目前是通过对SoC进行补丁的方式进行修复或添加性能。
目前针对SoC的补丁方法,都是通过监测总线访问其ROM或其他非易失性存储器地址,判断该地址是否匹配预先设定的值,如果是,则将该地址重映射为补丁程序地址,并将补丁程序数据返回给处理器,执行完补丁程序后,再返回至ROM或其他非易失性存储器的另一个地址继续执行程序。但是,这种补丁处理方式,软件程序员需要先找到对应的补丁跳转点,再转化成代码存放地址,然后才能确定补丁设定值;另一方面,在补丁程序准备过程中,需要考虑跳转前代码对堆栈的使用和处理器中通用寄存器的使用,通过必要的手段对堆栈和通用寄存器进行保护,否则处理器将会异常。
发明内容
本发明的主要目的在于提供一种补丁程序的控制方法和系统,旨在避免处理器在补丁过程中异常。
为实现上述目的,本发明提供一种补丁程序的控制方法,包括以下步骤:
在CPU执行原程序的过程中,通过程序计数器寄存器对执行原程序的指令进行计数以得到计数值,判断所述计数值与预设补丁跳转地址的值是否相同;
当所述计数值与所述预设补丁跳转地址的值相同时,触发CPU中断,所述CPU再跳转至中断处理函数中,以执行补丁程序;
所述中断处理函数预设链接寄存器中的地址的值,当所述CPU执行完补丁程序时,CPU退出中断处理函数,并根据所述链接寄存器中的地址的值跳转至原程序的对应位置继续工作;
继续通过程序计数器寄存器对执行原程序的指令进行计数。
优选地,所述原程序保存于第一存储器中,所述补丁程序和中断处理函数保存于第二存储器中。
优选地,通过补丁控制逻辑电路对程序计数器寄存器进行监测,并比较所述计数值与预设补丁跳转地址的值是否相等。
优选地,所述补丁控制逻辑电路包括连接于所述程序计数器寄存器的比较器。
优选地,当所述计数值与所述预设补丁跳转地址的值不相同时,CPU继续工作。
本发明还提供一种补丁程序的控制系统,所述系统包括:
CPU模块,用以执行原程序;
所述CPU模块还包括程序计数器寄存器模块,所述程序计数器寄存器模块用以在CPU模块执行原程序的过程中对执行原程序的指令进行计数以得到计数值;
补丁控制逻辑电路,用以对程序计数器寄存器模块进行监测,并比较所述计数值与预设补丁跳转地址的值是否相等,并在所述计数值与预设补丁跳转地址的值相等时触发CPU模块中断;
中断处理函数模块,用以在CPU模块中断后、使CPU模块跳转执行补丁程序;
所述中断处理函数模块还包括预设有链接寄存器中的地址的值的模块,该模块用以在所述CPU模块执行完补丁程序、退出中断处理函数模块时,可根据所述链接寄存器中的地址的值跳转至原程序的对应位置继续工作;
补丁程序模块,用以保存补丁程序、以便CPU模块对原程序进行补丁。
优选地,所述CPU模块执行的原程序保存于第一存储器中,所述补丁程序模块和中断处理函数模块保存于第二存储器中。
优选地,所述补丁控制逻辑电路包括连接于所述程序计数器寄存器模块的比较器。
优选地,当所述计数值与所述预设补丁跳转地址的值不相同时,CPU模块继续工作。
本发明技术方案通过监测程序计数器寄存器的计数值与预设补丁跳转地址的值是否相同以触发CPU中断,并通过中断处理函数执行补丁程序,使得对原程序进行补丁的处理更加方便;同时,通过程序计数器寄存器进行计数、中断处理函数执行补丁程序,CPU可自动压栈,可避免处理器崩溃。
附图说明
图1为本发明实施例补丁程序的控制方法的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图对本发明进一步说明。
本发明实施例提供一种补丁程序的控制方法,如图1所示,包括以下步骤:
在CPU执行原程序的过程中,通过程序计数器寄存器对执行原程序的指令进行计数以得到计数值,判断所述计数值与预设补丁跳转地址的值是否相同。
在具体实施例中,在需要对原程序补丁时,预先将补丁程序存放在CPU可读取的存储器中,并设置该补丁程序的地址,以使CPU在执行原程序时能顺利跳转执行补丁程序。预设的补丁跳转地址即原程序需补丁的位置。具体地,程序计数器寄存器对执行原程序的指令进行计数由CPU处理。
当所述计数值与所述预设补丁跳转地址的值相同时,触发CPU中断,所述CPU再跳转至中断处理函数中,以执行补丁程序。
具体地,当计数值与预设补丁跳转地址的值相同时,即原程序被执行至需补丁的位置时,CPU被触发中断。
所述中断处理函数预设链接寄存器(LR,Link Register)中的地址的值,当所述CPU执行完补丁程序时,CPU退出中断处理函数,并根据所述链接寄存器中的地址的值跳转至原程序的对应位置继续工作。
具体地,CPU在执行完补丁程序后,需跳转回原程序继续执行原程序,需继续执行的原程序的地址即为链接寄存器设定的地址。
继续通过程序计数器寄存器对执行原程序的指令进行计数。
具体地,程序计数器寄存器对执行原程序的指令进行计数由CPU处理,在CPU退出中断处理函数时,会对程序计数器寄存器进行更新,完成更新后,程序计数器寄存器继续对执行原程序的指令进行计数。
本发明技术方案通过监测程序计数器寄存器的计数值与预设补丁跳转地址的值是否相同以触发CPU中断,并通过中断处理函数执行补丁程序,使得对原程序进行补丁的处理更加方便;同时,通过程序计数器寄存器进行计数、中断处理函数执行补丁程序,CPU可自动压栈,可避免处理器崩溃,在具体工作过程中,只需定时清理堆栈数据即可保证CPU正常工作。
优选地,所述原程序保存于第一存储器中,所述补丁程序和中断处理函数保存于第二存储器中。
在具体实施例中,第一存储器为只读存储器(ROM,Read-Only Memory)。第二存储器可以为只读存储器也可以为随机存取存储器(RAM,Random Access Memory)。
具体的,原程序一般保存在只读存储器中,不能增加、修改,在需要增加或者修改原程序的功能时,即会为原程序提供补丁程序。补丁程序和中断处理函数可存放在新增的存储器中,更方便CPU执行补丁程序。在另一些实施例中,中断处理函数也可存放在只读存储器中,但是这种方法使得CPU跳转比较麻烦,增加了难度和成本。
优选地,通过补丁控制逻辑电路对程序计数器寄存器进行监测,并比较所述计数值与预设补丁跳转地址的值是否相等。
优选地,所述补丁控制逻辑电路包括连接于所述程序计数器寄存器的比较器。
优选地,当所述计数值与所述预设补丁跳转地址的值不相同时,CPU继续工作。
本发明实施例还提供一种补丁程序的控制系统,所述系统包括:
CPU模块,用以执行原程序;
所述CPU模块还包括程序计数器寄存器模块,所述程序计数器寄存器模块用以在CPU模块执行原程序的过程中对执行原程序的指令进行计数以得到计数值;
补丁控制逻辑电路,用以对程序计数器寄存器模块进行监测,并比较所述计数值与预设补丁跳转地址的值是否相等,并在所述计数值与预设补丁跳转地址的值相等时触发CPU模块中断;
中断处理函数模块,用以在CPU模块中断后、使CPU模块跳转执行补丁程序;
所述中断处理函数模块还包括预设有链接寄存器中的地址的值的模块,该模块用以在所述CPU模块执行完补丁程序、退出中断处理函数模块时,可根据所述链接寄存器中的地址的值跳转至原程序的对应位置继续工作;
补丁程序模块,用以保存补丁程序、以便CPU模块对原程序进行补丁。
优选地,所述CPU模块执行的原程序保存于第一存储器中,所述补丁程序模块和中断处理函数模块保存于第二存储器中。
优选地,所述补丁控制逻辑电路包括连接于所述程序计数器寄存器模块的比较器。
优选地,当所述计数值与所述预设补丁跳转地址的值不相同时,CPU模块继续工作。
应当理解的是,以上仅为本发明的优选实施例,不能因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (9)

1.一种补丁程序的控制方法,其特征在于,包括以下步骤:
在CPU执行原程序的过程中,通过程序计数器寄存器对执行原程序的指令进行计数以得到计数值,判断所述计数值与预设补丁跳转地址的值是否相同;
当所述计数值与所述预设补丁跳转地址的值相同时,触发CPU中断,所述CPU再跳转至中断处理函数中,以执行补丁程序;
所述中断处理函数预设链接寄存器中的地址的值,当所述CPU执行完补丁程序时,CPU退出中断处理函数,并根据所述链接寄存器中的地址的值跳转至原程序的对应位置继续工作;
继续通过程序计数器寄存器对执行原程序的指令进行计数。
2.根据权利要求1所述的补丁程序的控制方法,其特征在于,所述原程序保存于第一存储器中,所述补丁程序和中断处理函数保存于第二存储器中。
3.根据权利要求1所述的补丁程序的控制方法,其特征在于,通过补丁控制逻辑电路对程序计数器寄存器进行监测,并比较所述计数值与预设补丁跳转地址的值是否相等。
4.根据权利要求3所述的补丁程序的控制方法,其特征在于,所述补丁控制逻辑电路包括连接于所述程序计数器寄存器的比较器。
5.根据权利要求1所述的补丁程序的控制方法,其特征在于,当所述计数值与所述预设补丁跳转地址的值不相同时,CPU继续工作。
6.一种补丁程序的控制系统,其特征在于,所述系统包括:
CPU模块,用以执行原程序;
所述CPU模块还包括程序计数器寄存器模块,所述程序计数器寄存器模块用以在CPU模块执行原程序的过程中对执行原程序的指令进行计数以得到计数值;
补丁控制逻辑电路,用以对程序计数器寄存器模块进行监测,并比较所述计数值与预设补丁跳转地址的值是否相等,并在所述计数值与预设补丁跳转地址的值相等时触发CPU模块中断;
中断处理函数模块,用以在CPU模块中断后、使CPU模块跳转执行补丁程序;
所述中断处理函数模块还包括预设有链接寄存器中的地址的值的模块,该模块用以在所述CPU模块执行完补丁程序、退出中断处理函数模块时,可根据所述链接寄存器中的地址的值跳转至原程序的对应位置继续工作;
补丁程序模块,用以保存补丁程序、以便CPU模块对原程序进行补丁。
7.根据权利要求6所述补丁程序的控制系统,其特征在于,所述CPU模块执行的原程序保存于第一存储器中,所述补丁程序模块和中断处理函数模块保存于第二存储器中。
8.根据权利要求6所述的补丁程序的控制系统,其特征在于,所述补丁控制逻辑电路包括连接于所述程序计数器寄存器模块的比较器。
9.根据权利要求6所述的补丁程序的控制系统,其特征在于,当所述计数值与所述预设补丁跳转地址的值不相同时,CPU模块继续工作。
CN202010420170.0A 2020-05-18 2020-05-18 补丁程序的控制方法和系统 Active CN111694594B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010420170.0A CN111694594B (zh) 2020-05-18 2020-05-18 补丁程序的控制方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010420170.0A CN111694594B (zh) 2020-05-18 2020-05-18 补丁程序的控制方法和系统

Publications (2)

Publication Number Publication Date
CN111694594A CN111694594A (zh) 2020-09-22
CN111694594B true CN111694594B (zh) 2023-03-03

Family

ID=72477130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010420170.0A Active CN111694594B (zh) 2020-05-18 2020-05-18 补丁程序的控制方法和系统

Country Status (1)

Country Link
CN (1) CN111694594B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101004681A (zh) * 2006-12-22 2007-07-25 中兴通讯股份有限公司 嵌入式系统动态补丁长跳转的实现方法
CN102339029A (zh) * 2011-06-30 2012-02-01 电子科技大学 一种嵌入式操作系统定时保护的实现方法
CN103885808A (zh) * 2014-04-08 2014-06-25 北京奇虎科技有限公司 热补丁处理方法及装置
JP2015014974A (ja) * 2013-07-08 2015-01-22 株式会社リコー 通信評価方法および通信評価装置
CN104932876A (zh) * 2014-03-20 2015-09-23 株式会社巨晶片 半导体装置及读取指令的控制方法
CN104981778A (zh) * 2013-02-22 2015-10-14 马维尔国际贸易有限公司 修补只读存储器的引导代码
CN105988798A (zh) * 2015-02-12 2016-10-05 中兴通讯股份有限公司 补丁处理方法及装置
CN110046097A (zh) * 2019-04-01 2019-07-23 深圳震有科技股份有限公司 一种定位内存非法改写的方法、系统及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101004681A (zh) * 2006-12-22 2007-07-25 中兴通讯股份有限公司 嵌入式系统动态补丁长跳转的实现方法
CN102339029A (zh) * 2011-06-30 2012-02-01 电子科技大学 一种嵌入式操作系统定时保护的实现方法
CN104981778A (zh) * 2013-02-22 2015-10-14 马维尔国际贸易有限公司 修补只读存储器的引导代码
JP2015014974A (ja) * 2013-07-08 2015-01-22 株式会社リコー 通信評価方法および通信評価装置
CN104932876A (zh) * 2014-03-20 2015-09-23 株式会社巨晶片 半导体装置及读取指令的控制方法
CN103885808A (zh) * 2014-04-08 2014-06-25 北京奇虎科技有限公司 热补丁处理方法及装置
CN105988798A (zh) * 2015-02-12 2016-10-05 中兴通讯股份有限公司 补丁处理方法及装置
CN110046097A (zh) * 2019-04-01 2019-07-23 深圳震有科技股份有限公司 一种定位内存非法改写的方法、系统及存储介质

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
On Improving Real-Time Interrupt Latencies of Hybrid Operating Systems with Two-Level Hardware Interrupts;Miao Liu;《IEEE Transactions on Computers ( Volume: 60, Issue: 7, July 2011)》;20100610;1-6 *
Real-time performance assessment using fast interrupt request on a standard Linux kernel;Rayanne Souza;《engineering reports》;20200120;1-5 *
使用RT补丁的Linux内核的中断性能 - 应该更好吗?;佚名;《https://www.javaroad.cn/questions/132958》;20181218;1-2 *
基于ARM的Linux实时抢占补丁的研究与实现;王帅华;《组合机床与自动化加工技术》;20151010;1-4 *
嵌入式Linux操作系统实时性的研究与实现;舒志文;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20090115;I138-682 *
支持多种Linux版本的动态内核性能测试技术;冯国富等;《西安交通大学学报》;20080610(第06期);1-4 *

Also Published As

Publication number Publication date
CN111694594A (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
US6418498B1 (en) Integrated system management memory for system management interrupt handler independent of BIOS and operating system
US9164897B2 (en) NAND flash memory interface controller with GNSS receiver firmware booting capability
US8234430B2 (en) Apparatus and method with controlled switch method
US20110225402A1 (en) Apparatus and method for handling exception events
EP4012554B1 (en) Chip patching method and chip
CN103761122A (zh) 一种芯片固件的升级方法和系统
US20020129195A1 (en) Microcomputer with built-in programmable nonvolatile memory
US20020099893A1 (en) System and method for the handling of system management interrupts in a multiprocessor computer system
JP2008513900A (ja) コンピュータシステム上でコンピュータプログラムを処理する方法
US7984432B2 (en) Method for patching a read-only memory and a data processing system comprising a means of patching the read-only memory based on patch contexts
CN111694594B (zh) 补丁程序的控制方法和系统
CN111782269A (zh) 一种中断处理方法及中断处理设备
CN115269158A (zh) 软件定义中断管理控制器的方法
US6829735B1 (en) Computer system having a ROM correction unit
EP0669582A2 (en) Immediate system management interrupt source with associated reason register
US20080133838A1 (en) Data processing device
CN117170753B (zh) 程序处理方法、程序处理装置、车辆和存储介质
CN101366009A (zh) 具有错误校正的数据处理系统及其运行方法
JP4647276B2 (ja) 半導体回路装置
CN117331421B (zh) 微控制芯片及其复位方法、存储介质
WO2001020453A1 (en) Method and apparatus for modifying microinstructions in a static memory device
JP3480903B2 (ja) エミュレータにおける全命令トレースの制御方法
JPH0764822A (ja) マイクロコンピュータ
CN117251393A (zh) 处理器的中断响应方法、装置、芯片、计算机设备和介质
WO2023107532A1 (en) Vector fetch bus error handling

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant