The framework code.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gaisser 2f511523cb Merge pull request 'Apollo Sojus Test Project Version 1.0.0' (#408) from development into master 2 weeks ago
action added all coverity fixes 4 weeks ago
container added all coverity fixes 4 weeks ago
contrib/sgp4 renormalized line endings 8 months ago
controller implemented explicit virt abstract propagation 2 months ago
coordinates msvc tests 5 months ago
datalinklayer correct preprocessor define now used 4 months ago
datapool added all coverity fixes 4 weeks ago
datapoollocal added all coverity fixes 4 weeks ago
defaultcfg small improvements 3 weeks ago
devicehandlers avoid duplicate printout 2 weeks ago
doc another rwadme update 2 months ago
events added all coverity fixes 4 weeks ago
fdir type and name change for HasParametersIF 3 months ago
globalfunctions added all coverity fixes 4 weeks ago
health added all coverity fixes 4 weeks ago
housekeeping more tests 2 months ago
internalError pool read guard in scope 2 months ago
ipc typo fix 4 weeks ago
logo Added the new logos, colors are WIP at the moment 5 months ago
memory reordered returnvalues 2 months ago
modes Merge branch 'development' into mueller/cmake-init 5 months ago
monitoring type and name change for HasParametersIF 3 months ago
objectmanager added srv20 written by J. Gerhards 3 months ago
osal small fix for linux printout 2 weeks ago
parameters checking returnvalue now 2 weeks ago
power corrections 2 months ago
pus added all coverity fixes 4 weeks ago
returnvalues updated HasFileSystemIF 2 months ago
rmap clened up a bit 5 months ago
serialize calling empty ctor now (coverity) 3 weeks ago
serviceinterface cyan instead of magenta for debug now 4 months ago
storagemanager mutex guard instead of helpe 2 months ago
subsystem Added comments in AssemblyBase and SubsystemBase 2 weeks ago
tasks more doc 2 months ago
tcdistribution updated distributor modules 4 weeks ago
thermal Just comments 2 weeks ago
timemanager bugfix found by coverity 2 weeks ago
tmstorage updated tm storage 5 months ago
tmtcpacket correct preprocessor define now used 4 months ago
tmtcservices added all coverity fixes 4 weeks ago
unittest newline removed 2 months ago
.gitignore Added .gitignore for eclipse project files 3 years ago
.gitmodules unittest now contained directly 7 months ago
CHANGELOG removing whitespaces 2 months ago
CMakeLists.txt Small patch for CMakeLists file 4 weeks ago
FSFWVersion.h bumped version to 1.0.0 4 weeks ago
LICENSE updating code from Flying Laptop 3 years ago
NOTICE Added the new logos, colors are WIP at the moment 5 months ago added new reamde file stubs 4 months ago updated .mk support 4 months ago


Flight Software Framework (FSFW)

The Flight Software Framework is a C++ Object Oriented Framework for unmanned, automated systems like Satellites.

The initial version of the Flight Software Framework was developed during the Flying Laptop Project by the University of Stuttgart in cooperation with Airbus Defence and Space GmbH.

Quick facts

The framework is designed for systems, which communicate with external devices, perform control loops, receive telecommands and send telemetry, and need to maintain a high level of availability. Therefore, a mode and health system provides control over the states of the software and the controlled devices. In addition, a simple mechanism of event based fault detection, isolation and recovery is implemented as well.

The FSFW provides abstraction layers for operating systems to provide a uniform operating system abstraction layer (OSAL). Some components of this OSAL are required internally by the FSFW but is also very useful for developers to implement the same application logic on different operating systems with a uniform interface.

Currently, the FSFW provides the following OSALs:

  • Linux
  • Host
  • FreeRTOS

The recommended hardware is a microprocessor with more than 1 MB of RAM and 1 MB of non-volatile Memory. For reference, current applications use a Cobham Gaisler UT699 (LEON3FT), a ISISPACE IOBC or a Zynq-7020 SoC. The fsfw was also successfully run on the STM32H743ZI-Nucleo board and on a Raspberry Pi and is currently running on the active satellite mission Flying Laptop.

Getting started

The FSFW example provides a good starting point and a demo to see the FSFW capabilities and build it with the Make or the CMake build system. It is recommended to evaluate the FSFW by building and playing around with the demo application.

Generally, the FSFW is included in a project by compiling the FSFW sources and providing a configuration folder and adding it to the include path. There are some functions like printChar which are different depending on the target architecture and need to be implemented by the mission developer.

A template configuration folder was provided and can be copied into the project root to have a starting point. The configuration section provides more specific information about the possible options.


1. High-level overview
2. Core components
3. OSAL overview
4. PUS services
5. Device Handler overview
6. Controller overview
7. Local Data Pools