一种面向COTS平台的星载软件EDAC容错方法技术

技术编号:36686810 阅读:28 留言:0更新日期:2023-02-27 19:50
一种面向COTS平台的星载软件EDAC容错方法,基于星载EDAC硬件实现方式,设计EDAC校验模块和校验码,校验码采用海明码,程序可执行代码单个码字长度32位,校验码7位,实现纠一检二功能。通过可执行代码程序段插桩,在原始可执行代码中各模块被调用语句之前插入EDAC校验模块的调用语句,实现被调用模块执行前完成EDAC校验。对插桩后的每条可执行代码计算其校验码,作为程序区的一部分存放,采用“运行代码优先校验”的改进思路,设计软件模块调度前校验和空闲时段校验相结合的方式,对可执行代码进行EDAC校验。同时在程序存储区存放EDAC算法的副本,实现两份EDAC算法模块的相互校验,确保EDAC模块自身正确性。保EDAC模块自身正确性。保EDAC模块自身正确性。

【技术实现步骤摘要】
一种面向COTS平台的星载软件EDAC容错方法


[0001]本专利技术属于星载软件设计领域,涉及一种星载软件的EDAC容错方法。

技术介绍

[0002]随着空间环境复杂度的提升,航天器在轨应用模式不断丰富,在传统航天器姿态测量控制基础上,需要逐步增强对空间态势的感知、预测,并根据感知结果自主开展任务规划和实施,对航天器的在轨自主能力提出了更高的要求。星载软件作为航天器功能实现的主要载体,其复杂度不断提升,与此同时,态势感知、理解等功能涉及大量数据的实时解算及融合处理,也必然需要更为强大的在轨数据处理能力。
[0003]另一方面,为了应对恶劣的空间辐射环境以及航天高可靠性需求,现有星载计算机普遍采用抗辐照加固等措施,但其运算处理性能却远落后于商用器件(COTS:commercial off the shelf),难以适应高性能计算的需求。COTS器件虽然性能优势较大,但其本身抗辐照能力的欠缺,也难以直接应用。因此低成本高可靠的在星载环境下发挥COTS器件的作用,现实意义巨大。
[0004]目前的星载计算机容错技术主要是依靠硬件容错和软件容错两种方式。
[0005]硬件容错一般在处理器和存储单元增加容错设计,在计算过程中,硬件容错可通过设计表决器或看门狗的方法,一方面通过采用多数表决并选择多数相同的输出作为实际结果,另一方面在面对软件运行异常或跑飞等工况,通过看门狗定时器,适时将程序从异常状态拉回。在数据存取过程,硬件容错可通过冗余校验方法实现容错,典型的星载计算单元(如SoC2008、BM3803、SOC2012等),均在硬件层面采用了奇偶校验、三模冗余、片上EDAC等容错策略。
[0006]软件容错一般通过软件设计阶段和软件编译阶段增加容错措施,设计阶段容错方法包括N

版本和恢复块方法,以及相应的容错算法设计。容错算法中最重要是软件EDAC方法,通过模拟硬件EDAC机制,对执行代码进行EDAC校验,从而检错和纠错。软件编译阶段则通过改进编译器,在代码特定位置插入容错指令。美国JPL的REE计划,以及斯坦福大学可靠性计算中心的ARGOS试验,提出了若干详细的编译容错算法。其中EDDI和ED4I是比较有名的编译容错算法。EDDI和ED4I在汇编语言级别进行指令复制,并且在每一个存储指令之前进行冗余比较,以确保计算结果一致性。容错编译根据所保护的内容不同,分为数据流保护技术和控制流保护技术,典型的数据流保护方法包括EDDI、ED4I、VAR等,典型的控制流保护方法包括CFCSS、YACCA、CEDA等。
[0007]结合目前星载领域的需求,上述容错方法存在的问题主要有:
[0008](1)硬件容错无需额外的软件开销,具有较高的可靠性,但具备硬件容错机制的宇航级计算产品成本高昂,增加了获取和应用成本。同时宇航产品与当前COTS器件在性能上不可同日而语。因此,使用硬件容错已经不能适应当前和未来空间智能化应用的需求。
[0009](2)容错编译方法,无一例外都会带来软件运行时间和空间上的开销。例如在EDDI中,软件容错的时间开销高达170%;源到源编译容错的空间开销为2.9倍,而时间开销高达
2.6倍。从其实现机理上分析,容错编译方法目前仍以数据流和控制流的正确性判断为主,即仅仅能够通过插入校验等方式,判断出数据或控制流的异常,但无法实现纠错,在软件设计环节或编译环节,还需要考虑异常发生后的程序执行分支走向问题。
[0010](3)软件纠错检错方法,与硬件EDAC相比,能够部分实现EDAC功能,从调研的实现方法看,EDAC的实现逻辑是将程序执行、程序等待和程序EDAC校验三个环节分开,程序执行和程序等待所占时间比例较高,该段过程无刷新来确保对SEU的防护,容错效果仍需改进。同时EDAC检纠错内容与当前执行程序的关联性较弱,并不能实时保证即将执行的程序是否存在问题。
[0011]基于上述分析,现有的容错方法并不适用于基于COTS搭建的星载系统。

