The increase in the number of commercial space flights over the past decade has sparked renewed interest in engineering careers, especially in EE, ME, CS and software programmer engineers. During Arm DevSummit, a discussion of the ecosystem highlighted the growing interest in the software side of space and similar mission-critical applications.
Keenan Johnson, head of robotics software engineering at Bedrock Ocean Exploration, spoke about his experience in software development at SpaceX, NASA, and electronic aircraft systems and deep sea drones. One of the biggest challenges he saw in developing software for the space industry was the unreliability and high failure rate of applications in the mainstream market. Most people just don’t trust software to work all the time. While a software failure in most consumer applications is annoying, it is often resolved by simply restarting the computer, cell phone, or other devices.
These immediate fixes are great if all that could be lost is the last webpage you visited or some text or even data. But in critical applications like aerospace, restarting is rarely an option. The consequences of software failure in such situations are very high, even fatal.
Arm DevSummit, Keenan Johnson
|Sample code for hardware support.|
Johnson gave an example of why modern software development tools and processes are part of the problem. Consider the case where a software developer needs to code a piece of mechanical hardware as a simple medium. Basically, the task is to create the software equivalent of a hardware medium, that is, a set square. According to Johnson, the challenge of Modern software is that each company creates its own support function and each may be slightly different. In a large project, all of these different but similarly named support functions can be integrated together in one large program as drivers in different operating systems and for a variety of applications.
The problem is, most consumer businesses can’t afford the cost and time to write all software programs from scratch, so they try to use software functions and libraries. other places. Will they all work together? Although testing and verification can reveal problems, this phase of the development cycle is often shortened or reduced due to budget and time constraints.
One might be tempted to say that open source software would solve this problem for aerospace applications because the code is often good and designed to be reused. But as Johnson pointed out during the question and answer session, open source libraries are very rarely used for critical software applications like in SpaceX missions. Code for such projects should generally be written in-house to ensure reliability and freedom from hidden malware or bad code. The only notable exception to open source uses is SpaceX’s adoption of the Linux operating system kernel, a practice not yet adopted by traditional space companies.
Otherwise, the tools used by the SpaceX team were based on C / C ++. The ground station and Crew Dragon spacecraft user interfaces run on Chrome, Johnson said. Chromium is Google’s open source foundation for the Chrome web browser. The use of such open source code raises the question of the reliability of web technology in general.
SpaceX is famous for another reason, namely its use of social media tools like Reddit. There is at least one Reddit “ask me anything” (AMA) channel hosted by a few of the SpaceX team members. These members helped develop and deploy software that piloted Dragon and powered the touch screens during the manned space flight demonstration mission (aka Crew Demo-2). These members freely answer all reasonable questions about Dragon, the software, and working at SpaceX.
SpaceX AMA on Reddit.
Returning to the question of the challenges faced in developing software for space applications, Johnson commented on his vision for the future of programming languages ââin space. He sees that humans are very graphically oriented. No one has yet created a compelling graphical programming interface. As future applications continue to grow in complexity, the need for conceptualization as part of the software development process will only increase.
In its experience, Labview is the only graphical programming language that has had any success. Unfortunately, this is a proprietary and closed environment.
For now, he’s admitted that aerospace software developers can’t go wrong with C and C ++ environments. Python could be used for some applications, but it is not well suited for realtime applications.
Another place Johnson could look for advancements in the reuse, integration and even testing of aerospace software would be to see how these tasks are performed in the highly complex space of semiconductor chips and intellectual property. But maybe that’s a topic for another time.
John Blyler is the editor of Design News, covering the areas of electronics and advanced manufacturing. With a BS in Engineering Physics and an MS in Electrical Engineering, he has years of experience in hardware-software-network systems as a publisher and engineer in advanced manufacturing, IoT and semiconductors. John has co-authored books on systems engineering and electronics for IEEE, Wiley, and Elsevier.