一种基于多模冗余嵌入式软件的计算机系统及设计方法与流程

文档序号:16608181发布日期:2019-01-14 21:19阅读:305来源:国知局
一种基于多模冗余嵌入式软件的计算机系统及设计方法与流程

本发明涉及嵌入式软件可靠性设计技术领域,具体的说,是一种基于多模冗余嵌入式软件的计算机系统及设计方法。



背景技术:

现有的嵌入式软件设计领域,随着对嵌入式任务要求不断提高,任务呈现出多样性和复杂性的特点。嵌入式软件在运行过程中,始终受到复杂环境的影响,如温度、大气、磁场、辐射、带电粒子等环境因素,都可能致使嵌入式硬件可靠性降低,从而发生故障;某些特殊的应用场景比如太空中,还要能适应恶劣的工作环境,特别是在太空环境中受到空间辐射(总剂量效应与单粒子效应)对嵌入式软件运行的可靠性造成了极大的威胁,比如运载火箭领域,只靠提高元器件的可靠性实现高可靠的系统,会给元器件制造造成难以克服的困难或要花费高的代价。在一定的可靠性水平的元器件基础上,采用软件冗余技术是提高系统可靠性,得到高可靠性系统的有效设计措施。而且由于太空环境中受到空间辐射,对计算机系统可能造成不可预知的错误,所以嵌入式软件一旦发生故障或者重启,使得系统工作瘫痪造成无法估量的损失,甚至带来巨大的灾难。因此,对于提高嵌入式软件运行的可靠性和安全性的研究显得尤为重要。



技术实现要素:

本发明的目的在于提供一种基于多模冗余嵌入式软件可靠性设计方法及系统,用于解决现有技术中特殊的应用场景中嵌入式软件仅采用软件冗余技术提高可靠性容易在受到空间辐射时因软件系统故障时出现系统工作瘫痪的问题。

本发明通过下述技术方案解决上述问题:

一种基于多模冗余嵌入式软件的计算机系统,由分别安装在三台计算机的三个冗余模块组成,所述冗余模块包括系统管理模块、数据io模块、表决模块、飞行控制模块和记录仪,其中:

系统管理模块:用于系统启动初始化和以上各模块程序的烧录;

数据io模块:设置于计算机cpu,用于通过冗余模块的输入接口接收外部冗余输入的数据,并与飞行控制模块通信;

表决模块:设置于计算机cpu的表决fpga,用于实现三个冗余模块的同步、数据交互与表决输出、故障检测和系统重构;

飞行控制模块:与记录仪、数据io模块和表决模块进行数据交互,用于指令处理和控制规律解算;

记录仪:用于记录和存储数据,并与上位机进行数据交互。

原理:

分别部署在三台计算机上的三个冗余模块组成一个多模冗余计算机系统,每一个冗余模块均包括系统管理模块、数据io模块、表决模块、飞行控制模块和记录仪,冗余模块还设置有输入接口和输出接口,数据io模块运行于cpu板内的fpga模块,通过输入接口进行采集设备的驱动数据、ad数据、da数据和串口数据,表决模块运行于表决fpga内,通过输出接口进行输出。系统管理软件,用于整个冗余模块的管理,进行各个子模块的程序烧录以及进行系统的初始化;飞行控制软件,用于在进行权输出表决时,制定指令处理和控制规律。三个冗余模块中的三个cpu,首先进行同步,保证三个cpu在程序执行状态、周期定时和时间基准上达到一致,保证接收相同的外部冗余输入的数据,三个cpu通过交互获得三台计算机的采集数据,三台计算机采集数据的交互是实现三模冗余的基础,三个cpu将数据进行对比,进行三取二表决,如果数据存在不一致,说明单个cpu出现了瞬间故障,剔除故障单机数据,三个cpu的表决模块再次进行三取二的输出权表决,避免某个表决模块故障导致的最终输出权冲突的问题。当检测出单机故障时,启动系统重构对故障机进行恢复:由当前控制的cpu即当班机发送控制断电和重新上电指令,对故障机进行故障恢复,同时,当班机根据读取的断电状态控制进入双机热备份工作模式即降级流程,当故障机故障恢复后,重构过程为:当班机在每个流程的开始,将自身重要状态参数发送给故障机的表决fpga,故障机在恢复后完成初始化后,读取当班机发送的参数,立即进行同步,并向其他两机的表决fpga发送运算后的数据,然后向当班机提出请求同步,当班机读取三台计算机数据进行三取二表决,通过后,恢复三台计算机模式。

