SpaceX如何使用Linux、Chromium、C++和开源库

2020-06-07 07:47:26

在糟糕的一年里,这是一个伟大的时刻。5月30日,SpaceX的“龙”机组成员成功地将NASA宇航员鲍勃·本肯(Bob Behnken)和道格·赫尔利(Doug Hurley)送入轨道。这是有史以来第一艘私人载人飞船,也是九年来首次美国载人航天飞行。搭载它们的是SpaceX的可重复使用的猎鹰9号,该猎鹰9号由火箭燃料和Linux驱动。

与超级计算机、物联网(IoT)设备和许多关键任务设备一样,猎鹰9号搭载Linux操作系统。SpaceX的软件工程师几年前就解释了猎鹰9号程序的工作原理。

飞行软件团队大约有35人。我们为猎鹰9号、蚱蜢(猎鹰9号测试火箭)和Dragon应用程序编写所有代码;并在这些飞行器上进行核心平台工作;我们还编写模拟软件;测试飞行代码;编写部署在我们地面站的通信和分析软件。我们也在任务控制中心工作,以支持现役任务。

猎鹰9的机载操作系统是一个精简版的Linux,运行在三个普通的双核x86处理器上。飞行软件本身在每个处理器上单独运行,并用C/C++编写。

普通吗?是的,很普通。你看,宇宙飞船的CPU远不是最新最好的。它们是为宇宙飞船开发的,从起草到发射需要几年甚至几十年的时间。例如,国际空间站(ISS)运行在1988年老式的20 MHz Intel80386SX CPU上。然而,我们不知道猎鹰9号使用的是什么芯片。不过,他们的设计可能比你现在在百思买(Best Buy)买的东西至少老了十年。

当然,虽然这些古老的芯片适用于空间站的命令和控制多路分解器(C&Amp;C MDM),但它们对其他任何东西都没有太大的好处。在日常工作中,宇航员使用运行Debian Linux、Science Linux和Windows 10的HP ZBook 15。Linux系统充当C&;C MDM的远程终端,而Windows系统用于电子邮件、网络和娱乐。

然而,通常情况下,进入太空的芯片不是普通的芯片。留在太空的CPU必须是防辐射的。否则,由于电离辐射和宇宙射线的影响,它们往往会失败。这些定制的处理器在获得太空飞行认证之前,要经过多年的设计工作和更多年的测试。例如,美国国家航空航天局(NASA)预计其下一代通用处理器,即你可能从树莓PI 3中知道的ARMA53变种,将准备好在2021年运行。因为猎鹰9号的第一级自行着陆,所以它的芯片不需要进行抗辐射处理。

为什么是三个处理器?这是因为,正如StackExchange太空探索所解释的那样,SpaceX使用演员-法官系统通过冗余来提供安全保障。在这个系统中,每次做出决定时,都会将其与其他内核的结果进行比较。如果有任何不同意见,该决定将被推翻,该过程将重新开始。只有当每个处理器都得到相同的答案时,才会向PowerPC微控制器发送命令。

这些控制器为火箭发动机和栅格鳍发号施令,它们从每个x86处理器获得三个命令。如果所有三个命令字符串都相同,则微控制器执行该命令,但如果三个命令字符串中有一个是错误的,则控制器将使用之前正确的最后一条指令。如果事情完全出错,猎鹰9号就会忽略失火的芯片命令。

这种三重冗余的意义在于提供所需的容错能力,而不必为昂贵的空间专用芯片买单。现代飞机,如较新的空中客车飞机,在其电传系统中使用类似的方法。

在看到飞行之前,SpaceX会在桌面上测试其飞行软件和硬件。在那里,他们可以运行飞行模拟,完全没有灾难性的故障,而不会损失一枚火箭。

“龙”号飞船也运行Linux操作系统,飞行软件是用C++编写的。这艘船的触摸屏界面是使用Chromium和JavaScript渲染的。如果界面出现故障,宇航员有物理按钮来控制航天器。

因此,部分得益于Linux,我们回到了美国的载人航天事业。而且,企鹅似乎可以飞起来,背后有足够的火箭动力。