4 ms·
I remember reading here a document about C programming guidelines for military / space software ( basically no dynamic memory allocation ever), but that was set
by bsaul 8y ago
I remember reading here a document about C programming guidelines for military / space software ( basically no dynamic memory allocation ever), but that was set a long time ago. I wonder if spaceX reinvented some parts of the software stack, or if they went along the traditional way.
I don’t expect seing rust code in the shuttle, but maybe formal proof with custom functionnal languages...
- danpalmer 8y agoFrom what I understand, they are pushing the boundaries on the hardware front, i.e. relatively recent, typical Linux computers onboard, and just relying on having a few redundant ones and short flight times, rather than very radiation hardened systems like those used in satellites or real-time operating systems. However on the SpaceX software side I think they’re fairly conservative and “boring”, so I’d guess C and similar guidelines to what you’ve mentioned.
- biesnecker 8y agoI'd be surprised if they were able to be human flight certified without all the redundancy and hardening that any other manned spacecraft has, though.
- gpm 8y agoFor example, my understanding is that the redundancy approach is basically "do everything on 3 computers, vote on the outcome".
- creatornator 8y agoSometimes you even have different firmware/software teams write code for each of the three different configurations (often targeting different processors/architectures, etc). Pretty cool
- JshWright 8y agoYou can "skimp" on hardening if you use more redundancy (which is generally cheaper, and often lighter (which is the real cost savings)).
- danpalmer 8y agoYou can also skimp on hardening if the operational lifetime in space is minutes to days, instead of months to years like most satellites.
- mandeepj 8y agoThey build everything in-house - software and hardware. You can read about it in detail in Musk's biography - https://www.amazon.com/Elon-Musk-SpaceX-Fantastic-Future-ebook/dp/B00KVI76ZS https://www.amazon.com/Elon-Musk-SpaceX-Fantastic-Future-ebo...
- elteto 8y agoThe flight software team did a reddit AMA a while back [0]. They use C++ for writing the flight software (what flies falcon, dragon, etc) running on a customized RT Linux. [0] https://www.reddit.com/r/IAmA/comments/1853ap/we_are_spacex_software_engineers_we_launch/ https://www.reddit.com/r/IAmA/comments/1853ap/we_are_spacex_...
- monocasa 8y agoAnd FreeRTOS. RTLinux is only barely soft realtime.
- avmich 8y ago> RTLinux is only barely soft realtime. Linux used to run as a non-privileged process in hard real-time kernel, which taken together was guaranteeing responses in nanoseconds range. If this is still the case (along with what Wikipedia states) , the whole system is by definition hard real-time.
- solarkraft 8y agoBut only the underlying kernel part is actually real-time, the Linux process wouldn't be, right? That leads me to the question: Shouldn't all things in a rocket be real time? Are they "post-poning" stuff like telemetry and other communications?
- avmich 8y agoAll critical processes can run outside of Linux, in hard real-time fashion. Linux is used for non-critical things, like networking... The whole RTLinux includes Linux (non-RT part) and a hard RT part, for which you can write your code.
- monocasa 8y agoWow, that's really silly that someone went out, made a hard realtime system using Linux as the lowest priority level, and then called it RTLinux. RTLinux for years had meant Linux with the PREEMPT_RT patches. In any case, SpaceX doesn't use Linux for hard realtime systems. > They do not have hard realtime requirements https://lwn.net/Articles/540368/ https://lwn.net/Articles/540368/ And I probably wouldn't use the RTLinux for a real hard realtime system if I were making the choice. Putting all of the realtime code in the same memory domain as the rest of the Linux kernel is a huge surface area for corruption. I'd probably use sel4 with a virtualized Linux to get the same semantics.