xoid вот кстати на тему софта у Спейс Икс из недавнего АМА про то, что вы спрашивали
- There were rumors about Crew Dragon UI running in Chromium (wrapped in Qt), is that true? If so, why did you go with web tech instead of straight up native/Qt UI?
- That's correct, we do use Chromium as the rendering engine for the displays UI. This project started as a simulator prototype to showcase the design vision to NASA. We then attempted to run it on a flight hardware and with modifications it worked pretty well. We gained more confidence in that stack as we developed the prototype and we then designed the Flight Software around it with that in mind. We liked all the moderns features that comes in with browsers out of the box, we also liked having access to talent that is already trained in that stack. Perhaps we are not afraid of doing things slightly differently here in SpaceX. We like taking a first-principles approach to problem solving, as opposed to just relying upon industry standards.
- What is your Linux distro?
- We don't use any off-the-shelf distro – we have our own.
- As far as we know now, your rockets runs on Linux - but which “mainstream” distribution is closest to your kernel?
- Yes, we run Linux, with the PREEMPT_RT patch applied in order to get better real-time performance. We don't use any third-party distribution, but maintain our own copy of the kernel and associated tools. We have made small changes to the kernel over the years, although it is mostly unmodified. The only exception to that is the addition of several custom drivers to interface with our hardware. We use a variety of hardware architectures. I can't go into much detail other than to say it is a distributed system made up of many individual computers.
- I've seen articles mention SpaceX using Linux. What systems use it? What steps do you take to ensure real-time operation and how deterministic are the systems?
- All of our on-board computers either run Linux (with the PREEMPT_RT patch) or are microcontrollers that run bare-metal code. For applications running on Linux we are careful to set up the process and kernel thread priorities correctly to avoid priority inversions. We also generally write our code in a way that maximizes determinism, such as avoiding memory allocation at runtime or unbounded loops. Finally, we have telemetry which indicates the performance of all our processes to ensure that they always meet their deadlines across all phases of flight, even in the presence of unexpected or excess inputs.
А еще там в комментах кинули ссылку на статьи НАСА про использование Линукс в качестве RTOS и в системах связи:
Human-in-the-loop (HITL) simulation groups at NASA and the Air Force Research Lab have been using Linux as a real-time operating system (RTOS) for over a decade. More recently, SpaceX has revealed that it is using Linux as an RTOS for its Falcon launch vehicles and Dragon capsules. As Linux...
Starting in the early 2000s, human-in-the-loop (HITL) simulation groups at NASA and the Air Force Research Lab began using the Linux network stack for some real-time communication. More recently, SpaceX has adopted Ethernet as the primary bus technology for its Falcon launch vehicles and Dragon...
зы. Забавно, что их там несколько раз спрашивают про архитектуру используемых процессоров и никаких ответов. Видимо один из секретов.