论文部分内容阅读
现代卫星需要完成的任务越来越复杂,对星载计算机系统的功能和性能提出了更高的要求。由于重量、体积和功耗的限制,在简化硬件系统的同时,需要软件来完成大多数任务功能,软件势必更加复杂。同时,星载硬件发展较快,而软件受飞行任务和硬件环境不同的影响而存在差异,软件生产效率低,后期维护复杂,而且任何软件故障都可能造成灾难性的后果。因此,星载软件是卫星系统设计和开发的中心。本文从支持星载软件动态更新和提高星载软件开发效率出发,对星载软件体系结构,星载软件模块化设计方法和基于模块的星载软件动态更新方法进行了研究。具体工作包括:1、结合星载软件需求,本文基于Bruce Powel Douglass的实时嵌入式系统体系结构设计模式,采用分视图描述方法,提出了支持动态更新的星载软件体系结构DUOSA(On-board Software Architecture supporting Dynamic Updating),基于DUOSA开发的星载软件能满足实时性、可靠性、可重用和易于维护等要求,同时DUOSA模块化结构是星载软件模块动态更新的基础。2、本文在DUOSA体系结构基础上给出了星载软件多任务设计方法,并以某微小卫星为例进行了星载软件任务划分和任务调度设计,前期实验表明任务划分和调度设计均满足系统实时性要求。子系统设计采用机制式设计模式,以遥测子系统为例从支持动态更新出发给出了模块设计、接口设计方法及设计时注意的问题。3、为了实现星载软件模块的动态更新,模块之间通过模块重定向表来实现间接访问,通过修改表中的内容实现模块的重定向。针对单个函数模块,采用基于模块间接调用的方法即通过改变表中函数模块的入口地址,下次程序调用将指向新地址对应的模块从而实现模块更新;针对封装了多个函数操作的模块,采用模块动态加载的方法来加载新的模块,进而访问新模块中的函数服务,达到模块更新的目的。实验表明两种星载软件动态更新方法合理可行,能满足修复软件模块故障、提高软件可靠性和扩充软件功能的要求。