0

Edited for clarity:

With reliability and fault-tolerance being extremely important, are there any specific Linux distros (or perhaps types of Linux distros) recommended for running high-reliability C++ software?

I am developing C++ software to perform some simple tasks (reading serial-input data, setting logic highs and lows on output pins, taking video (and saving), and some floating point mathematics) aboard a Blue Origin rocket. The software will be running on Linux.

Thank you for your knowledge and experience.

  • It really depends what you're doing. "simple" covers so many different areas... – samuelnj Nov 16 '17 at 04:29
  • Reading serial data, setting logic highs and lows on output pins, taking video (and saving), and some floating point mathematics. –  Nov 16 '17 at 04:55
  • You rarely see spaceflight software written in C++ for the express reason that much is hidden behind abstraction. The language of preference has traditionally been FORTRAN though in 1989 NASA (through then contractor McDonnell Douglass) did a port of SVDS (spaceflight vehicle dynamic simulator - used to model ascent loads on/in the shuttle) to C. Of primary concern in any mission critical software is the ability to validate (and re-validate) every instruction. At the time C++ was a simple twinkle in the eye of what it has become, but it was consciously avoided. – David C. Rankin Nov 16 '17 at 05:57
  • An interesting side note, SVDS grew out of a program originally created for ICBMs. To dig a bit further into spaceflight modeling, do a search on *"squatcheloid"*. – David C. Rankin Nov 16 '17 at 06:02
  • 4
    No point in excess reliability of subsystems. Linux is reliable enough for a Pi. A pi isn't reliable enough for critical flight tasks. – MSalters Nov 16 '17 at 07:42
  • I would agree with @MSalters. Linux is plenty reliable, but if you're worried about reliability dont use a Pi. If you really want reliability put it on more specialized hardware, with a custom built linux image with only the exact libraries/packages that you need. – samuelnj Nov 16 '17 at 17:00
  • Thank you for pointing that out; the Pi is only acceptable since this is a self-contained, experimental payload, and I thought it may ease development & integration. Hardware recommendations are also very welcome. Thank you for pointing out that C++ can introduced opacity in the SW verification process; that is quite true. Iterating on the last thought, I am comfortable with expressing high-level constructs and trusting the compiler. –  Nov 18 '17 at 22:35

1 Answers1

2

A company called Astronoutics is producing displays for airplanes. They have an "Electronic Flight Book" product on the Boing-787 dreamliner. Their main appeal is the ability to run two sets of applications. Highly reliable applications, which the pilot is allowed to rely on (certified applications) as well as uncertified applications, running on the same display.

In order to achieve this feat, their displays have two computers in them. One is running a certified operating system, and the other can run anything at all (usually Windows).

The certified OS they are running is Linux. It is not, however, your vanilla Linux. It is greatly stripped down version, with just enough functionality for what they need and no more. This is because the certification process itself is very expensive, and the number of lines greatly affects this.

So you can run Linux in high reliability environments, but it's not the usual Linux.

Shachar Shemesh
  • 8,193
  • 6
  • 25
  • 57
  • Thank you for the insight. Do you have specific examples to point to (modified Linux kernels for aerospace-level reliability, etc.)? –  Nov 18 '17 at 22:38
  • I think there are companies that sell versions of Linux they got certified. I can't give you names, though. – Shachar Shemesh Nov 19 '17 at 08:31