关于 SpaceX 使用的硬件和软件
上周末,两名 NASA 宇航员,Bob Behnken 和 Doug Hurley,搭乘商业公司 SpaceX 的载人 飞船成功进入国际空间站。这一壮举不但恢复了 NASA 中断近十年的载人发射,也点燃了世 人对重温半个世纪之前的登月计划的狂野热情——人类迈向火星似乎已是指日可待。让人类成 为星际物种的愿景看来并非天方夜谭。
这一切的实现不只需要热情,更需要科学知识和工程技术。那么,SpaceX 究竟使用了什么 硬件和软件?“猎鹰”火箭和“龙”太空舱都有哪些黑科技?
由于太空技术很大程度上就是火箭技术,而火箭技术具有高度的机密性——确保它不被别有用 心的人滥用。因此,SpaceX 的技术属于美国的国家机密,我们无法知道详情。但是, SpaceX 在 2015 年做过一次技术问题任意答,很多东西应该没有过时。我们可以以此展开, 让大家对猎鹰火箭和龙太空舱以及 SpaceX 地面控制中心的技术有一点管中窥豹的了解。
首先,我们来熟悉一下太空飞行的背景知识。
发射火箭除了有非常高的温度,还要经历很高的加速度和剧烈的振动,这个本身就对系统的 硬件和软件有很高的要求。软件和硬件在这个阶段的错误会直接导致任务失败,这会造成非 常大的损失。
火箭任务完成之后,太空舱进入地球轨道。此时,软硬件的运行环境也是非比寻常。阳光直 射时,舱体温度可达 120 摄氏度;进入地球阴影后,温度降至零下 150 摄氏度。软硬件在 这些情况下,都要保证高度可靠的运行才能使太空舱准确就位、完美对接。
太空中最常见也是最厉害的影响是辐射。无论是来自地球磁场的电磁辐射,还是来自太阳系和系 外的高速粒子流辐射,都可能击中太空舱的处理器和存储器。被辐射击中的后果就是发生 “位反转”——原本是 1 的地方变成了 0,而是 0 的地方变成了 1。位反转直接就是计算结 果错误,后果当然是灾难性的。
了解了这些风险,我们就不难理解长期以来太空设备使用的硬件都是特制的和昂贵的,因为 它们需要抵抗的风险是特别的和高难度的。在这些硬件上的软件开发也需要特定的工具乃 至开发环境和语言,所以成本和难度也很高。
SpaceX 的大胆创新之处在于敢使用经济易得的大规模商业化硬件,一举解决软硬件成本居 高不下的两个难题。根据 SpaceX 的技术介绍,无论是猎鹰火箭还是龙太空舱,它们搭载的 基本计算机单元都是被称为是“三重保险”的计算机组合。如图,
每个组合由三个双核 x86 处理器组成。每个核都独立运行相同的 GNU/Linux 系统,并且可 以互相校验。如果某个处理器的两个核的计算结果不一致,那么该处理器的结果被判断为错 误,它不能输出结果,并被重启。如果三个处理器的结果都为错误,那么该组合不能给出结 果;此时,系统的操作需要由其他相关的计算机组合的计算结果决定。
根据 2012 年的数据,猎鹰火箭有 5 个这样的三重保险系统,总共 30 个核在独立运行。 龙太空舱有 9 个这样的系统,总共有 54 个核在独立运行。而今,无论单核的能力,还是 总体核的数目,我们相信都有了大幅的提高。
我们已经说了 SpaceX 使用的是 GNU/Linux 系统,能够很好地适应 x86 的硬件,也能够找 到足够多的优秀开发人员。SpaceX 的开发人员在 x86 硬件和 GNU/Linux 系统组成的平台 上自主开发应用框架和应用程序。他们主要使用 C/C++ 语言编写软件。
除了空中软件,SpaceX 还需要大量地面软件,包括通讯工具、数据分析工具、模拟器、测 试工具和控制台等。他们使用的开发环境是国家仪器的 LabVIEW。该工具支持大量的数据采 集硬件,具有数据处理和流转的成熟体系,开发可视化程度很高。
由上可见,SpaceX 采用的是非常普通的常用芯片,搭载“三重保险”架构,保证系统在太 空环境下的稳定性和可靠性。软件系统也采用有着非常好开发生态的 GNU/Linux 系统,并 使用社区积累深厚的 C/C++ 语言。这些都使 SpaceX 的成本降低,有利于其进行大量的实 际测试。
航天测试实际投入很大。采用易得的硬件可以保证 SpaceX 在地面构建多个实际的火箭和太 空舱测试台——完全按照实际的设计在地面上部署测试硬件,并使软件、数据、模拟器等开发 和测试并行,充分考虑能想到的各种情况——包括随机下电测试:SpaceX 的测试台架需要保 证随时被关掉而重启后不会发生故障,保证在太空中的紧急情况下还有恢复的可能性。
技术的考虑听起来有些啰嗦,远没有科幻电影里的太空漫步那么引人入胜。然而,没有科学 家、工程师、技师、宇航员们的认真准备和一丝不苟的计划、设计、开发和测试,人类飞向 更远太空的梦想就无法实现。大胆创新,降低成本,让每个人都成为未来的太空旅行者。