The FSFW example for the Linux (non-MCU) and Windows (MacOS not tested), using the FSFW Linux or FSFW Hosted OSAL.
Go to file
Robin Mueller f42b3e52d1
Some checks failed
fsfw/fsfw example hosted/pipeline/head There was a failure building this commit
bump fsfw
2022-05-12 19:01:18 +02:00
.idea bump fsfw and .idea/cmake file 2022-05-10 10:15:19 +02:00
.run update submodules, run config 2022-05-09 01:28:47 +02:00
automation added automation files and updated README 2021-11-19 14:19:21 +01:00
bsp_hosted complete iostream replacement 2022-05-09 01:15:11 +02:00
cmake build script folders lower case 2022-05-05 20:49:37 +02:00
example_common@503c6301c6 enable lto 2022-05-09 02:03:17 +02:00
fsfw@7ab617accb bump fsfw 2022-05-12 19:01:18 +02:00
generators event translation fixes 2021-06-21 16:10:04 +02:00
misc/eclipse fsfw fixes for windows 2021-09-28 17:29:22 +02:00
scripts apply auto-formatter 2022-05-05 20:55:48 +02:00
tmtc update gitignore and fsfw 2022-05-02 09:22:28 +02:00
.clang-format add clang-format file 2022-05-02 11:07:22 +02:00
.gitignore track code styles 2022-05-02 09:33:39 +02:00
.gitmodules tmtc updates 2021-10-13 12:09:21 +02:00
CMakeLists.txt enable lto 2022-05-09 02:03:17 +02:00
docker-compose.yml moved dockerfile to root again 2021-06-08 17:53:34 +02:00
Justfile added justfile 2021-10-18 18:02:12 +02:00
LICENSE added more files from main repo 2021-06-08 13:36:08 +02:00
NOTICE added more files from main repo 2021-06-08 13:36:08 +02:00
README.md update README as well 2022-05-01 20:30:11 +02:00

FSFW Example Application

This repository features a demo application. The example has been run successfully on the following platforms:

  • Linux host machine with the Linux OSAL or the Host OSAL
  • Windows with the Host OSAL
  • STM32H743ZI-Nucleo with the FreeRTOS OSAL
  • Raspberry Pi with the Linux OSAL
  • STM32H743ZI-Nucleo with the RTEMS OSAL

The purpose of this example is to provide a demo of the FSFW capabilities. However, it can also be used as a starting point to set up a repository for new flight software. It also aims to provide developers with practical examples of how the FSFW is inteded to be used and how project using the FSFW should or can be set up and it might serve as a basic test platform for the FSFW as well to ensure all OSALs are compiling and running as expected.

The repository contains a Python TMTC program which can be used to showcase the TMTC capabilities of the FSFW (currently, using the ECSS PUS packet standard).

Configuring the Example

The build system will copy three configuration files into the build directory:

  1. commonConfig.h which contains common configuration parameters
  2. OBSWConfig.h which can contain machine and architecture specific configuration options
  3. FSFWConfig.h which contains the configuration for the flight software framework

These files can be edited manually after CMake build generation.

Index

Getting started with Eclipse for C/C++
Getting started with CMake

Getting started with the Hosted OSAL
Getting started with the FreeRTOS OSAL on a STM32
Getting started with the RTEMS OSAL on a STM32
Getting started with the Raspberry Pi
Getting started with the Beagle Bone Black

FSFW demo with Host OSAL on Windows or Linux

This demo has been tested for Windows and Linux. It uses the host abstraction layer of the FSFW.

General Information

This demo provides the opportunity to to test functionality of the FSFW on a host computer without the need of setting up external embedded hardware.

Prerequisites

If you need to set up these prerequisites, you can find some more information in the dedicated chapter.

  1. Makefile build: make installed (bundled with MSYS2 on Windows or via xPacks Windows Build Tools). Natively installed on Linux.
  2. Recommended for application code development: Eclipse for C/C++ . Project files and launch configuration are provided for Eclipse to ease development. Visual Studio support might follow soon following CMake implementation.
  3. CMake Build: Correct CMake installation
  4. Recommended: Python 3 and just installed for easy build generation

