The framework code.
Go to file
Robin Müller f9a8c3d35a updated .mk support 2021-01-12 20:46:54 +01:00
action some upstream stuff taken over 2020-12-22 16:08:24 +01:00
container repaired unit tests 2021-01-03 23:18:10 +01:00
contrib/sgp4 renormalized line endings 2020-08-28 18:33:29 +02:00
controller unfortunate api change 2021-01-12 19:58:29 +01:00
coordinates upstream coordinates taken over 2020-12-21 14:01:48 +01:00
datalinklayer correct preprocessor define now used 2021-01-03 14:16:52 +01:00
datapool Merge remote-tracking branch 'upstream/mueller/master' into mueller/master 2021-01-12 15:04:00 +01:00
datapoollocal cleaned up a bit 2021-01-12 20:46:34 +01:00
defaultcfg defaultcfg update 2021-01-08 02:07:37 +01:00
devicehandlers unfortunate api change 2021-01-12 19:58:29 +01:00
doc added new reamde file stubs 2021-01-10 17:34:21 +01:00
events a lot of bugfixes and important api change 2021-01-06 21:14:23 +01:00
fdir correct preprocessor define now used 2021-01-03 14:16:52 +01:00
globalfunctions replaced all fsfw:: by sif:: for printouts 2021-01-12 13:18:18 +01:00
health correct preprocessor define now used 2021-01-03 14:16:52 +01:00
housekeeping unfortunate api change 2021-01-12 19:58:29 +01:00
internalError unfortunate api change 2021-01-12 19:58:29 +01:00
ipc a lot of bugfixes and important api change 2021-01-06 21:14:23 +01:00
logo readme and logo update 2020-12-01 17:19:26 +01:00
memory correct preprocessor define now used 2021-01-03 14:16:52 +01:00
modes upstream stuff 2020-12-22 16:10:13 +01:00
monitoring unfortunate api change 2021-01-12 19:58:29 +01:00
objectmanager some include fixes 2021-01-03 14:33:17 +01:00
osal replaced all fsfw:: by sif:: for printouts 2021-01-12 13:18:18 +01:00
parameters correct preprocessor define now used 2021-01-03 14:16:52 +01:00
power a lot of bugfixes and important api change 2021-01-06 21:14:23 +01:00
pus correct preprocessor define now used 2021-01-03 14:16:52 +01:00
returnvalues cast added 2020-12-14 21:20:21 +01:00
rmap taken over cleaned up branch 2020-12-13 22:13:22 +01:00
serialize small include fix 2021-01-03 16:42:29 +01:00
serviceinterface fixed warning of static var 2021-01-12 13:23:24 +01:00
storagemanager some include fixes 2021-01-03 14:33:17 +01:00
subsystem correct preprocessor define now used 2021-01-03 14:16:52 +01:00
tasks correct preprocessor define now used 2021-01-03 14:16:52 +01:00
tcdistribution correct preprocessor define now used 2021-01-03 14:16:52 +01:00
thermal cmake lists form upstream taken over 2020-12-22 16:19:30 +01:00
timemanager correct preprocessor define now used 2021-01-03 14:16:52 +01:00
tmstorage tm storage update 2020-12-22 15:59:28 +01:00
tmtcpacket correct preprocessor define now used 2021-01-03 14:16:52 +01:00
tmtcservices correct preprocessor define now used 2021-01-03 14:16:52 +01:00
unittest fixed annoying bug 2021-01-12 20:33:53 +01:00
.gitignore Added .gitignore for eclipse project files 2018-07-12 17:13:04 +02:00
.gitmodules added gitmodules 2020-12-22 13:27:47 +01:00
CHANGELOG changelog update 2021-01-03 15:31:44 +01:00
CMakeLists.txt minor tweak 2021-01-09 13:52:47 +01:00
FSFWVersion.h taken over upstream changes 2020-12-13 21:50:33 +01:00
LICENSE updating code from Flying Laptop 2018-07-12 16:29:32 +02:00
NOTICE notice taken over 2020-12-13 21:51:46 +01:00
README.md added new reamde file stubs 2021-01-10 17:34:21 +01:00
fsfw.mk updated .mk support 2021-01-12 20:46:54 +01:00

README.md

FSFW Logo

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
  • RTEMS

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.

Index

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