MCF > Detailed Design and Analysis > Flight Software >

Development

Scope and Description

This topic covers development of smallsat flight software. This includes testing of all software running on the flight computer and responsible for command and data handling (C&DH) for the entire spacecraft - from the operating system to the application layer. Software flaws are one of the most common sources of on-orbit failure in small satellites. Therefore, development of robust and reliable flight software is an essential component of any smallsat development effort.

Resources in this topic area are primarily real-time operating systems and associated frameworks for developing flight software, tools for version control, and tools for management of development processes.

Best Practices and Lessons Learned

  • In addition to the performance of the code, quality software is well commented and has good documentation/user guides to ensure survival of lost personnel.
  • Pair senior programmers with junior ones whenever possible to facilitate mentoring and transfer of institutional knowledge.
  • Save effort by holding off coding until later in the project lifecycle (e.g., after the preliminary design review). This will ensure that the key issues are fully understood before finalizing software requirements. Deciding to code with only a fraction of the requirements finalized may cause expensive, time-consuming rewrites especially if the architecture of the software has to be torn up and reworked.
  • Work with hardware engineers to design software such that if a failure or fault occurs, the root cause can be derived from telemetry.
  • Use watchdog timeouts liberally to prevent the software from hanging and provide a "safety valve" for the software to trap and handle errors.
  • Break down software into simple, testable modules and minimize logical paths within each to make testing with complete code-coverage easier. Build a reusable module whenever an action is repeated - do not repeat yourself.
  • Develop and strictly follow good procedures for revision control, bug tracking, testing, and review of all code.
  • Make telemetry functions configurable such that the type and frequency of telemetry data can be adjusted on-orbit.
  • Develop and strictly follow good procedures for revision control, bug tracking, testing, and review of all code.
  • Strongly consider instituting Agile approach to software development.
  • Build in software features and procedures to support on-orbit patches and software updates.

Resources

This article thoroughly compares six different flight software frameworks for use on the 6U cubesat VCUB1 ... developed by Visiona Space Technology S.A. A variety of mission software criteria were developed to compare these frameworks, including software code and documentation, flight heritage, size, and quality. Smallsat teams can use this article to compare flight software frameworks to find the best solution for their specific needs.

White Paper
NASA

A web-based software engineering handbook designed to provide guidance for the implementation of safe ... and reliable software on satellite projects. This handbook includes software engineering resources such as NASA standards, guides, lessons learned, and references for acquiring, developing, and maintaining NASA software systems.

This annual state-of-the-art report from NASA provides an assessment of the current state of the smallsat ... industry, guidance, and best practices for all aspects of the smallsat development life-cycle. In this section, titled "Flight Software", computer processor types, frameworks, application programming interfaces (APIs), and more software tools and products are discussed.

Software Tool
Open Source / Amazon Web Services

From the 2020 NASA State of The Art of Small Spacecraft Technology Report: "FreeRTOS is a small, real-time ... operating system kernel designed for embedded devices. It is open source and released under the MIT license. FreeRTOS is designed to be small and simple; however, it lacks some of the more advanced features found on larger operating systems. FreeRTOS has been used on several CubeSat projects where memory is limited."

Software Tool
Open Source

From the RTEMS.org website: “the Real-Time Executive for Multiprocessor Systems or RTEMS is an open source ... Real Time Operating System (RTOS) that supports open standard application programming interfaces (API) such as POSIX. It is used in space flight, medical, networking and many more embedded devices. RTEMS currently supports 18 processor architectures and approximately 200 BSPs. These include ARM, PowerPC, Intel, SPARC, RISC-V, MIPS, and more.”

Software Tool
Wind River Systems

VxWorks is known as the industry-leading real-time operating system (RTOS) used on high reliability satellites, ... aircraft, and robotics. It has been used on multiple NASA missions for over two decades and has numerous circuit board support packages for early-stage prototyping and the development of software.

Software Tool
NASA

A web-based platform that combines a dynamic run-time environment, layered software, and a component-based ... design to solve the issue of rapidly increasing software development costs and schedules. This tool aims to solve the challenge of software growth and complexity by providing software engineers with a reusable flight software application that can be used for any number of NASA flight projects.

Article
Robert L. Bocchino Jr. et al.

This article presents an overview of the F Prime (F') open-source software framework and its specific ... use-case for small-scale flight systems. F' is used for rapid development and deployment of embedded systems and spaceflight applications. This article discusses the F' architecture and how it is used to develop flight software for low-cost smallsat missions.

Software Tool
NASA

From the 2020 NASA State of The Art of Small Spacecraft Technology Report: “F’ is a software framework ... for rapid development and deployment of embedded systems and spaceflight applications. Originally developed at JPL, F´ is open source software that has been successfully deployed for several space applications. It has been used for, but is not limited to, CubeSats, SmallSats, instruments, and deployables.”

Software Tool
GitHub

GitHub is a cloud-based software tool where software developers can store and manage their source code. ... It is a free tool that allows software teams to host, collaborate, and organize code using private or public repositories. GitHub is the largest host of source code in the world and can be used by smallsat teams to develop flight software and embedded software/firmware.

Software Tool
GitLab

GitLab is a free and open-source cloud-based software tool used for managing, issue-tracking, and continuous ... integration of software throughout the DevOps lifecycle. GitLab is a great code management tool that smallsat software developers can use to collaborate and manage the software development process.

Software Tool
Atlassian

Bitbucket is Atlassian's cloud-based, open-source code management system that can easily integrate into ... its software suite of tools. Bitbucket is a great solution for teams that require additional collaborative tools such as scheduling, design, and document sharing.

This journal article discusses the utility of designing reuseable flight-control software to mitigate ... risk of failure. It provides an overview of a specific educational cubesat mission presents a design approach to developing cost-effective and reliable flight software.

White Paper
Aerospace Corporation

This resource provides general and detailed requirements for software development on space systems. This ... document covers design, development, integration and testing for flight software and embedded software/firmware.

Standard
NASA

This NASA guidebook provides software safety procedures and guidance for the development and quality ... assurance of safety-critical software. This resource also provides software acquisition guidance for both commercial off-the-shelf (COTS) software and software developed under contract.

Get Involved