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所述的片上硬件支持的嵌入式系统程序多粒度恢复方法,其特征在于,在备份的过程中,片内备份点数据存储器采用固定的数据存储格式。