1、星载固件升级概述:为什么需要在线升级?传统升级方式的痛点

1.1 一个真实的故事:卫星在轨“死机”了

2018年,我参与的一个低轨遥感卫星项目,在发射后第47天出了状况。

卫星的姿控系统突然报错——星敏感器数据异常,姿态计算跑飞了。地面站发了好几轮指令,都没能恢复。说白了,卫星“死机”了。

当时我们分析,问题出在星载计算机的固件里——一个中断优先级配置的bug。在地面测试时从来没触发过,上了天,环境变了,问题就暴露了。

你想想看,一颗造价几千万的卫星,就因为固件里一个小bug,变成了太空垃圾?

嗯,这就是我们今天要聊的话题——星载固件在线升级

1.2 为什么需要在线升级?

我个人的理解是:卫星一旦发射,你就没法再碰它了。不像手机,死机了可以重启、刷机。卫星在天上,你总不能派个工程师上去插USB吧?

在线升级,说白了就是让卫星在天上自己给自己“换脑子”。

具体来说,有这几个场景非它不可:

  • 修复bug:就像我前面说的那个姿控bug。地面测试覆盖不到的场景,在轨运行几个月甚至几年后,迟早会暴露。没有在线升级,这颗卫星就废了。
  • 功能增强:我记得有个项目,卫星上天后,用户突然想加一个数据压缩算法。没有在线升级,就得重新设计一颗卫星。有了它,直接上传新固件就行。
  • 应对空间环境变化:空间辐射、单粒子翻转,这些都会导致固件出错。在线升级可以定期“刷新”固件,就像给电脑重装系统一样。
  • 延长卫星寿命:一颗卫星设计寿命5年,但实际可能运行8年。后期硬件老化、环境变化,都需要固件来“适配”。

核心观点:在线升级不是“锦上添花”,而是“雪中送炭”。没有它,卫星的寿命和可靠性都会大打折扣。

1.3 传统升级方式的痛点

在讲在线升级之前,我们先看看传统方式有多“痛”。

我刚开始做航天固件时,用的还是JTAG调试接口。那时候觉得挺先进的,直到上了项目才发现——

痛点一:物理接触,根本不可能

卫星在轨运行,你不可能打开卫星外壳,插上JTAG线。就算能,线缆长度也够你受的——几百公里长的JTAG线?别开玩笑了。

我曾经在项目评审会上,被一个老专家问:“小张,你这JTAG接口,打算怎么接到天上去?”

全场都笑了。嗯,那是我第一次意识到,航天固件和地面固件完全是两码事。

痛点二:地面测试,覆盖不全

传统方式依赖地面测试来发现bug。但问题是——

  • 空间环境(真空、辐射、温度交变)在地面很难完全模拟
  • 有些bug需要长时间运行才会触发,地面测试时间有限
  • 硬件老化、器件性能漂移,这些地面测试根本测不到

我记得有个项目,地面测试跑了3000小时,一点问题没有。结果上天第3天,固件就挂了。后来分析,是某个电容在真空环境下容值变了,导致时序出问题。

痛点三:升级周期长,成本高

传统方式如果要升级固件,流程是这样的:

  1. 发现问题
  2. 地面修改代码
  3. 重新编译、测试
  4. 等待下一次发射窗口
  5. 发射新卫星替换旧卫星

你算算,这一套下来,少说半年,多则一两年。而且,发射一颗卫星的成本,少说几千万。

说白了,传统方式就是“发现问题→造一颗新卫星→发射”。这哪是升级?这是重新造星啊。

痛点四:风险不可控

传统方式还有一个隐藏痛点——固件烧录过程本身就有风险

我在地面测试时,就遇到过JTAG线接触不良,导致固件烧到一半中断。结果芯片变砖了。还好是在地面,重新烧一次就行。

但如果在天上呢?烧到一半,通信中断了,固件写坏了,卫星就真的变砖了。

避坑指南:我曾经在一个项目中,因为JTAG接口的时序问题,导致固件烧录时偶尔会写错一个字节。这个bug在地面测试时只出现过两次,都被我们忽略了。后来在轨运行中,这个错误字节导致了一个关键参数配置错误,差点让卫星失稳。从那以后,我对固件烧录的可靠性要求变得极其苛刻。

1.4 在线升级的核心挑战

既然传统方式这么痛,那在线升级是不是就完美了?

也不是。在线升级本身也有挑战:

挑战 说明
通信可靠性 星地链路不稳定,数据包可能丢失、错乱
存储空间 星载Flash容量有限,要同时存新旧两份固件
掉电保护 升级过程中掉电,不能变砖
安全性 防止恶意固件注入,要加密和校验
实时性 升级过程中,卫星还要正常工作

这些挑战,我们会在后面的章节逐一攻克。今天先有个概念就行。

1.5 我的建议

如果你刚开始接触星载固件升级,我建议你先想清楚一个问题:

你的卫星,到底需不需要在线升级?

有些小卫星,寿命只有几个月,功能简单,可能真的不需要。但如果你做的是长寿命、高价值的卫星,那在线升级就是刚需。

我个人习惯是:宁可备而不用,不可用而不备。哪怕现在不需要,也把在线升级的接口和框架预留好。万一哪天需要了,你就不用重新设计整个系统。

嗯,这一章就到这里。下一章,我们来聊聊在线升级的几种主流架构,以及它们各自的优缺点。

小提示:本章提到的“传统升级方式”,在航天领域特指“发射前通过JTAG/串口等物理接口烧录固件”。在线升级则是指“卫星在轨运行时,通过星地链路远程更新固件”。这两个概念后面会反复用到,先记清楚。