
技术摘要:
本发明公开了一种基于操作系统的高可靠星载软件架构设计方法,采取多进程 多线程开发模式进行综合电子系统软件开发过程,能够保证无人值守、且运行于复杂电磁环境中的卫星,长期在轨运行稳定。即使出现故障时,也能够通过该方法中的相应措施能够恢复正常运行。其目的在 全部
背景技术:
随着卫星及飞行器任务需求,载荷的数量和功能呈上升趋势,相对综合电子系统 软件,负责整星数据流的处理及通信,载荷的数量增加,意味着综合电子系统软件的复杂度 增加。基于传统星载软件开发模式,继续开发目前卫星及飞行器系统中的综合电子系统软 件,会面临诸多问题,软件升级扩展难以实现、软件分层不明显、软硬件无法解耦、软件利用 率低等。 随着卫星及飞行器综合电子系统升级换代,处理器已经不再是8位机器或者16位 机器,而是具有上百兆主频的高性能处理器,甚至是多核处理器。基于传统嵌入式开发模 式,是无法充分发挥高性能处理器的性能优势,无法更好的实现软硬件协同开发; 利用嵌入式操作系统提供的多进程/多线程技术实现卫星及飞行器中综合电子系 统软件的开发技术,在现有航天工程实际中应用较少。而已有实现技术中,针对多进程/多 线程的可靠性问题的考虑,主要集中在:1、将应用程序和嵌入式操作系统镜像编译在一起, 最终形成一个目标文件,针对该操作系统镜像目标文件进行冗余备份,而对其内部的应用 程序无法实现多冗余备份;2、采用动态加载方式,将应用程序单独分离编译,存放于文件系 统中,将该应用程序进行冗余备份,而在线程间的可靠性保证及整系统的可靠性保证,未见 有明显描述。虽然上述两种方法都可以实现可靠性保证,但是只针对应用程序本身进行冗 余操作,未从综合电子系统软件顶层考虑其可靠性和安全性。
技术实现要素:
为了克服现有技术的缺陷,本发明提供了一种基于操作系统的高可靠星载软件架 构设计方法,以期解决目前综合电子计算机使用嵌入式操作系统后,随着软件规模巨增,采 用多进程 多线程开发模式下的嵌入式软件开发复杂度增加的情况下,如何保证综合电子 系统软件可靠性和安全性等问题。进一步提高综合电子系统软件设计的灵活性、可扩展性、 可靠性和安全性。技术方案如下: 一种基于操作系统的高可靠星载软件架构设计方法,包括以下步骤: S1:操作系统首先创建监视进程/线程; 进而由该监视进程/线程创建启动若干个工作进程;每个工作进程开始执行后,又 分别创建自己进程内部的工作线程,由每个工作进程创建的第一个工作线程为该进程的主 线程; 监视进程/线程与各工作进程共享内存数据; 在各工作进程内部,主线程同其他工作线程之间采用消息队列的方式实现数据交 互; 4 CN 111580792 A 说 明 书 2/6 页 S2:在每个周期内,每个工作进程均进行“心跳”计数,并将该“心跳”计数通过共享 内存数据的方式发送给监视进程/线程; 在每个周期内,每个工作进程内部,除主线程外的各个工作线程均进行“心跳”计 数,并将该“心跳”计数通过消息队列的方式发送给主线程; 当在连续固定的n个周期内,某个工作进程均出现“心跳”计数不再增加的情况,即 该工作进程出现无“心跳”,则监视进程/线程判断该工作进程出现异常,此时,监视进程/线 程主动重新启动对应的工作进程;n为正整数; 对于每一进程,当在连续固定的m个周期内,某线程“心跳”计数均不再变化时,主 线程判断其运行状态异常;此时,主线程先自行重启该异常的线程,在重试规定次数后,仍 然监视判断该线程“心跳”计数不再变化时,则向监视进程/线程停发该进程的“心跳”计数, 由监视进程/线程负责重启该工作进程;m为正整数。 可选地,步骤S1还包括: 监视进程/线程创建启动RMS进程,RMS进程开始执行后,创建自己进程内部的工作 线程,其创建的第一个工作线程为RMS进程的主线程,该主线程为周期性线程RMS调度;该主 进程用于对其它各个线程的周期性任务进行监控; 监视进程/线程与RMS进程、各工作进程共享内存数据; 在RMS进程内部,RMS调度同其他线程之间采用消息队列的方式实现数据交互。 可选地,步骤S2还包括: 在每个周期内,RMS进程进行“心跳”计数,并将该“心跳”计数通过共享内存数据的 方式发送给监视进程/线程; 在每个周期内,RMS进程内部,除RMS调度外的各个线程均进行“心跳”计数,并将该 “心跳”计数通过消息队列的方式发送给RMS调度; 当RMS进程的主线程在执行RMS调度时,通过消息队列获得本进程内其他工作线程 在执行周期性任务时是否发生超时;若发现某个工作线程出现超时,先由主线程对其他各 个线程进行重启操作,当前述对应工作线程连续发生规定次数超时,则RMS进程停止向监视 进程/线程发送“心跳“计数,由监视进程/线程对RMS进程进行重启操作。 可选地,还包括步骤S3: 对各工作进程、RMS进程中关键线程进行冗余备份,生产对应的冗余线程;当关键 线程出现故障时,即故障关键线程停止向其对应的主线程发送“心跳”计时,该主线程会重 启故障关键线程,如重启了规定次数后,故障关键线程仍出现停止心跳计时的情况,则该主 线程启动故障关键线程对应的冗余线程,由冗余线程接管故障关键线程的工作。 可选地,还包括步骤S4: 当步骤S1至S3均失效时,可以采取针对综合电子计算机断电重加电开始运行,将 所有的应用程序及依赖的动态库文件都回到出厂版本,保证在应急时刻能够有一份应用程 序可以让卫星综合电子系统恢复到初态即出厂设置,之后再重复步骤S1到步骤S3;其中,所 有的应用程序及动态库文件都有MD5校验文件以保证其完整性。 可选地,当执行步骤S4时,针对加载执行的每一份应用程序文件的3份MD5校验文 件,采取“三取二”比对,保证总有一份应用程序能够正常启动执行;其中,“三取二”是指将 三份MD5校验文件中的每个字节进行按位两两比较,只要有两份一致,就取相同两份中任意 5 CN 111580792 A 说 明 书 3/6 页 一份。 与现有技术相比,本发明的有益效果如下: 本发明能够提供针对使用嵌入式操作系统后,采取多进程 多线程开发模式进行 综合电子系统软件开发过程中,在软件复杂度非常高的情况下,如何保证卫星或者飞行器 中综合电子系统软件的可靠性和安全性有着积极的借鉴意义,在宇航领域具有较好的实际 工程应用价值。 本发明针对基于嵌入式操作系统的综合电子系统软件,在秉持传统星载软件成熟 的可靠性措施的同时,还能够利用操作系统提供的优势和便捷,进一步增强星载综合电子 系统的可扩展性和可靠性、进而提高了整星的可靠性和可维护性。 本发明的多进程和多线程模式不同于传统星载软件开发方式,实现多任务在单核 处理器上的并行执行,区别于传统星载软件中的“背景任务 中断”模式,提高软件执行效率 和增强开发灵活性; 本发明以进程作为系统资源的容器,保证各个进程对系统资源的“独享”和隔离, 实现多进程对资源使用的安全性,进而保证系统的安全性; 本发明的方法中,当卫星或者其他飞行器的综合电子计算机在断电重新上电后, 所有应用程序及动态库文件都启用出厂版本,能够保证在卫星及飞行器的应急时刻能够有 一份可执行应用程序及动态库能够用来保证卫星和飞行器的姿态。姿态稳定后,可以根据 实际工况,决定是恢复到断电前状态,还是以此为基础,重新开始新的功能迭代升级。 本发明的步骤四为系统中关键性的线程采取冗余备份策略,保证系统中关键特性 不存在单点故障,以线程级为单位进行冗余,用于增强系统的冗余性和可靠性。本发明的多 进程和多线程模式实现多任务在单核处理器上的并行执行,增强系统的并行执行能力,提 升综合电子系统性能。 附图说明 图1为本发明具体实施例一种基于操作系统的高可靠星载软件架构设计方法的实 现流程示意图。