19

只是出于兴趣,我们知道制造卫星涉及很多程序。它们是用哪些语言编写的?

4

9 回答 9

18

我参与的 NASA 卫星任务使用了所有用于机载软件的汇编语言。NASA 强烈倾向于使用具有传统的飞行软件——重复使用在先前任务中具有成功历史的组件(硬件和软件)。因此,我们通常不是在最新、最强大的处理器上使用编译代码,而是在弱小但经过验证的处理器上使用手工编码的汇编。例如,THEMIS 项目建于 2003 年并于 2007 年启动,运行在英特尔 8085 处理器上,具有手动编码的组装模块,这些模块继承了 WIND、CLUSTER 和 STEREO 等先前任务的传统。

于 2010-02-22T20:14:31.440 回答
5

由于它们具有连接到各种 I/O 外设的自定义架构,因此应使用 C/C++ 或直接在 ASM 中进行编程,以获得更好的性能和优化。

它们是完全定制的,所以我认为没有其他方法可以解决这个问题,还认为它们必须使用非常低的能量(并且必须由太阳充电)所以它们往往没有那么强大的硬件并且必须真正优化(这就是 ASM 的方式)。你不应该浪费任何一个 CPU 周期!

最后,连接到卫星的设备类型非常少见,所以我认为很难使用任何类型的标准 API 进行接口(如 RS232 等),我认为它们在每种情况下都是不同的。

我不会惊讶地发现许多像Z80这样的旧芯片在卫星上做脏活,只是因为它们的功能足够强大,可以完成简单的任务,尽管它们的 8 位总线!

于 2010-02-22T19:05:13.340 回答
4

除了已经提到的可能性之外,至少有一艘航天器在其部分飞行中由用 Lisp 编写的软件控制。

于 2010-02-22T19:15:04.460 回答
2

我可以告诉你,火星探测器至少有一些 C++ 代码(PDF 链接);他们使用了 Rogue Wave 的Tools.h++ 库

于 2010-02-22T19:03:13.763 回答
2

这里提到了 C、C++ 和 Ada (是的,作者不能将“Ada”大写)。C 代码可以手工编写或从Scade生成。

于 2010-02-22T19:08:55.877 回答
1

与任何其他软件努力一样,考虑到各种有效的业务和 IT 驱动程序,用于在卫星中执行某些功能的语言将是最合适的语言。

如果您环顾四周,您会发现航空航天中使用的不同语言的示例。鉴于您的问题,您可能想看看Ada,它通常被称为在“实时系统”中使用,这是一篇新闻文章,因此效果在这里,一些非国防用户在这里列出。

于 2010-02-22T19:04:42.670 回答
1

NASA 和洛克希德公司使用的大多数操作语言都以统计和微积分为中心。因此意味着 MATLAB、haskell、Erlang 和 scala。MATLAB 和 Erlang 是需要配置的主要工具。

虽然事物的硬件端将围绕 Assembly、C 和 Verilog。

于 2015-10-09T15:21:43.197 回答
1

NASA 使用多种语言,并且根据其用途和使用地点而有所不同。为某些计算和某些脚本编写的程序主要是使用 python 编写的。地面仪器和地面控制的程序是使用 C、C++、Ada 等编写的。为机载仪器和硬件编写的关键程序大多是用汇编语言编写的,因为它可以对硬件进行最大程度的控制,而且一些旧语言也是卫星上使用的许多硬件都是旧技术(这并不意味着它们已经过时,因为没有它们就无法实现某些功能)和其他语言,如 MatLab、Visual Basic 也用于科学计算。

于 2016-04-22T14:53:36.977 回答
-1

你不能对所有系统只使用一个程序,大多数情况下他们使用 Matlab 和 P

于 2020-07-12T21:10:07.337 回答