Skip to main content

Software

Satellites run real-time flight software that manages all onboard operations: attitude control, power management, communication, and payload data processing. The software must be deterministic (predictable execution time), fault-tolerant (recover from radiation-induced errors), and portable (run on different processors and operating systems).

Flight Software Frameworks

Several frameworks exist for structuring flight software:

FrameworkAgencyOpen sourceArchitectureTarget scaleNotable missions
cFSNASA GoddardYes (Apache 2.0)Layered (PSP → OSAL → cFE), app-based, pub-sub Software BusMedium to largeGPM, Lunar Gateway, Roman Space Telescope
F PrimeNASA JPLYes (Apache 2.0)Component-based, port connections, code generationSmall (CubeSats, instruments)Ingenuity Mars Helicopter, ASTERIA
OSRA/SAVOIRESASpec public, impl proprietaryReference architecture, Eclipse toolingMedium to largeEuropean institutional missions
KOSMOSCNESNo (institutional)Modular, pre-qualified components (ECSS Level B)Medium to largeCNES missions since 2019

LeoDOS uses cFS — the only open-source framework with heritage on large missions and a layered architecture that separates hardware, OS, and application concerns. See Core Flight System for details.

Real-Time Operating Systems

Flight software runs on a real-time operating system (RTOS) that provides deterministic scheduling — tasks run at guaranteed times with bounded latency.

RTOSLicensePOSIXDeterminismUse case
VxWorksCommercialPartialHard real-timeMost widely used RTOS in space
RTEMSOpen source (BSD)YesHard real-timeESA and NASA missions, growing adoption
LinuxOpen source (GPL)YesSoft (hard with RT patches)Development, COTS hardware, payload processing

cFS abstracts the OS through OSAL, so the same application code runs on any of these without modification. LeoDOS develops on Linux and targets RTEMS or VxWorks for flight.

LeoDOS

LeoDOS applications are written in Rust and compiled as C-compatible shared objects that the cFS executive loads like any other app. Rust provides memory safety without a garbage collector — critical on processors with no MMU where a wild pointer can corrupt any address. The Rust code links against leodos-libcfs, which provides safe wrappers around the cFE, OSAL, and PSP APIs.