发明名称 用于星载处理器的程序执行流程跳转错误检测方法
摘要 本发明公开了一种用于星载处理器的程序执行流程跳转错误的检测方法,其步骤为:①处理器程序运行时,初始化跳转状态矩阵,进行步骤②;②根据程序基本模块之间的跳转关系,构建基本模块跳转矩阵,进行步骤③;③顺次执行各个基本模块的跳转状态检测流程,执行跳转检验矩阵;④通过统计跳转检验矩阵中元素“1”的数量是否为1,如果为1则上次跳转正常,进行步骤③,否则上次跳转异常,进行步骤⑤;⑤结束所有状态,进行程序故障处理。本发明是一种原理简单、操作方便、可靠性好的用于星载处理器的程序执行流程跳转错误的检测方法。
申请公布号 CN101551775A 申请公布日期 2009.10.07
申请号 CN200910043424.5 申请日期 2009.05.15
申请人 中国人民解放军国防科学技术大学 发明人 张传胜;杨建伟;王跃科;邢克飞;杨俊;周永彬;陈建云;明德祥;钟小鹏;胡助理
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 湖南兆弘专利事务所 代理人 赵 洪
主权项 1、一种用于星载处理器的程序执行流程跳转错误的检测方法,其特征在于,其步骤为:①处理器程序运行时,初始化跳转状态矩阵,进行步骤②;所述跳转状态矩阵为一个用于标记程序当前跳转状态的N阶全局二维矩阵F,当基本模块b<sub>i</sub>即将跳往基本模块b<sub>j</sub>时,对应F<sub>ij</sub>=1;对于单线程程序,每个时刻只能发生一次跳转,因此F有且只有一个元素为1,其余为0;②根据程序基本模块之间的跳转关系,构建基本模块跳转矩阵,进行步骤③;所述基本模块跳转矩阵为一个N阶全局二维矩阵J,其描述了基本模块b<sub>i</sub>、b<sub>j</sub>之间的跳转关系J<sub>ij</sub>:<maths num="0001"><![CDATA[<math><mrow><mo>&ForAll;</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>&Element;</mo><mo>[</mo><mn>0</mn><mo>,</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>]</mo><mo>,</mo></mrow></math>]]></maths>如果b<sub>i</sub>可以跳转到b<sub>j</sub>,那么J<sub>ij</sub>=1,否则J<sub>ij</sub>=0;③顺次执行各个基本模块的跳转状态检测流程,执行跳转检验矩阵;所述跳转检验矩阵为一个用于检测程序最近一次跳转是否有效的N阶局部二维矩阵C,矩阵中元素为“1”的位置表示最近发生的模块跳转行为;对于单线程处理器软件程序,同时只能存在一次模块跳转,因此C中有且只有一个元素为1;如果C的元素为全0,或者包含多个1,则表示最近一次跳转为非法跳转;④通过统计跳转检验矩阵中元素“1”的数量是否为1,如果为1则上次跳转正常,进行步骤③,否则上次跳转异常,进行步骤⑤;⑤结束所有状态,进行程序故障处理。
地址 410073湖南省长沙市砚瓦池正街47号中国人民解放军国防科学技术大学机电工程与自动化学院