3. 星务软件体系与实时操作系统
星务软件并不是“把地面程序搬到星上”那么简单。星务计算机同时承担遥测采集、遥控分发、姿态控制、热控、电源管理、载荷调度、时间同步和故障处置等职责,这些任务对时限、可靠性和资源占用的要求差异极大。因此,星务软件通常采用分层结构,把与硬件强耦合的部分、与业务逻辑相关的部分、与任务调度相关的部分分开,再由实时操作系统(RTOS)统一提供任务、中断、时钟和同步机制。理解这套体系,是后续做平台集成与任务验证的基础。
一、星务软件的分层结构
典型的星务软件可划分为四层,自下而上依次为:硬件抽象层、RTOS 内核与板级支持层、星务服务层、应用任务层。硬件抽象层把 CPU 寄存器、存储器、看门狗、1553B/CAN 总线控制器、AD 采集、GPIO 等封装成统一接口,使上层不直接操作寄存器;RTOS 与板级支持层提供任务调度、中断管理、信号量、消息队列、内存管理和时间基准;星务服务层提供遥测遥控组帧、总线通信、时间管理、日志记录、健康监控等公共能力;应用任务层则实现姿轨控、热控、电源、载荷等具体业务。
分层的价值在于“变更隔离”:更换 CPU 或总线芯片时,主要修改硬件抽象层;调整调度策略时,主要修改 RTOS 配置;业务算法变化时,只影响应用任务层。对于星务平台集成而言,这种隔离能显著降低回归验证范围。
二、RTOS 核心机制与任务调度
星务 RTOS 的核心机制包括任务管理、调度、中断、同步与通信、时间管理。任务通常有就绪、运行、阻塞、挂起四种状态。调度器从就绪队列中选择优先级最高的任务运行;当更高优先级任务就绪或当前任务主动阻塞时,触发任务切换。星务中常用抢占式优先级调度,并配合时间片轮转处理同优先级任务。
以某星务平台为例,假设采用 1 ms 系统节拍,任务配置如下:姿轨控任务周期 10 ms、优先级 8;遥测采集任务周期 50 ms、优先级 6;遥控分发任务由中断触发、优先级 9;热控任务周期 200 ms、优先级 4;日志记录任务优先级 2。调度器在每个节拍检查延时队列,将到期任务置为就绪,再按优先级选择运行任务。若姿轨控任务在 10 ms 内未完成,会挤占低优先级任务,因此必须核算最坏执行时间(WCET)。
/* 星务任务配置示例(伪代码,参数为教学假设) */
#define TICK_MS 1
#define PRIO_AOCS 8
#define PRIO_TM 6
#define PRIO_TC 9
#define PRIO_THERMAL 4
#define PRIO_LOG 2
TaskCreate(AOCS_Task, PRIO_AOCS, PERIOD_10MS, STACK_4K);
TaskCreate(TM_Task, PRIO_TM, PERIOD_50MS, STACK_2K);
TaskCreate(TC_Task, PRIO_TC, EVENT_DRIVEN, STACK_2K);
TaskCreate(Thermal_Task, PRIO_THERMAL, PERIOD_200MS, STACK_2K);
TaskCreate(Log_Task, PRIO_LOG, PERIOD_500MS, STACK_1K);
调度可行性可用利用率判断:各任务执行时间与周期之比求和,若小于 1 且考虑中断和内核开销后仍有裕量,则基本可行。例如上述任务若 WCET 分别为 3 ms、2 ms、1 ms、1 ms、0.5 ms,则利用率约为 0.3+0.04+0.005+0.005+0.001≈0.351,留有较大裕量。但遥控任务由中断触发,需单独核算中断响应和嵌套深度。
三、中断管理与星务适配要点
星务中断源包括定时器节拍、1553B/CAN 总线消息、AD 转换完成、看门狗、外部离散量等。中断服务程序(ISR)应尽量短,只做“取数据、清标志、发消息”,把耗时处理交给任务。RTOS 提供中断安全 API,如从中断发送消息队列、释放信号量,并在退出中断时触发调度。
星务适配要点主要有五点:第一,中断优先级与任务优先级要统一规划,避免高优先级中断长期占用 CPU;第二,共享数据要用互斥量或关中断保护,防止遥测组帧读到半更新数据;第三,总线中断要设置超时和错误计数,防止总线异常导致任务永久阻塞;第四,看门狗喂狗应放在关键任务健康检查之后,而不是简单定时喂狗;第五,时间基准要统一到星上时钟,任务周期、时间戳和遥控延时都基于同一时基。
四、集成验证中的观察点
验证 RTOS 适配是否到位,不能只看“程序能跑”。可观察以下指标:任务切换次数与周期是否稳定;中断响应时间是否在预算内;消息队列是否出现持续积压;信号量是否发生优先级反转;看门狗是否被误触发;CPU 空闲率是否合理。若遥测任务周期为 50 ms,但实际时间戳间隔在 48~53 ms 之间波动,说明调度抖动可接受;若出现 70 ms 以上间隔,则需检查是否有高优先级任务超时或中断嵌套过深。
总之,星务软件分层解决“结构清晰”,RTOS 解决“时限可控”,中断管理解决“事件及时”,三者配合才能在星务平台上稳定运行。集成与验证阶段应围绕任务周期、中断响应、共享资源保护和时基一致性建立可检查的证据链。