整个软件系统采用三模冗余体系架构,表决模块也采用三模冗余结构,通过三取二表决,可靠的检测出故障机,并且在单机出现故障的情况下,不影响其他两机的正常运行,并且在出现单机故障后,可在线恢复故障,提高单机容错能力。

进一步地,所述表决模块包括同步单元、故障检测与系统重构单元、表决单元和数据交互单元,其中:

同步单元,用于控制三台计算机在程序执行状态、周期定时和时间基准上的同步,使三个冗余模块得到相同的输入信号,再将输入信号同步发送给表决单元;

故障检测与系统重构单元:用于通过自检、互检、他检的检测模式来进行单机故障检测以及对故障机进行恢复;

表决单元:用于进行数据表决和输出权表决,所述数据表决用于根据读取的输入数据表决出状态信号,并根据状态信号表决出输出真值表的计算机;所述输出权表决用于根据cpu输出数据和心跳信号表决出输出状态信号的计算机;

数据交互单元:包括交互sram,用于本机cpu读取数据和另外两个cpu写入数据。

原理:

经过同步,保证三台计算机获得相同的输入数据,同步的方式包括中断同步和握手同步,其中,

中断同步:当外部中断达到后,三个cpu通过数据交互,互相识别到外部中断,一致进入中断服务程序,中断服务程序中进行状态与数据的交换,使三台计算机的时间基准实现同步;

握手同步,包括任务同步、状态同步和上电初始同步,其中:任务同步,在任务中穿插关键点即握手点,当任务运行到关键点时,三台计算机通过数据交换通道交换任务进程的状态数据和应用数据,实现同步;状态同步,对程序进行事件划分,并设置握手点,在每个握手点本机向其他两机提供同步握手信号,同时接收其他两机的同步握手信号,本机发出握手信号后,等待查询其余两机信号,如果查询成功,则三台计算机同步成功;上电初始同步,三台计算机上在程序运行位置设置初始化完成信号,即握手点,并在三台计算机中交互该信号,三台计算机均收到后同步进入主流程运行。

自检模式:cpu检测自身输出的串口信号以及检测使能端逻辑,若异常则标示自身故障,发送故障信号给当前控制的cpu;

互检模式:每一个表决fpga均实时监测自身心跳信号以及另外两个表决fpga,三个cpu通过交互缓存获得其他两个cpu的工作状态和同步信息,实现三个cpu的互检;

他检模式:三个cpu分别将各自的数据和状态参数写进三个表决fpga的缓存中,进行三取二表决,并将表决结果发送给三个表决pfga,三个表决fpga再次进行三取二表决,将最终的结果反馈给三个cpu,实现表决fpga监测各个cpu的工作状态。

三个cpu采集数据的交互是实现三模冗余的基础,三个cpu通过数据交互获得三台计算机的采集数据并进行比对,以此来避免单个cpu瞬时故障造成的错误。三个cpu表决权的交互是为了防止三个cpu中某一个出现故障导致的三个cpu表决出的权冲突问题。三个cpu的表决模块再次进行三取二的权交互是为了避免某一个表决模块故障导致的最终输出权冲突的现象。

一种基于多模冗余嵌入式软件的计算机系统设计方法,包括:

步骤s1:在三台计算机上分别部署冗余模块,完成系统初始化和各模块程序的烧录;

步骤s2:进行同步,若同步成功,三个冗余模块中的数据io模块分别同步读取输入数据;

步骤s3:三个冗余模块交叉传输所述读取的输入数据,并存储至数据交互单元;

步骤s4:表决模块进行输入数据表决和输出权表决,并将数据并联输出。

部署了多模冗余计算机系统之后,首先进行三台计算机初始化和同步,在同步成功之后,三台计算机同步接收外部冗余输入的数据,并将各自接收到的数据,传输至其他两台计算机中,完成输入数据的交互,数据交互完成时,三个cpu进行三取二表决,判断是否有cpu出现瞬间故障,如果有,判断是否需要在线重构,如果需要,则故障机从当前控制的cpu中读取状态参数,进行系统重构,如果不需要重构,则由飞行控制模块对输入数据进行控制规律解算和交叉传输解算结果,三个cpu对输入数据进行表决,并将表决结果输入三个表决fpga,由三个表决fpga再次进行三取二表决,表决出具有最终的输出权的cpu,并由该cpu输出控制信号,控制其他各模块将数据并联输出。