技术实现思路

[0012]本专利技术解决的技术问题是:克服现有技术的不足,提供了一种基于COTS平台的软件EDAC设计方法,可实现对在轨运行代码段的周期性自动检错和纠错,在降低系统开销的同时,能够有效检测单粒子反转异常并纠正,保证星载软件连续正常运行。
[0013]本专利技术的技术解决方案是:一种面向COTS平台的星载软件EDAC容错方法,采用软件模块调度前校验与空闲时段校验相结合的方式对星载软件的全部执行代码进行EDAC校验,其中:
[0014]所述的软件模块调度前校验:是在每个软件模块执行之前,先对该模块编译生成的全部可执行代码调用EDAC校验模块进行校验,确保全部可执行代码正确后再执行;
[0015]所述的空闲时段校验:是利用处理器空闲时间,周期性的对全部软件可执行代码从头到尾进行循环校验,每周期校验对应长度的代码,确保每隔一段时间完成一次对全部软件模块的可执行代码的校验。
[0016]进一步的,所述的先对该模块编译生成的全部可执行代码调用EDAC校验模块进行校验,具体为:通过对软件原始可执行代码程序段插桩,从Mapfile文件中获取程序段起始地址和结束地址,并按该地址,在原始可执行代码中找到对应的程序段内容,通过遍历程序段中的模块调用语句,并通过符号解析获取该被调用模块的起始地址和结束地址,在调用语句前插入调用EDAC校验模块的语句,并以被调用模块的起始地址和结束地址为调用参数,实现每个被调用模块执行前完成被调用模块的EDAC校验。
[0017]进一步的,所述的EDAC校验模块在程序存储区同时存放两份,同时设计两个单独运行的校验任务,所述两个单独运行的校验任务交错运行,分别对两个EDAC校验模块中的程序段进行校验和刷新操作。
[0018]进一步的,所述的EDAC校验模块进行EDAC容错采用(39:32)的海明码,其中可执行代码的码字长度为32位,EDAC校验码为7位,合计39位,实现纠一检二功能。
[0019]进一步的,所述的EDAC校验码也分配32位地址空间,低7位为有效校验码,高25位屏蔽。
[0020]进一步的,所述的EDAC校验码作为可执行代码的一部分,与可执行代码程序段和数据段共同落焊到存储芯片中,其中校验码单独开辟存储空间,存放于程序段和数据段二者存储地址之后,软件运行前,由引导软件将程序段和校验段内容搬运至内存中的TEXT段地址空间。
[0021]本专利技术与现有技术相比的优点在于:
[0022](1)本专利技术方法采用“运行代码优先校验”的改进思路,使得EDAC校验过程与后续执行代码运行之间的间隔时间更小,以减少该段时间之内出现单粒子反转的可能性,适用于航天器等具备高可靠性高安全性需求的应用领域;
[0023](2)本专利技术方法综合考虑了嵌入式环境下软件任务运行可靠性以及校验软件本身运行可靠性两方面的融合需求,通过设计双份EDAC校验软件,并增加两个独立任务,在软件正常运行的间隙,交错执行实现对EDAC软件本身的防护,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向COTS平台的星载软件EDAC容错方法,其特征在于:采用软件模块调度前校验与空闲时段校验相结合的方式对星载软件的全部执行代码进行EDAC校验,其中:所述的软件模块调度前校验:是在每个软件模块执行之前,先对该模块编译生成的全部可执行代码调用EDAC校验模块进行校验,确保全部可执行代码正确后再执行;所述的空闲时段校验:是利用处理器空闲时间,周期性的对全部软件可执行代码从头到尾进行循环校验,每周期校验对应长度的代码,确保每隔一段时间完成一次对全部软件模块的可执行代码的校验。2.根据权利要求1所述的一种面向COTS平台的星载软件EDAC容错方法,其特征在于:所述的先对该模块编译生成的全部可执行代码调用EDAC校验模块进行校验,具体为:通过对软件原始可执行代码程序段插桩,从Mapfile文件中获取程序段起始地址和结束地址,并按该地址,在原始可执行代码中找到对应的程序段内容,通过遍历程序段中的模块调用语句,并通过符号解析获取该被调用模块的起始地址和结束地址,在调用语句前插入调用EDAC校验模块的语句,并以被调用模块的起始地址和结束地址为调用参数,实现每个被调用模块执行前完成被调用模块的...

【专利技术属性】
技术研发人员:杜建伟袁利刘磊张聪江耿丰彭飞谢鸣宇王云鹏关智元
申请(专利权)人:北京控制工程研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1