Commanding the Software

When the software is running, it opens a TCP oder UDP server, depending on the configuration, on port 7301. You can send PUS telecommands to that port to interactively command the software.

For a quick test, install the tmtccmd Python package first and use py instead of python3 on Windows:

cd tmtccmd
python3 -m pip install -r requirements.txt

Now you can command the software using the tmtccli.py and tmtcgui.py command. For example, you can use tmtccli.py -s 17 -o 0 to send a ping command.

Setting up Prerequisites

Windows - MinGW64 build

  1. MSYS2 and MinGW64 installed

  2. Update MSYS2 by opening it and running

    pacman -Syuuu
    

    After that, the gcc toolchain, git, make and CMake should be installed with

    pacman -S git mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-make mingw-w64-x86_64-cmake
    

    You can install a full development environment with

    pacman -S base-devel
    

    or install gcc, gdb and mingw32-make with the following command

    pacman -S mingw-w64-x86_64-toolchain
    

    It is recommended to set up aliases to get to the example directory quickly.

  3. It is recommended to add the MinGW64 bit binaries to the system path so Eclipse can use them. It is also recommended to run git config --global core.autocrlf true when using MinGW64 to have consistent line endings on Windows systems.

Linux - Enabling RTOS functionalities

The dedicated Linux README specifies some steps required to cleanly run the FSFW.

Building the Software with CMake

You can use the Justfile provided to get a list of common build targets and generate the correct build configuration. Install Python 3 first. The easiest way to install just is to install Cargo first and the run the following command

cargo install just

After that, you can display common build targets with

just -l

and create a build configuration with

just <build-target>

All commands run will be display

Manual Way using CMake

CMake should be installed first. More detailed information on the CMake build process and options can be found in the CMake README. Readers unfamiliar with CMake should read this first. The following steps will show to to build the Debug executable using either the "Unix Makefiles" generator on Linux or the "MinGW Makefiles" generator in Windows in the command line to be as generic as possible.

You can also install Ninja and then supply -G "Ninja" to the build generation as a cross-platform solution.

Linux Build

  1. Create a new folder for the executable.

    mkdir cmake-build-debug
    cd cmake-build-debug
    
  2. Configure the build system

    cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DFSFW_OSAL=host ..
    

    You can also use -DOS_FSFW=linux to use the Linux OSAL of the FSFW.

  3. Build the software

    cmake --build . -j
    
  4. The binary will be located inside the Debug folder and can be run there

    ./fsfw-example
    

MinGW64 Build

Set up MinGW64 like explained previously.

The CMake build can be generated either with the CMake GUI tool or with the MinGW64 command line. Steps will be shown with the MinGW64 command line tool, but the CMake GUI can be used on Windows as well to have a convenient way to configure the CMake build.

  1. Open the MinGW64 terminal and navigate to the fsfw_example folder

  2. Create a new folder for the executable.

    mkdir cmake-build-debug
    cd cmake-build-debug
    

    The build options can be displayed with cmake -L .

  3. Configure the project and generate the native MinGW64 buildsystem

    cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DFSFW_OSAL=host ..
    

    The build configuration can also be performed with the shell scripts located inside cmake/scripts/Host or the Python helper script cmake_build_config.py inside cmake/scripts. The configured build options can now be shown with cmake -L.

  4. Call the build system (Make)

    cmake --build . -j
    
  5. Like already mentioned, it is recommended to run the binary directly as an executable by double-clicking it or in the Windows Terminal.

Setting up Eclipse for CMake projects

The separate Eclipse README specifies how to set up Eclipse to build CMake projects. Separate project files and launch configurations for the MinGW build were provided. The debug output is colored by default. It is recommended to install the ANSI Escape in Console plugin in Eclipse so the coloring works in the Eclipse console.

Windows

On Windows, it is recommended to run the applicaton with the Windows command line for the printout to work properly. You can do this by simply double-clicking the binary or using start <Exe> in the Windows command line