进一步地,所述步骤s4具体包括:

步骤s41:输入数据表决,具体为:

步骤s411:三个cpu分别对各自的数据交互单元内的数据进行比对,表决出状态信号,并反馈给各自的表决fpga;

步骤s412:当出现表决不一致时,判断是否为重构流程;如果是,则请求关键去数据,进行系统重构,否则,进入步骤s42;

步骤s42:控制规律解算和交叉传输解算结果;

步骤s43:输出权表决和控制并联输出,具体为:

步骤s431:判断交叉传输解算是否成功,如果不成功,则设置交叉传输故障,进入降级流程;如果成功,表决fpga的表决单元根据cpu输出的数据和心跳信号,表决出输出状态信号的cpu,并将所述状态信号广播给三个cpu;

步骤s432:cpu接收到广播信号时与自身编号比对,若一致,则输出控制信号进行并联输出。

进一步地,所述步骤s2中如果同步不成功,则设置同步标志故障,进入降级流程。

进一步地,所述步骤s3还包括判断交叉传输是否成功,如果不成功,则设置交叉传输故障,进入降级流程。

降级流程:检测出单机故障时,启动系统重构对故障机进行恢复,由当前控制的cpu即当班机发送控制断电和重新上电指令,对故障机进行故障恢复,同时,当班机根据读取的断电状态控制进入双机热备份工作模式。

本发明与现有技术相比,具有以下优点及有益效果:

(1)整个软件系统采用三模冗余体系架构,表决单元也采用三模冗余结构,在出现故障时,可通过在线故障恢复或者重构实现系统的可靠性,表决单元采用三模冗余,采取三取二表决,实现了故障单机的检测,避免了单个cpu以及单个表决fpga的故障出现的表决出错,进一步提高了系统的可靠性。

(2)采用多种同步方式,消除了多模冗余计算机系统内的三台计算机的异步性,真正实现三模冗余功能,其中采用的中断同步,可以实现同步精度在一个指令执行周期内;状态同步,通过在1ms对程序进行事件划分,可以提高同步的精度。

(3)自检模式,可以检测自身故障,主动申请断电控制;互检模式,可以监控其他两个cpu的工作状态和同步信息;他检模式,实现了对三个cpu的监控。

附图说明

图1为本发明的系统原理框图;

图2为本发明的流程图;

图3为本发明的系统数据流图。

具体实施方式

下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。

实施例1:

结合附图1和图3所示,一种基于多模冗余嵌入式软件的计算机系统,由分别安装在三台计算机的三个冗余模块组成,所述冗余模块包括系统管理模块、数据io模块、表决模块、飞行控制模块和记录仪,其中:

系统管理模块:用于系统启动初始化和以上各模块程序的烧录;

数据io模块:设置于计算机cpu,用于通过冗余模块的输入接口接收外部冗余输入的数据,并与飞行控制模块通信;

表决模块包括同步单元、故障检测与系统重构单元、表决单元和数据交互单元,其中:

同步单元,用于控制三台计算机在程序执行状态、周期定时和时间基准上的同步,使三个冗余模块得到相同的输入信号,再将输入信号同步发送给表决单元;

故障检测与系统重构单元:用于通过自检、互检、他检的检测模式来进行单机故障检测以及对故障机进行恢复;

表决单元:用于进行数据表决和输出权表决,所述数据表决用于根据读取的输入数据表决出状态信号,并根据状态信号表决出输出真值表的计算机;所述输出权表决用于根据cpu输出数据和心跳信号表决出输出状态信号的计算机;

数据交互单元:包括交互sram,用于本机cpu读取数据和另外两个cpu写入数据;

飞行控制模块:与记录仪、数据io模块和表决模块进行数据交互,用于指令处理和控制规律解算;

记录仪:用于记录和存储数据,并与上位机进行数据交互。

原理:

分别部署在三台计算机上的三个冗余模块组成一个多模冗余计算机系统,每一个冗余模块均包括系统管理模块、数据io模块、表决模块、飞行控制模块和记录仪,冗余模块还设置有输入接口和输出接口,数据io模块运行于cpu板内的fpga模块,通过输入接口进行采集设备的驱动数据、ad数据、da数据和串口数据,表决模块运行于表决fpga内,通过输出接口进行输出。系统管理软件,用于整个冗余模块的管理,进行各个子模块的程序烧录以及进行系统的初始化;飞行控制软件,用于在进行权输出表决时,制定指令处理和控制规律。三个冗余模块中的三个cpu,首先进行同步,保证三个cpu在程序执行状态、周期定时和时间基准上达到一致,保证接收相同的外部冗余输入的数据,三个cpu通过交互获得三台计算机的采集数据,三台计算机采集数据的交互是实现三模冗余的基础,三个cpu将数据进行对比,进行三取二表决,如果数据存在不一致,说明单个cpu出现了瞬间故障,剔除故障单机数据,三个cpu的表决模块再次进行三取二的输出权表决,避免某个表决模块故障导致的最终输出权冲突的问题。故障的检测包括cpu对自身的自检,以及表决fpga之间的互检、三个cpu之间的互检和表决fpga对cpu的他检。当检测出单机故障时,启动系统重构对故障机进行恢复:由当前控制的cpu即当班机发送控制断电和重新上电指令,对故障机进行故障恢复,同时,当班机根据读取的断电状态控制进入双机热备份工作模式即降级流程,当故障机故障恢复后,重构过程为:当班机在每个流程的开始,将自身重要状态参数发送给故障机的表决fpga,故障机在恢复后完成初始化后,读取当班机发送的参数,立即进行同步,并向其他两机的表决fpga发送运算后的数据,然后向当班机提出请求同步,当班机读取三台计算机数据进行三取二表决,通过后,恢复三台计算机模式。

整个软件系统采用三模冗余体系架构,表决模块也采用三模冗余结构,通过三取二表决,可靠的检测出故障机,并且在单机出现故障的情况下,不影响其他两机的正常运行,并且在出现单机故障后,可在线恢复故障,提高单机容错能力。

实施例2:

结合附图2所示,一种基于多模冗余嵌入式软件的计算机系统设计方法,包括:

步骤s1:在三台计算机上分别部署冗余模块,完成系统初始化和各模块程序的烧录;

步骤s2:进行同步,若同步成功,三个冗余模块中的数据io模块分别同步读取输入数据;如果同步不成功,则设置同步标志故障,进入降级流程:检测出单机故障时,启动系统重构对故障机进行恢复,由当前控制的cpu即当班机发送控制断电和重新上电指令,对故障机进行故障恢复,同时,当班机根据读取的断电状态控制进入双机热备份工作模式。

步骤s3:三个冗余模块交叉传输所述读取的输入数据,并存储至数据交互单元;如果交叉传输不成功,则设置交叉传输故障,进入降级流程;

步骤s4包括:

步骤s41:输入数据表决,具体为:

步骤s411:三个cpu分别对各自的数据交互单元内的数据进行比对,表决出状态信号,并反馈给各自的表决fpga;

步骤s412:当出现表决不一致时,判断是否为重构流程;如果是,则请求关键去数据,进行系统重构,否则,进入步骤s42;

步骤s42:控制规律解算和交叉传输解算结果;

步骤s43:输出权表决和控制并联输出,具体为:

步骤s431:判断交叉传输解算是否成功,如果不成功,则设置交叉传输故障,进入降级流程;如果成功,表决fpga的表决单元根据cpu输出的数据和心跳信号,表决出输出状态信号的cpu,并将所述状态信号广播给三个cpu;

步骤s432:cpu接收到广播信号时与自身编号比对,若一致,则输出控制信号进行并联输出。

部署了多模冗余计算机系统之后,首先进行三台计算机初始化和同步,在同步成功之后,三台计算机同步接收外部冗余输入的数据,并将各自接收到的数据,传输至其他两台计算机中,完成输入数据的交互,数据交互完成时,三个cpu进行三取二表决,判断是否有cpu出现瞬间故障,如果有,判断是否需要在线重构,如果需要,则故障机从当前控制的cpu中读取状态参数,进行系统重构,如果不需要重构,则由飞行控制模块对输入数据进行控制规律解算和交叉传输解算结果,三个cpu对输入数据进行表决,并将表决结果输入三个表决fpga,由三个表决fpga再次进行三取二表决,表决出具有最终的输出权的cpu,并由该cpu输出控制信号,控制其他各模块将数据并联输出。

尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1