2. 星务软件体系结构与运行环境
星务软件不是运行在通用服务器上的普通应用,它必须依托星务计算机这一专用硬件平台,在实时操作系统之上,以任务为基本调度单位,对CPU、内存、总线和存储等有限资源进行严格管理。理解星务软件的体系结构,本质上就是理解“硬件提供什么、操作系统管什么、任务模型怎么描述、资源如何被分配”这条自上而下的支撑链。本节围绕星务计算机架构、实时操作系统、任务模型、资源类型以及星上软件分层与调度接口展开,为后续任务调度算法与资源分配策略打下结构基础。
一、星务计算机架构
星务计算机通常采用“主控CPU+外围接口+存储+总线”的集中式架构。主控CPU承担星务管理、任务调度、遥测遥控处理与故障管理;外围接口包括遥测采集、遥控输出、串行通信、CAN总线、1553B总线等;存储分为程序存储(如PROM/Flash)、数据存储(如SRAM/FRAM)和大容量存储(如NAND Flash)。各功能单元通过内部总线互联,CPU通过总线访问外设寄存器与存储空间。
从软件视角看,星务计算机对外呈现为一组可访问的地址空间与中断源。CPU通过取指、译码、执行完成指令流;中断控制器将外设事件(如遥控到达、定时器溢出、总线错误)汇聚为中断信号,触发操作系统进入中断服务程序。这种“中断驱动+周期任务”的混合执行模式,是星务软件运行环境的基本特征。
二、实时操作系统
星务软件普遍运行在嵌入式实时操作系统(RTOS)之上,典型如VxWorks、RTEMS或国产星载RTOS。RTOS的核心职责包括:任务管理、任务间通信(信号量、消息队列、共享内存)、时间管理(系统时钟、定时器)、中断管理、内存管理和设备驱动管理。与通用操作系统不同,RTOS强调确定性:任务切换时间、中断响应时间、信号量获取时间都必须有明确上界,以保证关键任务在截止时间内完成。
RTOS通常提供抢占式调度,高优先级任务就绪时可立即打断低优先级任务。星务软件利用这一特性,将姿轨控、遥控处理等硬实时任务设为高优先级,将遥测组包、数据存储等软实时任务设为中低优先级,从而在有限CPU资源下满足不同任务的时限要求。
三、任务模型
星务软件中的任务是可被独立调度和分配资源的基本单位。一个任务通常由任务控制块(TCB)、入口函数、优先级、周期/截止时间、堆栈空间和状态组成。任务状态包括就绪、运行、阻塞和挂起。任务模型可分为周期任务、偶发任务和非周期任务:周期任务按固定周期触发,如姿控周期计算;偶发任务由事件触发,如遥控指令到达;非周期任务无固定触发时间,如故障诊断。
任务之间通过信号量、消息队列和共享内存协作。例如,遥控处理任务解析指令后,通过消息队列将参数发送给姿控任务;姿控任务完成计算后,通过信号量通知遥测任务采集数据。任务模型的设计直接决定了调度器能否在截止时间内完成关键任务。
四、资源类型
星务软件可分配的资源主要包括四类:CPU时间、内存、总线和存储。CPU时间以任务执行时间片或优先级抢占方式分配;内存分为静态分配和动态分配,星务软件通常限制动态分配以避免碎片;总线资源包括1553B、CAN等,需按消息帧和时隙分配;存储资源包括程序区、数据区和日志区,需考虑擦写寿命与掉电保护。
资源分配的核心矛盾是“有限资源与多任务需求”。例如,CPU时间被多个周期任务共享,若高优先级任务执行时间过长,低优先级任务可能错过截止时间;总线带宽被多个外设共享,若某设备频繁发送,可能阻塞关键遥测数据。因此,资源分配必须与调度策略协同设计。
五、星上软件分层与调度接口
星上软件通常分为三层:硬件抽象层(HAL)、操作系统层和应用层。HAL封装CPU、总线、存储等硬件差异,向上提供统一寄存器访问与中断注册接口;操作系统层提供任务创建、信号量、消息队列、定时器等系统调用;应用层实现星务管理、姿轨控、遥测遥控等具体功能。调度接口位于操作系统层与应用层之间,应用任务通过调度接口注册周期、优先级和截止时间,调度器据此生成调度表并驱动任务执行。
下面用一张结构图展示星务软件从硬件到应用的分层关系,以及调度接口在其中的位置。
六、调度接口的实际使用
调度接口是应用任务与调度器之间的契约。以某星务软件为例,任务注册时需声明任务名、入口函数、优先级、周期和截止时间。例如,姿控周期任务周期为100ms,截止时间为80ms,优先级为10;遥测组包任务周期为500ms,截止时间为400ms,优先级为5。调度器根据这些参数生成调度表,并在每个周期开始时按优先级顺序激活任务。
实际运行中,调度接口还需处理任务超时和资源冲突。若某任务在截止时间内未完成,调度器可触发超时处理,记录故障并降级任务;若多个任务竞争同一总线,调度接口需配合总线驱动实现互斥访问。这些机制共同保证星务软件在资源受限条件下仍能可靠运行。
综上,星务软件体系结构可概括为“硬件—HAL—RTOS—调度接口—应用任务”五层支撑链。理解每一层的职责与接口,是后续设计任务调度算法和资源分配策略的前提。在实际工程中,还需结合具体星务计算机的CPU主频、内存容量、总线速率和存储寿命,对任务周期、优先级和资源配额进行量化设计,才能形成可运行的星务软件系统。