【问题标题】:Languages used to write programs for satellite-missions?用于编写卫星任务程序的语言?
【发布时间】:2010-02-22 18:59:48
【问题描述】:

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

【问题讨论】:

  • 控制丰田油门和刹车系统的语言怎么样?
  • @DOK 我在 lwn.net 上的相关讨论帖中写的评论:lwn.net/Articles/374618
  • 谢谢大家,这真的很有趣:)
  • 这绝对取决于“保证水平”,即“当软件崩溃时你有多崩溃”?例如。对于Galileo 2004 年的高保证等级(Software Development Assurance Level,SW-DAL)“DAL A”的意思。 C(希望是 MISRA 子集)、Ada、Assembler 和许多用于审查和检查的流程。向下到“DAL D”允许您使用 C++,而“DAL E”(失败是耸耸肩并重新启动),您也可以使用 Java。如果有正当理由,承包商可以提出其他语言。我希望如此,我不想在 C 中看到愚蠢的脚射,而 Esterel 是正确的工具。

标签: programming-languages satellite


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      除了已经提到的可能性之外,至少one spacecraft 在部分飞行中是由用 Lisp 编写的软件控制的。

      【讨论】:

        【解决方案4】:

        我可以告诉你Mars Rover had at least some C++ code(PDF 链接);他们使用了 Rogue Wave 的Tools.h++ library

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              【解决方案7】:

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

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

              【讨论】:

                【解决方案8】:

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

                【讨论】:

                  【解决方案9】:

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

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2010-12-09
                    • 1970-01-01
                    • 2010-10-01
                    • 2013-12-21
                    • 1970-01-01
                    • 2013-12-19
                    • 1970-01-01
                    相关资源
                    最近更新 更多