CN117931532B - 一种片上硬件支持的嵌入式系统程序多粒度恢复方法 - Google Patents
一种片上硬件支持的嵌入式系统程序多粒度恢复方法 Download PDFInfo
- Publication number
- CN117931532B CN117931532B CN202410337914.0A CN202410337914A CN117931532B CN 117931532 B CN117931532 B CN 117931532B CN 202410337914 A CN202410337914 A CN 202410337914A CN 117931532 B CN117931532 B CN 117931532B
- Authority
- CN
- China
- Prior art keywords
- granularity
- recovery
- program
- backup
- instruction
- 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
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 169
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000001514 detection method Methods 0.000 claims abstract description 46
- 230000001360 synchronised effect Effects 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 16
- 230000006870 function Effects 0.000 claims description 51
- 230000005856 abnormality Effects 0.000 claims description 17
- 238000013500 data storage Methods 0.000 claims description 10
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 230000009191 jumping Effects 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 claims description 2
- 235000019580 granularity Nutrition 0.000 abstract description 129
- 238000013507 mapping Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Retry When Errors Occur (AREA)
Abstract
本发明属于嵌入式系统信息安全技术领域,具体公开了一种片上硬件支持的嵌入式系统程序多粒度恢复方法。本发明支持硬件和软件两种方式设置指令级、函数级、基本块级和程序级4种恢复粒度,在程序运行时,由同步译码模块分析处于译码阶段指令的特征,备份点检测控制模块和多粒度恢复控制模块通过判断是否到达预设粒度的备份节点,基于程序执行是否正常,以软硬件协同的方式实现指令级、函数级、基本块级和程序级4种恢复粒度的备份和恢复,简化了对整个多粒度恢复过程的配置,实现了对数据备份、恢复节点的动态调节。本发明通过硬件支持的方式,减少了程序恢复过程中对处理器资源和运行时长的消耗,降低了恢复过程中再次遭遇软件攻击的安全风险。
Description
技术领域
本发明属于嵌入式系统信息安全技术领域,具体涉及一种片上硬件支持的嵌入式系统程序多粒度恢复方法,尤其适用于嵌入式系统的安全防护和异常恢复。
背景技术
嵌入式系统在人们的生产生活中扮演着重要角色,然而复杂多变的应用环境使其面临着众多安全威胁,系统设计人员在丰富和提高嵌入式系统功能的同时,还需要充分考虑嵌入式系统的安全防护问题。目前,软件攻击因其实施成本低、实现方式多样等特点,成为嵌入式系统遭到破坏的主要原因。软件攻击的本质是破坏嵌入式系统程序的正确执行过程。为了达到这一目的,衍生出了恶意软件、内存缓冲区溢出、代码篡改或注入等攻击方式。
针对软件攻击,除了加强对其识别检测外,还需要建立起一套高效灵活的恢复机制,使嵌入式系统在遭到破坏后能够以较低的时间成本和系统开销恢复到破坏节点之前的状态。
当前大部分嵌入式系统的恢复机制只是由调度软件进行简单的复位或重新加载进程,使系统回到初始状态。这种恢复方式的粒度较大,无法根据用户需求动态调节恢复节点,无论程序运行到什么阶段都需要重新在引导程序的引导下恢复到初始状态,再次运行所有程序,在过多消耗处理器资源和运行时长的同时,还增加了整个恢复过程中的安全风险。
另外,目前很少有嵌入式安全防护软件能够实现对嵌入式系统备份和恢复粒度的自定义设置,即使能够实现自定义设置,但其支持的粒度仍然不够多,设置方式也不够灵活。而且,用软件的手段实现对嵌入式系统的多粒度备份和恢复需要时刻占用一部分处理器资源,降低了用户程序的执行效率,对此类安全防护软件的配置也增加了嵌入式程序开发的负担。
发明内容
本发明的目的在于提出一种片上硬件支持的嵌入式系统程序多粒度恢复方法,该方法以软硬件协同的方式实现指令级、函数级、基本块级和程序级4种恢复粒度的备份和恢复,通过硬件支持的方式利于减少程序恢复过程中对处理器资源和运行时长的消耗,降低恢复过程中的安全风险,实现对数据备份、恢复节点的动态调节,简化对多粒度恢复过程的配置。
本发明为了实现上述目的,采用如下技术方案:
一种片上硬件支持的嵌入式系统程序多粒度恢复方法,包括如下步骤:
步骤1. 上电初始化,将搭载有片上多粒度恢复单元的嵌入式系统非易失存储器中存储的程序代码拷贝到指令存储器中,跳转到启动程序入口地址;
其中片上多粒度恢复单元包括恢复粒度设定寄存器、同步译码模块、备份点检测控制模块、多粒度恢复控制模块、片内备份点地址存储器以及片内备份点数据存储器;
步骤2. 通过硬件或软件的方式设置恢复粒度设定寄存器;
步骤3. 继续执行用户程序;
步骤4. 判断是否检测到程序执行异常,若检测到异常,执行步骤5,否则执行步骤7;
步骤5. 判断备份点检测控制模块内的备份标志寄存器是否为0;若备份标志寄存器为0,则复位系统,即执行步骤1;否则,执行步骤6;
步骤6. 由多粒度恢复控制模块读取恢复粒度设定寄存器的数值,获得预设程序恢复粒度,执行和预设程序恢复粒度对应的程序恢复方式,随后执行步骤3;
步骤7. 由同步译码模块读取恢复粒度设定寄存器的数值,获得预设程序恢复粒度,随后对指令进行分析,并将获得的指令特征输入到备份点检测控制模块,执行步骤8;
步骤8. 由备份点检测控制模块读取恢复粒度设定寄存器的数值,获取预设程序恢复粒度,执行和预设程序恢复粒度对应的比较策略,判断是否达到预设粒度备份点:
如果是,备份返回地址到片内备份点地址存储器,备份寄存器和内存数据到片内备份点数据存储器,备份完成后将备份标志寄存器置1,执行步骤3;否则直接执行步骤3。
本发明具有如下优点:
如上所述,本发明述及了一种片上硬件支持的嵌入式系统程序多粒度恢复方法。本发明方法支持硬件和软件两种方式设置指令级、函数级、基本块级和程序级4种恢复粒度,在程序运行时,由同步译码模块分析处于译码阶段指令的特征,备份点检测控制模块和多粒度恢复控制模块通过判断是否到达预设粒度的备份节点,基于程序执行是否正常,以软硬件协同的方式实现指令级、函数级、基本块级和程序级4种恢复粒度的备份和恢复,简化了对整个多粒度恢复过程的配置,实现了对数据备份、恢复节点的动态调节。本发明方法通过硬件支持的方式,减少了程序恢复过程中对处理器资源和运行时长的消耗,降低了恢复过程中再次遭遇软件攻击的安全风险,达到了系统运行效率、安全防护和用户使用体验的平衡。
附图说明
图1为本发明实施例中片上硬件支持的嵌入式系统程序多粒度恢复方法的流程图;
图2为图1中嵌入式系统程序多粒度恢复方法涉及的硬件结构框图。
具体实施方式
下面结合附图以及具体实施方式对本发明作进一步详细说明:
如图1所示,本实施例述及了一种片上硬件支持的嵌入式系统程序多粒度恢复方法,该方法以软硬件协同的方式实现指令级、函数级、基本块级和程序级4种恢复粒度的备份和恢复;通过硬件支持的方式减少程序恢复过程中对处理器资源和运行时长的消耗,降低恢复过程中的安全风险,实现对数据备份、恢复节点的动态调节,简化对多粒度恢复过程的配置。
在对本发明方法进行详细说明之前,先对本发明中的嵌入式系统的组成结构进行说明。
如图2所示,本实施例中嵌入式系统搭载有片上多粒度恢复单元,具体的,该嵌入式系统包括片上多粒度恢复单元、五级流水线以及片上存储器。
片上多粒度恢复单元包括恢复粒度设定寄存器、粒度设定电路、同步译码模块、备份点检测控制模块、多粒度恢复控制模块、片内备份点地址存储器、片内备份点数据存储器以及异常信号接收模块。其中,片上多粒度恢复单元中各部分结构的功能如下:
恢复粒度设定寄存器,用于存储表示程序恢复粒度的二进制数值。
粒度设定电路,用于根据用户的按键输入设置恢复粒度设定寄存器,实现用户对嵌入式系统程序恢复粒度的硬件设置,如图2所示。
同步译码模块,用于分析指令,并将获得的指令特征和备份返回地址发送到备份点检测控制模块。
备份点检测控制模块,用于根据同步译码模块的指令特征判断是否到达预设程序恢复粒度的备份点,并在到达备份点的情况下,执行和预设程序恢复粒度相对应的备份策略。
备份点检测控制模块内的备份标志寄存器,则用来表示当前嵌入式系统是否有过备份。
多粒度恢复控制模块,用于在检测到程序运行异常或受到攻击的情况下,根据预设程序恢复粒度,执行相应的恢复策略。
片内备份点地址存储器,用于存储完成程序恢复后的返回地址,以备从备份点继续运行用户程序;片内备份点数据存储器,用于存储执行备份过程中寄存器和内存的数据。
异常信号接收模块,用于接收片上多粒度恢复单元外部发来的程序执行异常、程序执行错误或遭受恶意攻击的信号,控制多粒度恢复控制模块是否执行程序恢复过程。
五级流水线包括IF、ID、IE、MEM和WB五个阶段。
其中,IF、ID、IE、MEM和WB分别代表取指(Instruction Fetch)、译码(InstructionDecode)、执行(Instruction Execute)、访存(Memory)和写回(Write Back)。
片上存储器包括非易失存储器Flash、指令存储器以及数据存储器。
Flash即闪存,挂载在嵌入式系统AHB总线上,其特点是存储内容掉电非易失,但读写速度较慢。非易失存储器Flash存储的程序代码包括启动引导程序、用户程序和对应指令级、基本块级、函数级和程序级等4种恢复粒度的恢复函数。
PC,即程序计数器(Program Counter),用于存储处理器的下一条指令的地址。
Custom Processor是经过定制修改后的处理器,支持软硬件设置恢复粒度、分析译码阶段指令特征、检测程序执行是否正常、多粒度备份和恢复等功能。
SoC即片上系统(System on Chip),由片上存储器、AHB总线和Custom Processor组成。
如图1所示,基于以上搭载有片上多粒度恢复单元的嵌入式系统,则本发明实施例中片上硬件支持的嵌入式系统程序多粒度恢复方法,包括如下步骤:
步骤1. 上电初始化,将搭载有片上多粒度恢复单元的嵌入式系统非易失存储器Flash中存储的程序代码拷贝到指令存储器IRAM中,跳转到启动程序入口地址。
将恢复粒度设定寄存器初始化为程序级,将备份点检测控制模块内的备份标志寄存器设置为0,从而保证在没有备份但遭到破坏的情况下,程序仍然能够正常复位。
步骤2. 通过硬件或软件的方式设置恢复粒度设定寄存器。
其中,设置恢复粒度设定寄存器,是指在恢复粒度设定寄存器中写入二进制数值,以表示指令级、基本块级、函数级以及程序级,共4种级别的程序恢复粒度。
具体的,首先检测程序恢复粒度按键是否被按下;若按下,则粒度设定电路根据用户的按键输入设置恢复粒度设定寄存器,实现对程序恢复粒度的硬件设置。
否则启动程序中的粒度设置指令生效,实现对程序恢复粒度设定寄存器的软件设置。
此处需要说明的是,如果预设的恢复粒度为指令级,用户可以自己设置执行到哪一类指令的时候进行备份和恢复,也即目标指令的类型,例如可以设置加法指令为目标指令,则当遇到加法指令就会进行备份。对于指令级粒度,目标指令的类型、源/目标寄存器等特征需要存储于恢复粒度设定寄存器中,其他粒度则不需要存储这些信息。
本发明在设置恢复粒度设定寄存器的过程中,首先是判断用户是否通过按键实现了对程序恢复粒度的硬件设置,在没有按键输入的情况下,才通过启动程序中的指令,实现对程序恢复粒度的软件设置,从而实现了硬件设置的优先级高于软件设置的优先级,在一定程度上规避了在程序恢复粒度的设置过程中遭遇软件攻击导致无法恢复的风险。
本发明方法通过步骤2对恢复粒度设定寄存器进行设置,支持把不同类型的指令、基本块、函数等多个粒度作为检测和备份节点,当异常信号接收模块检测到程序执行异常时,可以恢复到备份节点之前的状态,从而实现对程序恢复粒度的动态调节。
步骤3. 继续执行用户程序。
步骤4. 判断是否检测到程序执行异常,即由异常信号接收模块判断是否检测到程序执行异常信号,若检测到异常,执行步骤5,否则执行步骤7。
其中,异常信号可由程序执行错误、片上多粒度恢复单元外部的异常检测单元(用于检测程序执行异常或恶意攻击)产生,并被送达到异常信号接收模块。
需要说明的是,异常检测单元比较成熟且不在本发明的保护范围之内,此处不再赘述。
步骤5. 判断备份点检测控制模块内的备份标志寄存器是否为0。
若备份标志寄存器为0,则表明当前系统内不存在备份内容,无法实现指令级、基本块级或函数级粒度的恢复,复位系统,即执行步骤1;否则,执行步骤6。
步骤6. 执行和预设程序恢复粒度对应的程序恢复方式。
具体的,由多粒度恢复控制模块读取恢复粒度设定寄存器的数值,获得预设程序恢复粒度,执行和预设程序恢复粒度对应的程序恢复方式,随后执行步骤3。
执行和预设程序恢复粒度对应的程序恢复方式具体为:
根据预设程序恢复粒度计算相对恢复函数表的偏移值,设置PC为与预设粒度相对应恢复函数的入口地址,通过执行该恢复函数将系统恢复到被破坏节点之前的状态。
具体而言,对于指令级、基本块级以及函数级粒度的恢复方式,是将片内备份点数据存储器中的现场备份数据写回到原寄存器和内存中的相应地址,并跳转到片内备份点地址存储器中存储的返回地址;对于程序级恢复粒度的恢复方式,则是复位系统。
步骤7. 指令分析。由同步译码模块读取恢复粒度设定寄存器的数值,获得预设程序恢复粒度,随后对指令进行分析,将获得的指令特征输入到备份点检测控制模块,执行步骤8。
由于对程序级恢复粒度的恢复方式是复位系统,因此只需要针对指令级、函数级和程序级等3种程序恢复粒度进行指令分析,同步译码模块对指令进行分析的过程如下:
由同步译码模块读取恢复粒度设定寄存器的数值,获得预设程序恢复粒度的级别;
若预设程序恢复粒度为指令级,则同步译码模块将会输出指令的类型、源寄存器和目标寄存器到备份点检测控制模块;若预设程序恢复粒度为基本块级或函数级,则同步译码模块将会输出指令的跳转性质和目标跳转地址输入到备份点检测控制模块。
由上述指令分析过程不难看出,本发明所采用的根据预设程序恢复粒度确定指令分析策略的方式,有助于提高指令分析的效率,从而减少对系统性能的损耗。
步骤8. 判断是否到达备份点。
由备份点检测控制模块读取恢复粒度设定寄存器的数值,获取预设程序恢复粒度,执行和预设程序恢复粒度对应的比较策略,判断是否达到预设粒度备份点。
如果是,备份返回地址到片内备份点地址存储器,备份寄存器和内存数据到片内备份点数据存储器,备份完成后将备份标志寄存器置1,执行步骤3;否则直接执行步骤3。
由于对于程序级的恢复策略是复位系统,因此只需要判断指令级、基本块级和函数级等3种恢复粒度的备份点。同时,为了减少对指令特征的比对时间,减少性能损耗,同样需要根据预设程序恢复粒度执行相应的比较策略,进而判断是否达到预设粒度备份点。
若预设程序恢复粒度为指令级,备份点检测控制模块从恢复粒度设定寄存器中获取目标检测指令的类型、源寄存器、目标寄存器特征,并将获取的特征与同步译码模块输出指令的特征进行比对,若对比一致,则判定为到达指令级恢复粒度备份点。
此处目标检测指令为系统用户根据自己的需求,人为指定的任意一固定类型指令即可。
若预设程序恢复粒度为基本块级或函数级,备份点检测控制模块则判定同步译码模块传来的指令特征是否为跳转指令,若为跳转指令但非链接跳转指令,则判定为到达基本块级恢复粒度备份点,若为链接跳转指令,则判定为到达函数级恢复粒度备份点。
在备份的过程中,为了便于恢复策略的执行,片内备份点数据存储器应采用固定的数据存储格式,以建立起备份数据与相关寄存器和内存地址的对应关系,确保数据的正常恢复。
通过以上步骤,使得本发明所述片上硬件支持的嵌入式系统程序多粒度恢复方法,能够在嵌入式系统程序执行异常或受到攻击时,根据用户应用场景和安全配置,实现包括指令级、函数级、基本块级以及程序级等4种粒度在内的备份和恢复,保护程序的执行安全。
本发明适用于嵌入式系统的安全防护和异常恢复,可以提高嵌入式系统恢复的灵活性。
下面以OpenE906处理器平台为例,并结合附图2,列举本发明所提供的片上硬件支持的嵌入式系统程序多粒度恢复方法的一种具体应用实例。
在该具体实例中,片上硬件支持的嵌入式系统程序多粒度恢复方法,包括如下步骤:
步骤1. 上电初始化有片上多粒度恢复单元支持的嵌入式系统,其中片上多粒度恢复单元支持的嵌入式系统,包括片上多粒度恢复单元、五级流水线和片上存储器。片上多粒度恢复单元包括恢复粒度设定寄存器、粒度设定电路、同步译码模块、备份点检测控制模块、多粒度恢复控制模块、片内备份点地址存储器、片内备份点数据存储器、异常信号接收模块。
多粒度恢复控制模块用于在检测到程序运行异常或受到攻击的情况下,根据预设的程序恢复粒度执行相应的恢复策略,其内部的只读区域ROM存储了对应指令级、基本块级、函数级等3种粒度恢复函数的入口地址,该只读区域的代码只能由OpenE906的内核态读取、执行。
此外,多粒度恢复控制模块内还设有专供恢复函数调用的高权限内存区,同样只能由OpenE906的内核态进行读写,在一定程度上规避了软件攻击在恢复函数执行过程中的破坏。
非易失存储器Flash存储的程序代码包括启动引导程序、用户程序和对应指令级、基本块级、函数级和程序级等4种恢复粒度的恢复函数。其中,恢复函数处于Flash无法改写的保护区域,并且只能由OpenE906的内核态读取、执行,从而规避外界对恢复函数代码的篡改或窃取。系统上电运行后,在启动引导程序的引导下,只将用户程序拷贝到指令存储器IRAM,并跳转到启动程序的入口地址。
步骤2. 预先规定在RISC-V指令集架构下,32位恢复粒度设定寄存器中的数值到指令级、基本块级、函数级和程序级等4种恢复粒度的映射关系。
对于指令级,恢复粒度设定寄存器的[31:29]、[28:22]、[21:17]、[16:12]、[11:7]、[6:0]分别存放目标检测RISC-V指令的func3、func7、源寄存器rs1、源寄存器rs2及其操作码。如果目标检测的指令中不包含源寄存器或目标寄存器,对应位置补0。
对于基本块级,函数级和程序级,32位恢复粒度设定寄存器的[31:3]置零,[2:0]分别设为001、010和100。
指令级、基本块级、函数级和程序级等4种恢复粒度分别对应不同的按键的输入,由粒度设定电路识别按键发来的信号,按照上述预先规定的映射关系,将恢复粒度设定寄存器设置为相应数值。否则,将由启动程序中恢复粒度设置指令,向恢复粒度设定寄存器写入期望设定的恢复粒度对应的二进制数值。以设定程序恢复粒度为函数级为例:
当检测到函数级粒度对应的按键被按下,粒度设定电路将直接置恢复粒度设定寄存器内的数值为0x0000_0010,从而以硬件的方式将系统的恢复粒度设置为函数级;如果没有按键被按下,但启动程序中存在将粒度设定寄存器设置为0x0000_0010的赋值语句,则同样可以软件的方式将系统的恢复粒度设置为函数级。
步骤3. 继续执行用户程序。
步骤4. 由异常信号接收模块判断异常检测单元是否发出异常信号,若检测到异常,执行步骤5,否则,执行步骤7。
步骤5. 判断备份点检测控制模块内部的备份标志寄存器是否为0,若为0,表明当前系统内不存在备份内容,无法实现指令级、基本块级或函数级粒度的恢复,只能复位系统,即执行步骤1,否则,执行步骤6。
步骤6. 执行程序恢复策略,首先由多粒度恢复控制模块将系统切换到内核态,根据预设的恢复粒度,跳转到相应恢复函数的入口地址,以多粒度恢复控制模块内的高权限内存区为堆栈,执行恢复函数,把片内备份点数据存储器的数据写回到原寄存器和内存地址,恢复函数执行完毕后,跳转到片内备份点地址存储器中存储的返回地址,随后多粒度恢复控制模块将系统切换回用户态,执行步骤3。在内核态完成返回,安全性更好。
步骤7. 同步译码模块读取恢复粒度设定寄存器的值,确定预设程序恢复粒度,执行相应的指令分析策略,并将判断结果输入到备份点控制模块。
若预设程序恢复粒度为指令级,同步译码模块需要获取func3、func7、目标寄存器、源寄存器、opcode等RISC-V指令特征,将下一条指令的地址即此时PC中存储的地址作为备份返回地址,并将获取的指令特征和备份返回地址输入到备份点检测控制模块,随后执行步骤8,否则,执行步骤3。若预设程序恢复粒度为基本块级或函数级,同步译码模块获取RISC-V指令的跳转性质,若为跳转指令,将目标跳转地址作为备份返回地址,并将获取的RISC-V指令跳转性质和备份返回地址输入到备份点检测控制模块,随后执行步骤8,否则,执行步骤3。
步骤8. 判断是否到达备份点,首先由备份点检测控制模块读取恢复粒度设定寄存器,获取预设的程序恢复粒度,执行和预设程序恢复粒度对应的比较策略。
如果到达预设粒度备份点,便备份返回地址到片内备份点地址存储器,备份寄存器和内存数据到片内备份点数据存储器,备份完成后将备份点检测控制模块中的备份标志寄存器置1,随后执行步骤3,否则,直接执行步骤3。
具体的,由于对于程序级的恢复策略是复位系统,因此只需要判断指令级、基本块级和函数级等3种恢复粒度的备份点,同时,为了减少对指令特征的比对时间,减少性能损耗,同样需要根据预设程序恢复粒度执行相应的比较策略。
当预设程序恢复粒度为指令级,备份点检测控制模块从恢复粒度设定寄存器中获取目标检测指令的类型、源寄存器、目标寄存器等特征,将这些特征和同步译码模块输出的指令的特征进行比对,若一致,则判定为到达指令级恢复粒度备份点。
当预设程序恢复粒度为基本块级或函数级,备份点检测控制模块只需要判定同步译码模块传来的指令特征是否为跳转指令,若为跳转指令但非链接跳转指令,则判定为到达基本块级恢复粒度的备份点,若为链接跳转指令,则判定为到达函数级恢复粒度的备份点。
在备份的过程中,为了便于恢复策略的执行,片内备份点数据存储器应采用固定的数据存储格式,以建立起备份数据与相关寄存器和内存地址的对应关系,确保数据的正常恢复。
其中,片内备份点数据存储器预先根据OpenE906处理器支持的RISC-V指令集架构和内存空间,被分为了寄存器数据区和内存数据区,以这种良好的组织形式建立起备份数据与寄存器和内存地址良好的映射关系,方便备份数据的写入和写回。
当然,以上说明仅仅为本发明的较佳实施例,本发明并不限于列举上述实施例,应当说明的是,任何熟悉本领域的技术人员在本说明书的教导下,所做出的所有等同替代、明显变形形式,均落在本说明书的实质范围之内,理应受到本发明的保护。
Claims (5)
1.一种片上硬件支持的嵌入式系统程序多粒度恢复方法,其特征在于,包括如下步骤:
步骤1. 上电初始化,将搭载有片上多粒度恢复单元的嵌入式系统非易失存储器中存储的程序代码拷贝到指令存储器中,跳转到启动程序入口地址;
片上多粒度恢复单元包括恢复粒度设定寄存器、同步译码模块、备份点检测控制模块、多粒度恢复控制模块、片内备份点地址存储器以及片内备份点数据存储器;
将恢复粒度设定寄存器初始化为程序级,将备份标志寄存器设置为0;
步骤2. 通过硬件或软件的方式设置恢复粒度设定寄存器;
设置恢复粒度设定寄存器,是指在恢复粒度设定寄存器中写入二进制数值,以表示指令级、基本块级、函数级以及程序级,共4种级别的程序恢复粒度;
步骤3. 继续执行用户程序;
步骤4. 判断是否检测到程序执行异常,若检测到异常,执行步骤5,否则执行步骤7;
步骤5. 判断备份点检测控制模块内的备份标志寄存器是否为0;
若备份标志寄存器为0,则表明当前系统内不存在备份内容,无法实现指令级、基本块级或函数级粒度的恢复,则复位系统,即执行步骤1;否则,执行步骤6;
步骤6. 由多粒度恢复控制模块读取恢复粒度设定寄存器的数值,获得预设程序恢复粒度,执行和预设程序恢复粒度对应的程序恢复方式,随后执行步骤3;
执行和预设程序恢复粒度对应的程序恢复方式具体为:
对于指令级、基本块级以及函数级粒度的恢复方式,是将片内备份点数据存储器中的现场备份数据写回到原寄存器和内存中的相应地址,并跳转到片内备份点地址存储器中存储的返回地址;对于程序级恢复粒度的恢复方式,则是复位系统;
步骤7. 由同步译码模块读取恢复粒度设定寄存器的数值,获得预设程序恢复粒度,随后对指令进行分析,并将获得的指令特征输入到备份点检测控制模块,执行步骤8;
同步译码模块对指令进行分析的过程如下:
若预设程序恢复粒度为指令级,则同步译码模块将会输出指令的类型、源寄存器和目标寄存器到备份点检测控制模块;若预设程序恢复粒度为基本块级或函数级,则同步译码模块将会输出指令的跳转性质和目标跳转地址输入到备份点检测控制模块;
步骤8. 由备份点检测控制模块读取恢复粒度设定寄存器的数值,获取预设程序恢复粒度,执行和预设程序恢复粒度对应的比较策略,判断是否达到预设粒度备份点:
如果是,备份返回地址到片内备份点地址存储器,备份寄存器和内存数据到片内备份点数据存储器,备份完成后将备份标志寄存器置1,执行步骤3;否则直接执行步骤3;
执行和预设程序恢复粒度对应的比较策略,判断是否达到预设粒度备份点的过程如下:
若预设程序恢复粒度为指令级,备份点检测控制模块从恢复粒度设定寄存器中获取目标检测指令的类型、源寄存器、目标寄存器特征,并将获取的特征与同步译码模块输出指令的特征进行比对,若对比一致,则判定为到达指令级恢复粒度备份点;
若预设程序恢复粒度为基本块级或函数级,备份点检测控制模块则判定同步译码模块传来的指令特征是否为跳转指令,若为跳转指令但非链接跳转指令,则判定为到达基本块级恢复粒度备份点,若为链接跳转指令,则判定为到达函数级恢复粒度备份点。
2.根据权利要求1所述的片上硬件支持的嵌入式系统程序多粒度恢复方法,其特征在于,
所述步骤2具体为:首先检测程序恢复粒度按键是否被按下;若按下,则根据用户的按键输入设置恢复粒度设定寄存器,实现对程序恢复粒度的硬件设置;
否则启动程序中的粒度设置指令生效,实现对程序恢复粒度设定寄存器的软件设置。
3.根据权利要求2所述的片上硬件支持的嵌入式系统程序多粒度恢复方法,其特征在于,
所述片上多粒度恢复单元还包括粒度设定电路,其中,粒度设定电路根据用户的按键输入设置恢复粒度设定寄存器,实现对程序恢复粒度的硬件设置。
4.根据权利要求1所述的片上硬件支持的嵌入式系统程序多粒度恢复方法,其特征在于,
所述片上多粒度恢复单元还包括用于接收程序执行异常信号的异常信号接收模块;通过异常信号接收模块是否接收到程序执行异常信号,判断是否检测到程序执行异常。
5.根据权利要求1所述的片上硬件支持的嵌入式系统程序多粒度恢复方法,其特征在于,
在备份的过程中,片内备份点数据存储器采用固定的数据存储格式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410337914.0A CN117931532B (zh) | 2024-03-25 | 2024-03-25 | 一种片上硬件支持的嵌入式系统程序多粒度恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410337914.0A CN117931532B (zh) | 2024-03-25 | 2024-03-25 | 一种片上硬件支持的嵌入式系统程序多粒度恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117931532A CN117931532A (zh) | 2024-04-26 |
CN117931532B true CN117931532B (zh) | 2024-05-31 |
Family
ID=90759613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410337914.0A Active CN117931532B (zh) | 2024-03-25 | 2024-03-25 | 一种片上硬件支持的嵌入式系统程序多粒度恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117931532B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372505A (zh) * | 2016-08-23 | 2017-02-01 | 北京航空航天大学 | 一种针对嵌入式系统代码攻击的快速恢复方法 |
CN106406991A (zh) * | 2016-08-30 | 2017-02-15 | 西安航天华迅科技有限公司 | 一种ThreadX操作系统在ARM处理器上的运行方法 |
CN112131032A (zh) * | 2020-08-28 | 2020-12-25 | 北京大学 | 一种基于混合内存系统的故障快速恢复方法 |
WO2022267812A1 (zh) * | 2021-06-23 | 2022-12-29 | 中兴通讯股份有限公司 | 软件恢复方法、电子设备及存储介质 |
CN116010134A (zh) * | 2022-11-21 | 2023-04-25 | 广东亿嘉和科技有限公司 | 应用与系统自动恢复的方法、系统、设备、介质 |
-
2024
- 2024-03-25 CN CN202410337914.0A patent/CN117931532B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372505A (zh) * | 2016-08-23 | 2017-02-01 | 北京航空航天大学 | 一种针对嵌入式系统代码攻击的快速恢复方法 |
CN106406991A (zh) * | 2016-08-30 | 2017-02-15 | 西安航天华迅科技有限公司 | 一种ThreadX操作系统在ARM处理器上的运行方法 |
CN112131032A (zh) * | 2020-08-28 | 2020-12-25 | 北京大学 | 一种基于混合内存系统的故障快速恢复方法 |
WO2022267812A1 (zh) * | 2021-06-23 | 2022-12-29 | 中兴通讯股份有限公司 | 软件恢复方法、电子设备及存储介质 |
CN116010134A (zh) * | 2022-11-21 | 2023-04-25 | 广东亿嘉和科技有限公司 | 应用与系统自动恢复的方法、系统、设备、介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117931532A (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dunkels et al. | Run-time dynamic linking for reprogramming wireless sensor networks | |
CN109739563B (zh) | 终端的控制方法、装置、系统及存储介质 | |
CN102207881B (zh) | 一种基于Android的操作系统快速启动方法 | |
US8468389B2 (en) | Firmware recovery system and method of baseboard management controller of computing device | |
US8146093B2 (en) | Computer multiple operation system switching method | |
US7373446B2 (en) | Method and system for dynamically patching an operating system's interrupt mechanism | |
US20070130450A1 (en) | Unnecessary dynamic branch prediction elimination method for low-power | |
US20140325197A1 (en) | Specialized boot path for speeding up resume from sleep state | |
US8060786B2 (en) | Method for recovering basic input output system and computer device thereof | |
CN106873990B (zh) | 嵌入式系统ram损坏模式下的多分区引导方法 | |
US20090217026A1 (en) | Method for changing power states of a computer | |
US20070208959A1 (en) | Instruction conversion apparatus and instruction conversion method providing power control information, program and circuit for implementing the instruction conversion, and microprocessor for executing the converted instruction | |
WO2001061485A2 (en) | Modular bios update mechanism | |
US20090271660A1 (en) | Motherboard, a method for recovering the bios thereof and a method for booting a computer | |
CN109634618B (zh) | 基于TMS320C674X处理器二级BootLoader串行加载自启动方法 | |
JP2005301639A (ja) | Osの障害対応方法およびそのプログラム | |
US20040181654A1 (en) | Low power branch prediction target buffer | |
JP3202497B2 (ja) | 情報処理装置 | |
CN101241442A (zh) | 具有双开机程序代码区的计算机系统及其启动方法 | |
JP5136405B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
CN101697132A (zh) | 一种操作系统快速重启的方法、装置和网络设备 | |
CN117931532B (zh) | 一种片上硬件支持的嵌入式系统程序多粒度恢复方法 | |
US7739734B2 (en) | System and method for protecting a BIOS from unauthorized modifications | |
JP4155052B2 (ja) | エミュレータ、エミュレーション方法およびプログラム | |
CN101546281A (zh) | 提高嵌入式系统可靠性的方法和装置 |
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 |