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

Last Updated:

Nov. 1, 2021

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.

Last Updated:

Nov. 1, 2021

Use watchdog timeouts liberally to prevent the software from hanging and provide a "safety valve" for the software to trap and handle errors.

Last Updated:

Nov. 1, 2021

Work with hardware engineers to design software such that if a failure or fault occurs, the root cause can be derived from telemetry.

Last Updated:

Nov. 1, 2021

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.

Last Updated:

Nov. 1, 2021

Pair senior programmers with junior ones whenever possible to facilitate mentoring and transfer of institutional knowledge.

Resources

GitLab

Software Tool
GitLab

Last Updated: June 22, 2021

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.

Last Updated: June 22, 2021

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.

Last Updated: June 16, 2021

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.

FreeRTOS

Software Tool
Open Source / Amazon Web Services

Last Updated: June 16, 2021

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."

RTEMS

Software Tool
Open Source

Last Updated: June 22, 2021

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.”

VxWorks

Software Tool
Wind River Systems

Last Updated: June 22, 2021

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.

core Flight System

Software Tool
NASA

Last Updated: June 15, 2021

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.

Last Updated: June 22, 2021

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.

F Prime

Software Tool
NASA

Last Updated: Nov. 11, 2021

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.”

GitHub

Software Tool
GitHub

Last Updated: June 16, 2021

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.

Bitbucket

Software Tool
Atlassian

Last Updated: June 22, 2021

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.

Last Updated: June 22, 2021

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.

Software Development Standard for Space Systems

White Paper
Aerospace Corporation

Last Updated: June 17, 2021

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.

This guidebook is a "collection of of recommended best practices and ready references to expedite research ... and technology (R&T) development projects" for NASA's Small Spacecraft Technology (SST) program. This resource is specifically targeted at SST projects; however many of the sections include best practices that can be valuable to a general smallsat audience. This section of the guidebook addresses software engineering, assurance, and management.