35 Commits

Author SHA1 Message Date
f62f5abf89 added spdlog 2021-05-12 19:16:38 +02:00
804f2f2448 fixed linux launch file 2021-05-12 18:42:51 +02:00
a6fbe4af6e fsfw update 2021-05-07 00:23:47 +02:00
63608b0da1 updated tmtccmd 2021-05-06 20:20:04 +02:00
7f24f26f85 fsfw hal update 2021-05-05 21:31:21 +02:00
8502b7ad26 submodule update, obj factory update, cmake form 2021-05-05 19:43:03 +02:00
5f4b1520d5 updated release config launch file 2021-05-04 18:39:49 +02:00
fe50ea388c updated launch config 2021-05-04 18:37:53 +02:00
f889812b39 updated .cproject file 2021-05-04 18:37:05 +02:00
c68e3c6e6d updated tmtccmd 2021-05-04 18:32:36 +02:00
590db280ba merge origin master 2021-05-04 15:22:21 +02:00
f9c3bc0a4d Merge pull request 'BBB x-compile guide added' (#7) from mueller/bbb-guide into master
Reviewed-on: #7
2021-05-04 15:16:28 +02:00
08d71aa6d2 Merge remote-tracking branch 'origin/master' into mueller/bbb-guide 2021-05-04 15:15:47 +02:00
5eabea96c2 Merge pull request 'Update to PUS C' (#6) from mueller/update-pus-c into master
Reviewed-on: #6
2021-05-04 15:11:34 +02:00
ab2f7fe9ec fsfw and modgen udpate 2021-05-04 15:09:33 +02:00
4bddaf4832 fsfw update 2021-05-04 14:10:30 +02:00
895193c9a6 typos 2021-05-02 15:13:33 +02:00
5dda86a9da bbb support complete 2021-05-02 15:09:17 +02:00
c6c75c92dc updating READMEs for bbb and rpi 2021-05-02 14:53:02 +02:00
a3fb7974ba readme bbb update for linux and windows 2021-05-02 13:21:32 +02:00
891d9e1822 updated READMEs 2021-05-02 13:05:04 +02:00
f967fd71a2 generic troubleshooting sections 2021-05-01 19:12:07 +02:00
d8a377ec9a Merge branch 'mueller/master' into mueller/bbb-guide 2021-05-01 18:45:37 +02:00
85d9ff1c8c updated BBB readme 2021-05-01 18:30:59 +02:00
8364ec3499 use new bbb x-compifle file 2021-05-01 18:06:40 +02:00
1aa9918370 added BBB x-compile file 2021-05-01 18:03:55 +02:00
34ccf96308 ref bbb doc 2021-05-01 17:52:01 +02:00
f5f33fd194 added bbb guide and updated rpi guide 2021-05-01 17:48:08 +02:00
9f7aca0be5 updated project file 2021-05-01 16:49:49 +02:00
fb6703d8e1 fsfw update 2021-04-30 23:59:56 +02:00
db8f635bb5 modgen update 2021-04-30 11:41:00 +02:00
52a1efc660 fsfw update 2021-04-29 20:25:16 +02:00
168449f37e fsfw update 2021-04-29 20:21:57 +02:00
2f73e80930 Merge remote-tracking branch 'origin/master' into mueller/master 2021-04-29 20:20:55 +02:00
1e90f954c1 updated submodule 2021-04-29 19:35:54 +02:00
30 changed files with 844 additions and 170 deletions

3
.gitmodules vendored
View File

@ -13,3 +13,6 @@
[submodule "fsfw"] [submodule "fsfw"]
path = fsfw path = fsfw
url = https://egit.irs.uni-stuttgart.de/fsfw/fsfw.git url = https://egit.irs.uni-stuttgart.de/fsfw/fsfw.git
[submodule "spdlog"]
path = spdlog
url = https://github.com/gabime/spdlog.git

View File

@ -55,6 +55,7 @@ set(MISSION_PATH mission)
set(COMMON_PATH common) set(COMMON_PATH common)
set(TEST_PATH test) set(TEST_PATH test)
set(LWIP_PATH lwip) set(LWIP_PATH lwip)
set(SPDLOG_PATH spdlog)
set(LIB_FSFW_HAL_PATH fsfw_hal) set(LIB_FSFW_HAL_PATH fsfw_hal)
# Analyse different OS and architecture/target options, determine BSP_PATH, # Analyse different OS and architecture/target options, determine BSP_PATH,
@ -117,11 +118,15 @@ add_subdirectory(${LIB_FSFW_HAL_PATH})
# Post-Sources preparation # Post-Sources preparation
################################################################################ ################################################################################
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} sbdlog)
add_subdirectory(spdlog)
# Add libraries for all sources. # Add libraries for all sources.
target_link_libraries(${TARGET_NAME} PRIVATE target_link_libraries(${TARGET_NAME} PRIVATE
${LIB_FSFW_NAME} ${LIB_FSFW_NAME}
${LIB_OS_NAME} ${LIB_OS_NAME}
${LIB_FSFW_HAL_NAME} ${LIB_FSFW_HAL_NAME}
spdlog
) )
# Add include paths for all sources. # Add include paths for all sources.

View File

@ -27,6 +27,7 @@ the TMTC capabilities of the FSFW (currently, using the ECSS PUS packet standard
[Getting started with the Host OSAL](doc/README-host.md#top)<br> [Getting started with the Host OSAL](doc/README-host.md#top)<br>
[Getting started with the FreeRTOS OSAL on a STM32](doc/README-stm32-freertos.md#top)<br> [Getting started with the FreeRTOS OSAL on a STM32](doc/README-stm32-freertos.md#top)<br>
[Getting started with the Raspberry Pi](doc/README-rpi.md#top)<br> [Getting started with the Raspberry Pi](doc/README-rpi.md#top)<br>
[Getting started with the Beagle Bone Black](doc/README-bbb.md#top)<br>
[Getting started with the RTEMS OSAL on a STM32](doc/README-stm32-rtems.md#top)<br> [Getting started with the RTEMS OSAL on a STM32](doc/README-stm32-rtems.md#top)<br>
[Getting started with Eclipse for C/C++](doc/README-eclipse.md#top)<br> [Getting started with Eclipse for C/C++](doc/README-eclipse.md#top)<br>
[Getting started with CMake](doc/README-cmake.md#top)<br> [Getting started with CMake](doc/README-cmake.md#top)<br>

View File

@ -47,8 +47,7 @@ void ObjectFactory::produce(){
} }
/* TMTC Reception via UDP socket */ /* TMTC Reception via UDP socket */
auto tmtcBridge = new UdpTmTcBridge(objects::UDP_BRIDGE, objects::CCSDS_DISTRIBUTOR, auto tmtcBridge = new UdpTmTcBridge(objects::UDP_BRIDGE, objects::CCSDS_DISTRIBUTOR);
objects::TM_STORE, objects::TC_STORE);
tmtcBridge->setMaxNumberOfPacketsStored(20); tmtcBridge->setMaxNumberOfPacketsStored(20);
new UdpTcPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE); new UdpTcPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE);

View File

@ -17,7 +17,7 @@
#define FSFW_DISABLE_PRINTOUT 0 #define FSFW_DISABLE_PRINTOUT 0
#endif #endif
#define FSFW_USE_PUS_C_TELEMETRY 0 #define FSFW_USE_PUS_C_TELEMETRY 1
//! Can be used to disable the ANSI color sequences for C stdio. //! Can be used to disable the ANSI color sequences for C stdio.
#define FSFW_COLORED_OUTPUT 1 #define FSFW_COLORED_OUTPUT 1

View File

@ -48,8 +48,7 @@ void ObjectFactory::produce() {
} }
/* TMTC Reception via UDP socket */ /* TMTC Reception via UDP socket */
auto tmtcBridge = new UdpTmTcBridge(objects::UDP_BRIDGE, objects::CCSDS_DISTRIBUTOR, auto tmtcBridge = new UdpTmTcBridge(objects::UDP_BRIDGE, objects::CCSDS_DISTRIBUTOR);
objects::TM_STORE, objects::TC_STORE);
tmtcBridge->setMaxNumberOfPacketsStored(20); tmtcBridge->setMaxNumberOfPacketsStored(20);
new UdpTcPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE); new UdpTcPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE);
#endif /* OBSW_ADD_CORE_COMPONENTS == 1 */ #endif /* OBSW_ADD_CORE_COMPONENTS == 1 */

View File

@ -0,0 +1,98 @@
# BBB_ROOTFS should point to the local directory which contains all the
# libraries and includes from the target raspi.
# The following command can be used to do this, replace <ip-address> and the
# local <rootfs-path> accordingly:
# rsync -vR --progress -rl --delete-after --safe-links pi@<ip-address>:/{lib,usr,opt/vc/lib} <rootfs-path>
# RASPBIAN_ROOTFS needs to be passed to the CMake command or defined in the
# application CMakeLists.txt before loading the toolchain file.
# CROSS_COMPILE also needs to be set accordingly or passed to the CMake command
if(NOT DEFINED ENV{BBB_ROOTFS})
message(FATAL_ERROR
"Define the BBB_ROOTFS variable to point to the Beagle Bone Black rootfs."
)
else()
set(SYSROOT_PATH "$ENV{BBB_ROOTFS}")
message(STATUS "Beagle Bone Black sysroot: ${SYSROOT_PATH}")
endif()
if(NOT DEFINED ENV{CROSS_COMPILE})
set(CROSS_COMPILE "arm-linux-gnueabihf")
message(STATUS
"No CROSS_COMPILE environmental variable set, using default ARM linux "
"cross compiler name ${CROSS_COMPILE}"
)
else()
set(CROSS_COMPILE "$ENV{CROSS_COMPILE}")
message(STATUS
"Using environmental variable CROSS_COMPILE as cross-compiler: "
"$ENV{CROSS_COMPILE}"
)
endif()
message(STATUS "Using sysroot path: ${SYSROOT_PATH}")
set(CROSS_COMPILE_CC "${CROSS_COMPILE}-gcc")
set(CROSS_COMPILE_CXX "${CROSS_COMPILE}-g++")
set(CROSS_COMPILE_LD "${CROSS_COMPILE}-ld")
set(CROSS_COMPILE_AR "${CROSS_COMPILE}-ar")
set(CROSS_COMPILE_RANLIB "${CROSS_COMPILE}-ranlib")
set(CROSS_COMPILE_STRIP "${CROSS_COMPILE}-strip")
set(CROSS_COMPILE_NM "${CROSS_COMPILE}-nm")
set(CROSS_COMPILE_OBJCOPY "${CROSS_COMPILE}-objcopy")
set(CROSS_COMPILE_SIZE "${CROSS_COMPILE}-size")
# At the very least, cross compile gcc and g++ have to be set!
find_program (CROSS_COMPILE_CC_FOUND ${CROSS_COMPILE_CC} REQUIRED)
find_program (CROSS_COMPILE_CXX_FOUND ${CROSS_COMPILE_CXX} REQUIRED)
set(CMAKE_CROSSCOMPILING TRUE)
set(CMAKE_SYSROOT "${SYSROOT_PATH}")
# Define name of the target system
set(CMAKE_SYSTEM_NAME "Linux")
set(CMAKE_SYSTEM_PROCESSOR "arm")
# Define the compiler
set(CMAKE_C_COMPILER ${CROSS_COMPILE_CC})
set(CMAKE_CXX_COMPILER ${CROSS_COMPILE_CXX})
# List of library dirs where LD has to look. Pass them directly through gcc.
# LD_LIBRARY_PATH is not evaluated by arm-*-ld
set(LIB_DIRS
"${SYSROOT_PATH}/lib/${CROSS_COMPILE}"
"${SYSROOT_PATH}/usr/local/lib"
"${SYSROOT_PATH}/usr/lib/${CROSS_COMPILE}"
"${SYSROOT_PATH}/usr/lib"
)
# You can additionally check the linker paths if you add the
# flags ' -Xlinker --verbose'
set(COMMON_FLAGS "-I${SYSROOT_PATH}/usr/include")
foreach(LIB ${LIB_DIRS})
set(COMMON_FLAGS "${COMMON_FLAGS} -L${LIB} -Wl,-rpath-link,${LIB}")
endforeach()
set(CMAKE_PREFIX_PATH
"${CMAKE_PREFIX_PATH}"
"${SYSROOT_PATH}/usr/lib/${CROSS_COMPILE}"
)
set(CMAKE_C_FLAGS
"-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard ${COMMON_FLAGS}"
CACHE STRING "Flags for Beagle Bone Black"
)
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}"
CACHE STRING "Flags for Beagle Bone Black"
)
set(CMAKE_FIND_ROOT_PATH
"${CMAKE_INSTALL_PREFIX};${CMAKE_PREFIX_PATH};${CMAKE_SYSROOT}"
)
# search for programs in the build host directories
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

View File

@ -110,15 +110,19 @@ elseif(${OS_FSFW} STREQUAL linux AND TGT_BSP)
"$ENV{RASPBERRY_VERSION}" "$ENV{RASPBERRY_VERSION}"
) )
endif() endif()
if(LINUX_CROSS_COMPILE)
if(LINUX_CROSS_COMPILE) set(CMAKE_TOOLCHAIN_FILE
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SCRIPT_PATH}/RPiCrossCompileConfig.cmake"
"${CMAKE_SCRIPT_PATH}/RPiCrossCompileConfig.cmake" PARENT_SCOPE
PARENT_SCOPE )
) endif()
endif() elseif(${TGT_BSP} MATCHES "arm/beagleboneblack")
elseif(${TGT_BSP} MATCHES "arm/beagleboneblack") if(LINUX_CROSS_COMPILE)
set(CMAKE_TOOLCHAIN_FILE
"${CMAKE_SCRIPT_PATH}/BBBCrossCompileConfig.cmake"
PARENT_SCOPE
)
endif()
else() else()
message(WARNING "Target BSP (TGT_BSP) ${TGT_BSP} unknown!") message(WARNING "Target BSP (TGT_BSP) ${TGT_BSP} unknown!")
endif() endif()

View File

@ -0,0 +1,3 @@
export PATH=$PATH:"$HOME/beaglebone/<cross_compiler_path>/bin"
export CROSS_COMPILE="arm-linux-gnueabihf"
export BBB_ROOTFS="${HOME}/raspberrypi/rootfs"

View File

@ -0,0 +1,30 @@
#!/bin/sh
counter=0
while [ ${counter} -lt 5 ]
do
cd ..
if [ -f "cmake_build_config.py" ];then
break
fi
counter=$((counter=counter + 1))
done
if [ "${counter}" -ge 5 ];then
echo "cmake_build_config.py not found in upper directories!"
exit 1
fi
os_fsfw="linux"
tgt_bsp="arm/beagleboneblack"
build_generator=""
builddir="build-Debug-BBB"
defines="LINUX_CROSS_COMPILE=ON"
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
# Could be other OS but this works for now.
else
build_generator="Unix Makefiles"
fi
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}" \
-l "${builddir}" -d "${defines}"

View File

@ -0,0 +1,30 @@
#!/bin/sh
counter=0
while [ ${counter} -lt 5 ]
do
cd ..
if [ -f "cmake_build_config.py" ];then
break
fi
counter=$((counter=counter + 1))
done
if [ "${counter}" -ge 5 ];then
echo "cmake_build_config.py not found in upper directories!"
exit 1
fi
os_fsfw="linux"
tgt_bsp="arm/beagleboneblack"
build_generator=""
builddir="build-Release-BBB"
defines="LINUX_CROSS_COMPILE=ON"
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
# Could be other OS but this works for now.
else
build_generator="Unix Makefiles"
fi
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}" \
-l "${builddir}" -d "${defines}"

View File

@ -0,0 +1,30 @@
#!/bin/sh
counter=0
while [ ${counter} -lt 5 ]
do
cd ..
if [ -f "cmake_build_config.py" ];then
break
fi
counter=$((counter=counter + 1))
done
if [ "${counter}" -ge 5 ];then
echo "cmake_build_config.py not found in upper directories!"
exit 1
fi
os_fsfw="linux"
tgt_bsp="arm/beagleboneblack"
build_generator=""
builddir="build-Release-BBB"
defines="LINUX_CROSS_COMPILE=ON"
if [ "${OS}" = "Windows_NT" ]; then
build_generator="MinGW Makefiles"
# Could be other OS but this works for now.
else
build_generator="Unix Makefiles"
fi
python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}" \
-l "${builddir}" -d "${defines}"

411
doc/README-bbb.md Normal file
View File

@ -0,0 +1,411 @@
<img align="center" src="./images/bbb/beagleboard-logo.png" width="30%">
<sub><sup>Image taken from [Beagle Board website](https://beagleboard.org/logo) and used in
accordance with their trademark rules.</sup></sub>
# Getting started on the Beagle Bone Black
The FSFW can be run on a Beagle Bone Black with the Linux OSAL, using
an ARM linux (cross) compiler. Instructions will be provided on how to do this.
## General Information
The following instructions will show how to build the example on the Beagle Bone Black directly.
It will also show how to cross-compile on a host machine and mirror the Beagle Bone sysroot folder
on the host machine so that the same libraries and headers used on the BBB are used
for the cross-compilation process.
Some Eclipse project files were provided as well to help with setting up the indexer in Eclipse
more quickly.
## Prerequisites for direct compilation and cross-compiling
1. SSH connection to the Beagle Bone Black working
2. Beagle Bone Black linux environment set up properly
3. `CMake` installed
## Setting up general prerequisites for Linux systems
1. Install CMake and rsync
```sh
sudo apt-get install cmake rsync
```
2. Configure the Beagle Bone Black Linux environment. The last section of the
[Linux README](README-linux.md#top) specifies how to set up a UNIX environment for the FSFW and
is also applicable to the Beagle Bone Black. SSH into the BBB and
follow the instructions in that section.
3. Install the `gpiod` library
```sh
sudo apt-get install gpiod libgpiod-dev
```
## Getting started on the Beagle Bone Black
Make sure to follow the steps above. Now you should be able to build the software on
the Beagle Bone Black. A ssh connection to the Raspberry Pi is assumed here
You can build the software with the following commands
```sh
mkdir build-Debug-BBB
cd build-Debug-BBB
cmake -DOS_FSFW=linux -DTGT_BSP=arm/beagleboneblack -DLINUX_CROSS_COMPILE=OFF -DCMAKE_BUILD_TYPE=Debug ..
cmake --build . -j2
```
## Prerequisites for cross-compiling
These prerequisites are valid for Linux as well as Windows hosts.
1. ARM Linux cross compiler installed
2. Beagle Bone Black sysroot folder mirrored on the host machine, using `rsync`
3. gdb-multiarch installed on host for remote debugging or `tcf-agent` running on the BBB
## Cross-Compiling on a Linux Host
### Setting up prerequisites for cross-compiling
1. Install `CMake` and `rsync`
```
sudo apt-get install cmake rsync
```
2. Configure the Beagle Bone Black linux environment. The last section of the
[Linux REAMDE](README-linux.md#top) specifies how to set up a UNIX environment
for the FSFW and isalso applicable to the Raspberry Pi. SSH into the
Beagle Bone Black and follow the instructions in that section.
3. Install the correct [ARM Linux cross-compile toolchain](https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/).
provided by Linaro.
Test the toolchain by running:
```sh
arm-linux-gnueabihf-gcc --version
```
4. Set up a sysroot folder on the local host machine. Make sure the SSH connection to
the BBB is working without issues. Then perform the following steps
```sh
cd $HOME
mkdir beaglebone
cd beaglebone
mkdir rootfs
cd rootfs
pwd
```
Store the result of `pwd`, it is going to be used by `rsync` later.
Now use `rsync` to clone the BBB sysroot to the local host machine.
You can replace `<ip-address>` with `beaglebone.local` to use DNS.
Use the rootfs location stored from the previous steps as `<rootfs-path>`.
```sh
rsync -avHAXR --delete-after --info=progress2 --numeric-ids <user_name>@<ip_address>:/{usr,lib} <rootfs_path>
```
On Linux, it is recommended to repair some symlinks which can be problematic:
Navigate to the folder containing the symlinks first:
```sh
cd <rootfs_path>/usr/lib/arm-linux-gnueabihf
```
You can now use
```sh
readlink libpthread.so
```
which will show an absolute location of a shared library the symlinks points to. This location
needs to be converted into a relative path.
Run the following command to create a relative symlinks instead of an absolute ones. The pointed
to location might change to check it with `readlink` first before removing the symlinks:
```sh
rm libpthread.so
rm librt.so
ln -s ../../../lib/arm-linux-gnueabihf/libpthread.so.0 libpthread.so
ln -s ../../../lib/arm-linux-gnueabihf/librt.so.1 librt.so
```
For more information on issues which can occur when cloning the root filesystem,
see the [troubleshooting](#troubleshooting) section.
5. It is recommended to install `gdb-multiarch`. This tool will allow remote debugging on the host
computer. This is not required if the `tcf-agent` is used.
```sh
sudo apt-get install multiarch
```
6. Perform the steps [in the following chapter](#cross-test) to build the
software for the BBB and test it.
## Cross-Compiling on a Windows Host
### Additional Prerequites
1. [MSYS2](https://www.msys2.org/) installed. All command line steps shown here
were performed in the MSYS2 MinGW64 shell (not the default MSYS2, use MinGW64!).
Replace `<UserName>` with respectively. It is recommended to set up
aliases in the `.bashrc` file to allow quick navigation to the `fsfw_example`
repository and to run `git config --global core.autocrlf true` for git in
MinGW64.
### Setting up prerequisites for Windows
1. Install CMake and rsync in MinGW64 after installing MSYS2
```
pacman -S mingw-w64-x86_64-cmake rsync
```
2. Configure the Beagle Bone Black linux environment. The last section of the
[Linux REAMDE](README-linux.md#top) specifies how to set up a UNIX environment
for the FSFW and isalso applicable to the Raspberry Pi. SSH into the
Beagle Bone Black and follow the instructions in that section.
3. Install the correct [ARM Linux cross-compile toolchain](https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/).
provided by Linaro.
Test the toolchain by running:
```sh
arm-linux-gnueabihf-gcc --version
```
4. Set up a sysroot folder on the local host machine. Make sure the SSH connection to
the BBB is working without issues. Then perform the following steps
```sh
cd /c/Users/<UserName>
mkdir beaglebone
cd beaglebone
mkdir rootfs
cd rootfs
pwd
```
Store the result of `pwd`, it is going to be used by `rsync` later.
Now use rsync to clone the BBB sysroot to the local host machine.
You can replace `<ip-address>` with `beaglebone.local` to use DNS.
Use the rootfs location stored from the previous steps as `<rootfs-path>`.
```sh
rsync -avHAXR --numeric-ids --info=progress2 <username>@<ip-address>:/{lib,usr} <rootfs-path>
```
Please note that `rsync` sometimes does not copy shared libraries or symlinks properly,
which might result in errors when cross-compiling and cross-linking. It is recommended to run
the following commands in addition to the `rsync` command on Windows:
```sh
scp <user_name>@<ip-address>:/lib/arm-linux-gnueabihf/{libc.so.6,ld-linux-armhf.so.3,libm.so.6} <rootfs_path>/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/{libpthread.so,libc.so,librt.so} <rootfs_path>/usr/lib/arm-linux-gnueabihf
```
For more information on issues which can occur when cloning the root filesystem,
see the [troubleshooting](#troubleshooting) section.
5. It is recommended to install `gdb-multiarch`. This tool will allow remote debugging on the host
computer. Replace `x86_64` with the correct processor architecture for other architectures.
This is not required if the `tcf-agent` is used.
```sh
pacman -S mingw-w64-x86_64-gdb-multiarch
```
6. Perform the steps [in the following chapter](#cross-test) to build the
software for the BBB and test it.
## <a id="cross-test"></a> Testing the cross-compilation
It is recommended to set the following environmental variables for the CMake build:
- `CROSS_COMPILE`: Explicitely specify the name of the cross compiler
- `BBB_ROOTFS`: Explicitely set the path to the local BBB rootfs
For example with the following commands
```sh
export CROSS_COMPILE="arm-linux-gnueabihf"
```
It is recommended to test whether the environmental variables were set correctly,
for example by running
```sh
echo $BBB_ROOTFS
```
These variables can either be set every time before a debugging session to
keep the environment clean (should be done before starting Eclipse)
or permanently by adding the `export` commands to system files.
A helper script has been provided in `cmake/scripts/BBB` to perform
setting up the environment. The scripts need to be `source`d instead of
being run like regular shell scripts.
You can also set up the environmental variables permanently by adding the
export commands to the `.profile` or `.bashrc` file in the `$HOME` folder.
On Windows, MinGW64 was used to set up the build system, so you can use the
MinGW64 `.bashrc` file to do this. If you are using Eclipse to build
the software, Eclipse will have the system variables from Windows,
so it is recommended to either permanently set the three environmental
variables in the Windows system environmental variables or add them in
Eclipse. See the [Eclipse README](README-eclipse.md#top) for more information.
Now we can test whether everything was set up properly by compiling the example
and running it on the BBB via command line. Navigate into the `fsfw_example` folder first.
1. Build the software locally to test the cross-compilation process.
A debug build directory is created first.
```sh
mkdir build-Debug-BBB
cd build-Debug-BBB
```
2. Configure the build system. On Linux, run the following command:
```sh
cmake -G "Unix Makefiles" -DOS_FSFW=linux -DTGT_BSP=arm/beagleboneblack -DLINUX_CROSS_COMPILE=ON -DCMAKE_BUILD_TYPE=Debug ..
```
On Windows, replace `-G "Unix Makefiles"` with `-G "MinGW Makefiles"`.
Alternatively, you can use the helper shell scripts located inside `cmake/scripts/BBB/crosscompile`
or the Python helper script `cmake_build_config.py` inside the `cmake/scripts` folder.
The `BBB` folder also contains template shell files which can be `source`d
to quickly set up the environmental variables if you want to keep the system path clean.
3. Run the binary to test it
```sh
scp fsfw_example <username>@beaglebone.local:/home/fsfw_example
ssh <username>@beaglebone.local
./fsfw_example
```
### Setting up Eclipse for a BBB remote target
It is recommended to use the provided Eclipse project files and
launch configurations to have a starting point. See the specific section in
the [Eclipse README](README-eclipse.md#top) for information how to do this.
#### Windows
There are some additional steps necessary on Windows: The cross-compiler by
default is configured to look for the cross-compiler in `/opt/cross-pi-gcc/bin`.
The toolchain path needs to be corrected, for example like shown in the following image:
<img align="center" src="./images/eclipse/eclipse-cross-compile-win.png" width="50%">
## Setting up the TCF agent on the BBB
It is recommended to set up a [TCF agent](https://wiki.eclipse.org/TCF) for comfortable
Eclipse remote debugging. The following steps show how to setup the TCF agent
on the Raspberry Pi and add it to the auto-startup applications. The steps are taken
from [this guide](https://wiki.eclipse.org/TCF/Raspberry_Pi)
1. Install required packages on the RPi
```sh
sudo apt-get install git uuid uuid-dev libssl-dev
```
2. Clone the repository and perform some preparation steps
```sh
git clone git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git
cd org.eclipse.tcf.agent.git/agent
```
3. Build the TCF agent
```sh
make
```
and then test it by running
```sh
obj/GNU/Linux/arm/Debug/agent S
```
4. Finally install the agent for auto-start with the following steps. And set it up for
auto-start.
```sh
cd org.eclipse.tcf.agent/agent
make install
sudo make install INSTALLROOT=
sudo update-rc.d tcf-agent defaults
```
The [Eclipse README](README-eclipse.md#top) specifies how to perform remote
debugging using the TCF agent.
# <a id="troubleshooting"></a> Troubleshooting
## Cloning the root filesystem
There might be some issues with the pthread symbolic links.
Navigate to the folder containing the symlinks
```sh
cd <rootfs_path>/usr/lib/arm-linux-gnueabihf
```
Type `more libpthread`, press `TAB` and check whether the symbolic
link `libpthread.so` is shown. If it is not, we are going to set it up
manually to avoid issues when linking against `pthread` later.
Now you can find out where `libpthread.so` points with `readlink libpthread.so`.
This information is used to convert the absolute symlink to relative ones, for example with:
Run the following command to copy the symlink `libpthread.so.0` if it does not exist yet:
```sh
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/libpthread.so .
```
Alternatively, you can correct the symlinks to use relative paths, for example with:
```sh
ln -s ../../../lib/arm-linux-gnueabihf/libpthread.so.0 libpthread.so
ln -s ../../../lib/arm-linux-gnueabihf/librt.so.1 librt.so
```
Please note that there might also be issues with some symlinks or libraries not being copied
properly, especially on Windows. This has occured with files like `libc.so.6`.
If there are linker issues at a later stage, you can try to copy the symlinks manually from the
Linux board to the sysroot with `scp`.
For example, you can copy `libc.so.6` from the Linux board to the sysroot with
the following command
If there are issues with the cross-compilation process, manually copying the following
symlinks can help:
```sh
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/libc.so <rootfs_path>/usr/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/libc.a <rootfs_path>/usr/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/librt.a <rootfs_path>/usr/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/librt.so <rootfs_path>/usr/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/lib/arm-linux-gnueabihf/librt.so.1 <rootfs_path>/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/lib/arm-linux-gnueabihf/libpthread.so.0 <rootfs_path>/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3 <rootfs_path>/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/lib/arm-linux-gnueabihf/libc.so.6 <rootfs_path>/lib/arm-linux-gnueabihf
```
If any custom libraries are used which rely on symlinks, it might be necessary to copy them
or create them manually as well.

View File

@ -1,41 +1,43 @@
<img align="center" src="./images/rpi/RPi-Logo-Landscape-Reg-PRINT.png" width="30%"> <img align="center" src="./images/rpi/RPi-Logo-Landscape-Reg-PRINT.png" width="30%">
<sub><sup>Image taken from [Raspberry Pi website](https://www.raspberrypi.org/trademark-rules/). Raspberry Pi is a trademark of the Raspberry Pi Foundation</sup></sub> <sub><sup>Image taken from [Raspberry Pi website](https://www.raspberrypi.org/trademark-rules/).
Raspberry Pi is a trademark of the Raspberry Pi Foundation</sup></sub>
# Getting started on the Raspberry Pi # Getting started on the Raspberry Pi
The FSFW can be run on a Raspberry Pi with the Linux OSAL, using The FSFW can be run on a Raspberry Pi with the Linux OSAL, using
an ARM linux cross compiler. Instructions will be provided on how an ARM linux (cross) compiler. Instructions will be provided on how
to do this. to do this.
## General Information ## General Information
The following instructions will show how to install the cross compiler on The following instructions will show how to build the example on the Raspberry Pi directly.
a host machine and mirror the Rapsberry Pi sysroot folder on the host machine It will also show how to cross-compile on a host machine and mirror the Raspberry Pi sysroot folder
so that the same libraries and headers used on the Raspberry Pi are used on the host machine so that the same libraries and headers used on the RPi are used
for the cross-compilation process. The provided Eclipse project files for the cross-compilation process.
and launch configurations also provide a starting point to perform
remote debugging on a Raspberry Pi, using a SSH connection. Some Eclipse project files were provided as well to help with setting up the indexer in Eclipse
more quickly.
## Prerequisites for direct compilation and cross-compiling ## Prerequisites for direct compilation and cross-compiling
1. SSH connection to the Raspberry Pi working 1. SSH connection to the Raspberry Pi working
2. Raspberry Pi linux environment set up properly 2. Raspberry Pi linux environment set up properly
3. CMake and rsync installed 3. `CMake` installed
## Setting up general prerequisites for Linux systems ## Setting up general prerequisites for Linux systems
1. Install CMake and rsync 1. Install `CMake` and `rsync`
```sh ```sh
sudo apt-get install cmake rsync sudo apt-get install cmake rsync
``` ```
2. Configure the Raspberry Pi Linux environment. The last section of the 2. Configure the Raspberry Pi Linux environment. The last section of the
[Linux REAMDE](README-linux.md#top) specifies how to set up a UNIX environment for the FSFW and is [Linux README](README-linux.md#top) specifies how to set up a UNIX environment for the FSFW and
also applicable to the Raspberry Pi. SSH into the Raspberry Pi and is also applicable to the Raspberry Pi. SSH into the Raspberry Pi and
follow the instructions in that section. follow the instructions in that section.
3. Install the `gpiod` library 3. Install the `gpiod` library
```sh ```sh
@ -62,10 +64,8 @@ These prerequisites are valid for Linux as well as Windows hosts.
1. ARM Linux cross compiler installed 1. ARM Linux cross compiler installed
2. Raspberry Pi sysroot folder mirrored on the host machine, using `rsync` 2. Raspberry Pi sysroot folder mirrored on the host machine, using `rsync`
3. gdb-multiarch installed on host for remote debugging or TCF agent running on Raspberry Pi 3. gdb-multiarch installed on host for remote debugging or `tcf-agent` running on Raspberry Pi
## Cross-Compiling on a Linux Host ## Cross-Compiling on a Linux Host
Steps tested for Ubuntu 20.04. Adapt accordingly for used Linux distribution. Steps tested for Ubuntu 20.04. Adapt accordingly for used Linux distribution.
@ -76,7 +76,6 @@ based on Debian buster is used. If this is not the case, it is recommended to
follow the steps in the stackoverflow post above and to make sure that the follow the steps in the stackoverflow post above and to make sure that the
toolchain binaries are added to the path accordingly. toolchain binaries are added to the path accordingly.
### Setting up prerequisites for cross-compiling ### Setting up prerequisites for cross-compiling
1. Install the pre-built ARM cross-compile with the following command 1. Install the pre-built ARM cross-compile with the following command
@ -84,31 +83,30 @@ toolchain binaries are added to the path accordingly.
```sh ```sh
wget https://github.com/Pro/raspi-toolchain/releases/latest/download/raspi-toolchain.tar.gz wget https://github.com/Pro/raspi-toolchain/releases/latest/download/raspi-toolchain.tar.gz
``` ```
Please note that this version of the toolchain might become obsolete in the future. Please note that this version of the toolchain might become obsolete in the future.
If another toolchain installation is used, it is still recommended to unpack the toolchain in the If another toolchain installation is used, it is still recommended to unpack the toolchain in the
`/opt/cross-pi-gcc` folder so that the Eclipse configuration and helper `/opt/cross-pi-gcc` folder so that the Eclipse configuration and helper
scripts work without adaptions. Add the folder to the system path. On Linux, scripts work without adaptions. Add the folder to the system path. On Linux,
this can generally be done with the following command this can generally be done with the following command
```sh ```sh
export PATH=$PATH:"/opt/cross-pi-gcc/bin" export PATH=$PATH:"/opt/cross-pi-gcc/bin"
``` ```
You can add this line to the `.bashrc` or `.profile` file in the `$HOME` directory You can add this line to the `.bashrc` or `.profile` file in the `$HOME` directory
to add environmental variables permanently. More experienced users can to add environmental variables permanently. More experienced users can
perform this step is a shell script which is `source`d to keep the environment clean. perform this step is a shell script which is `source`d to keep the environment clean.
Test the toolchain with the following command Test the toolchain with the following command
```sh ```sh
arm-linux-gnueabihf-gcc --version arm-linux-gnueabihf-gcc --version
``` ```
2. Set up a sysroot folder on the local host machine. Make sure the SSH connection to 2. Set up a sysroot folder on the local host machine. Make sure the SSH connection to
the Raspberry Pi is working without issues. Then perform the following steps the Raspberry Pi is working without issues. Then perform the following steps
```sh ```sh
cd ~ cd ~
mkdir raspberrypi mkdir raspberrypi
@ -117,39 +115,56 @@ toolchain binaries are added to the path accordingly.
cd rootfs cd rootfs
pwd pwd
``` ```
The result of the `pwd` command will be used later to sync the root file The result of the `pwd` command will be used later to sync the root file
system of the Raspberry Pi to the host machine. system of the Raspberry Pi to the host machine.
With a Raspberry Pi 4, you can replace `<ip-address>` with `raspberrypi.local` and With a Raspberry Pi 4, you can replace `<ip-address>` with `raspberrypi.local` and
when using the default rootfs path, you can replace `<rootfs-path>` with when using the default rootfs path, you can replace `<rootfs-path>` with
`$HOME/raspberrypi/rootfs`. `$HOME/raspberrypi/rootfs`.
```sh ```sh
rsync -vR --progress -rl --delete-after --safe-links pi@<ip-address>:/{lib,usr,opt/vc/lib} <rootfs-path> rsync -avHAXR --numeric-ids --info=progress2 <username>@<ip-address>:/{lib,usr} <rootfs-path>
``` ```
Please note that there might be issues with some symlinks or libraries not being copied properly. On Linux, it is recommended to repair some symlinks which can be problematic:
This has occured with files like `libc.so.6`. If there are linker issues at a later stage, Navigate to the folder containing the symlinks first:
you can try to rerun `rsync` without the`--safe-links` flag or copy the shared libraries or
symlinks manually from the Raspberry Pi to the sysroot with `scp`.
For example, you can copy `libc.so.6` from the Raspberry Pi to the sysroot with
the following command
```sh ```sh
scp pi@<ip-address>:lib/arm-linux-gnueabihf/lib.so.6 <rootfs-path>/lib/arm-linux-gnueabihf cd <rootfs_path>/usr/lib/arm-linux-gnueabihf
``` ```
You can now use
```sh
readlink libpthread.so
```
which will show an absolute location of a shared library the symlinks points to. This location
needs to be converted into a relative path.
Run the following command to create a relative symlinks instead of an absolute ones. The pointed
to location might change to check it with `readlink` first before removing the symlinks:
```sh
rm libpthread.so
rm librt.so
ln -s ../../../lib/arm-linux-gnueabihf/libpthread.so.0 libpthread.so
ln -s ../../../lib/arm-linux-gnueabihf/librt.so.1 librt.so
```
For more information on issues which can occur when cloning the root filesystem,
see the [troubleshooting](#troubleshooting) section.
3. It is recommended to install `gdb-multiarch`. This tool will allow remote debugging 3. It is recommended to install `gdb-multiarch`. This tool will allow remote debugging
on the host computer. You don't need to do this if the TCF agent is used. on the host computer. This step is not required if the `tcf-agent` is used.
```sh ```sh
sudo apt-get install gdb-multiarch sudo apt-get install gdb-multiarch
``` ```
4. Perform the steps [in the cross-compile section](#cross-test) to build the 4. Perform the steps [in the cross-compile section](#cross-test) to build the
software for the Raspberry Pi and test it. software for the Raspberry Pi and test it.
## Cross-Compiling on a Windows Host ## Cross-Compiling on a Windows Host
### Additional Prerequites ### Additional Prerequites
@ -168,7 +183,7 @@ toolchain binaries are added to the path accordingly.
``` ```
pacman -S mingw-w64-x86_64-cmake rsync pacman -S mingw-w64-x86_64-cmake rsync
``` ```
2. Configure the Raspberry Pi linux environment. The last section of the 2. Configure the Raspberry Pi linux environment. The last section of the
[Linux REAMDE](README-linux.md#top) specifies how to set up a UNIX environment [Linux REAMDE](README-linux.md#top) specifies how to set up a UNIX environment
for the FSFW and isalso applicable to the Raspberry Pi. SSH into the for the FSFW and isalso applicable to the Raspberry Pi. SSH into the
@ -178,14 +193,14 @@ toolchain binaries are added to the path accordingly.
You can find out the distribution release of your Raspberry Pi by running `cat /etc/rpi-issue`. You can find out the distribution release of your Raspberry Pi by running `cat /etc/rpi-issue`.
Test the toolchain by running: Test the toolchain by running:
```sh ```sh
arm-linux-gnueabihf-gcc --version arm-linux-gnueabihf-gcc --version
``` ```
4. Set up a sysroot folder on the local host machine. Make sure the SSH connection to 4. Set up a sysroot folder on the local host machine. Make sure the SSH connection to
the Raspberry Pi is working without issues. Then perform the following steps the Raspberry Pi is working without issues. Then perform the following steps
```sh ```sh
cd /c/Users/<UserName> cd /c/Users/<UserName>
mkdir raspberrypi mkdir raspberrypi
@ -194,81 +209,62 @@ toolchain binaries are added to the path accordingly.
cd rootfs cd rootfs
pwd pwd
``` ```
Store the result of `pwd`, it is going to be used by `rsync` later. Store the result of `pwd`, it is going to be used by `rsync` later.
Now use rsync to clone the Rapsberry Pi sysroot to the local host machine. Now use rsync to clone the Rapsberry Pi sysroot to the local host machine.
With a Raspberry Pi 4, you can replace `<ip-address>` with `raspberrypi.local`. With a Raspberry Pi 4, you can replace `<ip-address>` with `raspberrypi.local`.
Use the rootfs location stored from the previous steps as `<rootfs-path>`. Use the rootfs location stored from the previous steps as `<rootfs-path>`.
```sh ```sh
rsync -vR --progress -rl --delete-after --safe-links pi@<ip-address>:/{lib,usr,opt/vc/lib} <rootfs-path> rsync -vR --progress -rl --delete-after --safe-links pi@<ip-address>:/{lib,usr,opt/vc/lib} <rootfs-path>
``` ```
5. There might be some issues with the pthread symbolic links. Navigate to the folder Please note that `rsync` sometimes does not copy shared libraries or symlinks properly,
containing the symlinks which might result in errors when cross-compiling and cross-linking. It is recommended to run
the following commands in addition to the `rsync` command on Windows:
```sh ```sh
cd /c/User/<UserName>/raspberrypi/rootfs/usr/lib/arm-linux-gnueabihf scp <user_name>@<ip-address>:/lib/arm-linux-gnueabihf/{libc.so.6,ld-linux-armhf.so.3,libm.so.6} <rootfs_path>/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/{libpthread.so,libc.so,librt.so} <rootfs_path>/usr/lib/arm-linux-gnueabihf
``` ```
Type `more libpthread`, press `TAB` and check whether the symbolic For more information on issues which can occur when cloning the root filesystem,
link `libpthread.so` is shown. If it is not, we are going to set it up see the [troubleshooting](#troubleshooting) section.
manually to avoid issues when linking against `pthread` later.
5. It is recommended to install `gdb-multiarch`. This tool will allow remote debugging on the host
Run the following command to create a symlink to `libpthread.so.0` computer. Replace `x86_64` with the correct processor architecture for other architectures.
This is not required if the `tcf-agent` is used.
```sh
ln -s ../../../lib/arm-linux-gnueabihf/libpthread.so.0 libpthread.so
```
Please note that there might also be issues with some symlinks or libraries not being copied
properly. This has occured with files like `libc.so.6`. If there are linker issues at a later
stage, you can try to rerun `rsync` without `--safe-links` or copy the shared libraries or
symlinks manually from the Raspberry Pi to the sysroot with `scp`.
For example, you can copy `libc.so.6` from the Raspberry Pi to the sysroot with
the following command
```sh
scp pi@<ip-address>:lib/arm-linux-gnueabihf/lib.so.6 <rootfs-path>/lib/arm-linux-gnueabihf
```
6. It is recommended to install `gdb-multiarch`.
This tool will allow remote debugging on the host computer. Replace
`x86_64` with the correct processor architecture for other architectures.
```sh ```sh
pacman -S mingw-w64-x86_64-gdb-multiarch pacman -S mingw-w64-x86_64-gdb-multiarch
``` ```
7. Perform the steps [in the following chapter](#cross-test) to build the 6. Perform the steps [in the following chapter](#cross-test) to build the
software for the Raspberry Pi and test it. software for the Raspberry Pi and test it.
## <a id="cross-test"></a> Testing the cross-compilation ## <a id="cross-test"></a> Testing the cross-compilation
It is recommended to set the following environmental variables for the CMake build: It is recommended to set the following environmental variables for the CMake build:
- `CROSS_COMPILE`: Explicitely specify the name of the cross compiler - `CROSS_COMPILE`: Explicitely specify the name of the cross compiler
- `RASPBERRY_VERSION`: Explicitely specify the version of the Raspberry Pi - `RASPBERRY_VERSION`: Explicitely specify the version of the Raspberry Pi
- `RASPBIAN_ROOTFS`: Explicitely set the path to the local RPi rootfs - `RASPBIAN_ROOTFS`: Explicitely set the path to the local RPi rootfs
For example with the following commands For example with the following commands
```sh ```sh
export CROSS_COMPILE="arm-linux-gnueabihf" export CROSS_COMPILE="arm-linux-gnueabihf"
export RASPBERRY_VERSION="4" export RASPBERRY_VERSION="4"
export RASPBIAN_ROOTFS="<pathToRootFS>" export RASPBIAN_ROOTFS="<pathToRootFS>"
``` ```
It is recommended to test whether the environmental variables were set correctly, It is recommended to test whether the environmental variables were set correctly,
for example by running for example by running
```sh ```sh
echo $RASPBIAN_ROOTFS echo $RASPBIAN_ROOTFS
``` ```
These variables can either be set every time before a debugging session to These variables can either be set every time before a debugging session to
keep the environment clean (should be done before starting Eclipse) keep the environment clean (should be done before starting Eclipse)
or permanently by adding the `export` commands to system files. or permanently by adding the `export` commands to system files.
@ -285,32 +281,32 @@ the software, Eclipse will have the system variables from Windows,
so it is recommended to either permanently set the three environmental so it is recommended to either permanently set the three environmental
variables in the Windows system environmental variables or add them in variables in the Windows system environmental variables or add them in
Eclipse. See the [Eclipse README](README-eclipse.md#top) for more information. Eclipse. See the [Eclipse README](README-eclipse.md#top) for more information.
Now we can test whether everything was set up properly by compiling the example Now we can test whether everything was set up properly by compiling the example
and running it on the Raspberry Pi via command line. and running it on the Raspberry Pi via command line.
Navigate into the `fsfw_example` folder first. Navigate into the `fsfw_example` folder first.
1. Build the software locally to test the cross-compilation process. 1. Build the software locally to test the cross-compilation process.
We are going to create a Debug build directory first. We are going to create a Debug build directory first.
```sh ```sh
mkdir build-Debug-RPi mkdir build-Debug-RPi
cd build-Debug-RPi cd build-Debug-RPi
``` ```
2. Configure the build system. On Linux, run the following command: 2. Configure the build system. On Linux, run the following command:
```sh ```sh
cmake -G "Unix Makefiles" -DOS_FSFW=linux -DTGT_BSP=arm/raspberrypi -DLINUX_CROSS_COMPILE=ON -DCMAKE_BUILD_TYPE=Debug .. cmake -G "Unix Makefiles" -DOS_FSFW=linux -DTGT_BSP=arm/raspberrypi -DLINUX_CROSS_COMPILE=ON -DCMAKE_BUILD_TYPE=Debug ..
``` ```
On Windows, replace `-G "Unix Makefiles"` with `-G "MinGW Makefiles"`. On Windows, replace `-G "Unix Makefiles"` with `-G "MinGW Makefiles"`.
Alternatively, you can use the helper shell scripts located inside `cmake/scripts/RPi/crosscompile` Alternatively, you can use the helper shell scripts located inside `cmake/scripts/RPi/crosscompile`
or the Python helper script `cmake_build_config.py` inside the `cmake/scripts` folder. or the Python helper script `cmake_build_config.py` inside the `cmake/scripts` folder.
The `RPi` folder also contains template shell files which can be `source`d The `RPi` folder also contains template shell files which can be `source`d
to quickly set up the environmental variables if you want to keep the system path clean. to quickly set up the environmental variables if you want to keep the system path clean.
3. Run the binary to test it 3. Run the binary to test it
```sh ```sh
@ -318,13 +314,13 @@ Navigate into the `fsfw_example` folder first.
ssh pi@raspberrypi.local ssh pi@raspberrypi.local
./fsfw_example ./fsfw_example
``` ```
### Setting up Eclipse for a Raspberry Pi remote target ### Setting up Eclipse for a Raspberry Pi remote target
It is recommended to use the provided Eclipse project files and It is recommended to use the provided Eclipse project files and
launch configurations to have a starting point. See the specific section in launch configurations to have a starting point. See the specific section in
the [Eclipse README](README-eclipse.md#top) for information how to do this. the [Eclipse README](README-eclipse.md#top) for information how to do this.
#### Windows #### Windows
There are some additional steps necessary on Windows: The cross-compiler by There are some additional steps necessary on Windows: The cross-compiler by
@ -333,7 +329,6 @@ The toolchain path needs to be corrected, for example like shown in the followin
<img align="center" src="./images/eclipse/eclipse-cross-compile-win.png" width="50%"> <img align="center" src="./images/eclipse/eclipse-cross-compile-win.png" width="50%">
## Setting up the TCF agent on the Raspberry Pi ## Setting up the TCF agent on the Raspberry Pi
It is recommended to set up a [TCF agent](https://wiki.eclipse.org/TCF) for comfortable It is recommended to set up a [TCF agent](https://wiki.eclipse.org/TCF) for comfortable
@ -346,28 +341,27 @@ from [this guide](https://wiki.eclipse.org/TCF/Raspberry_Pi)
```sh ```sh
sudo apt-get install git uuid uuid-dev libssl-dev sudo apt-get install git uuid uuid-dev libssl-dev
``` ```
2. Clone the repository and perform some preparation steps 2. Clone the repository and perform some preparation steps
```sh ```sh
git clone git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git git clone git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git
cd org.eclipse.tcf.agent.git/agent cd org.eclipse.tcf.agent.git/agent
cp -R machine/arm machine/armv6l
``` ```
3. Build the TCF agent 3. Build the TCF agent
```sh ```sh
make make
``` ```
and then test it by running and then test it by running
```sh ```sh
obj/GNU/Linux/armv6l/Debug/agent S obj/GNU/Linux/arm/Debug/agent S
``` ```
4. Finally instal lthe agent for auto-start with the following steps. The last step 4. Finally instal lthe agent for auto-start with the following steps and set it up for auto-start.
did not work on a Rapsberry Pi 4, but apparentely was not necessary. The last step did not work on a Rapsberry Pi 4, but apparentely was not necessary.
```sh ```sh
cd org.eclipse.tcf.agent/agent cd org.eclipse.tcf.agent/agent
make install make install
@ -375,6 +369,63 @@ from [this guide](https://wiki.eclipse.org/TCF/Raspberry_Pi)
sudo update-rc.d tcf-agent defaults sudo update-rc.d tcf-agent defaults
sudo update-rc.d tcf-agent enable 2 sudo update-rc.d tcf-agent enable 2
``` ```
The [Eclipse README](README-eclipse.md#top) specifies how to perform remote The [Eclipse README](README-eclipse.md#top) specifies how to perform remote
debugging using the TCF agent. debugging using the TCF agent.
# <a id="troubleshooting"></a> Troubleshooting
## Cloning the root filesystem
There might be some issues with the pthread symbolic links.
Navigate to the folder containing the symlinks
```sh
cd <rootfs_path>/usr/lib/arm-linux-gnueabihf
```
Type `more libpthread`, press `TAB` and check whether the symbolic
link `libpthread.so` is shown. If it is not, we are going to set it up
manually to avoid issues when linking against `pthread` later.
Now you can find out where `libpthread.so` points with `readlink libpthread.so`.
This information is used to convert the absolute symlink to relative ones, for example with:
Run the following command to copy the symlink `libpthread.so.0` if it does not exist yet:
```sh
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/libpthread.so .
```
Alternatively, you can correct the symlinks to use relative paths, for example with:
```sh
ln -s ../../../lib/arm-linux-gnueabihf/libpthread.so.0 libpthread.so
ln -s ../../../lib/arm-linux-gnueabihf/librt.so.1 librt.so
```
Please note that there might also be issues with some symlinks or libraries not being copied
properly, especially on Windows. This has occured with files like `libc.so.6`.
If there are linker issues at a later stage, you can try to copy the symlinks manually from the
Linux board to the sysroot with `scp`.
For example, you can copy `libc.so.6` from the Linux board to the sysroot with
the following command
If there are issues with the cross-compilation process, manually copying the following
symlinks can help:
```sh
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/libc.so <rootfs_path>/usr/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/libc.a <rootfs_path>/usr/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/librt.a <rootfs_path>/usr/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/usr/lib/arm-linux-gnueabihf/librt.so <rootfs_path>/usr/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/lib/arm-linux-gnueabihf/librt.so.1 <rootfs_path>/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/lib/arm-linux-gnueabihf/libpthread.so.0 <rootfs_path>/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3 <rootfs_path>/lib/arm-linux-gnueabihf
scp <user_name>@<ip-address>:/lib/arm-linux-gnueabihf/libc.so.6 <rootfs_path>/lib/arm-linux-gnueabihf
```
If any custom libraries are used which rely on symlinks, it might be necessary to copy them
or create them manually as well.

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

2
fsfw

Submodule fsfw updated: 097244bf8b...b06113993c

View File

@ -18,7 +18,7 @@
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494." name="/" resourcePath=""> <folderInfo id="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.base.278840997" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base"> <toolChain id="cdt.managedbuild.toolchain.gnu.base.278840997" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.1841242502" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.1841242502" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
<builder arguments="--build ." buildPath="${workspace_loc:/fsfw_example/build-Debug-Linux}" command="cmake" id="cdt.managedbuild.target.gnu.builder.base.1872525696" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/> <builder arguments="--build ." buildPath="${workspace_loc:/fsfw_example_public/build-Debug-Linux}" command="cmake" id="cdt.managedbuild.target.gnu.builder.base.1872525696" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1985468037" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> <tool id="cdt.managedbuild.tool.gnu.archiver.base.1985468037" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1424606859" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base"> <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1424606859" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.642413900" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.642413900" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
@ -70,7 +70,7 @@
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494.1347848179." name="/" resourcePath=""> <folderInfo id="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494.1347848179." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.base.159290000" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base"> <toolChain id="cdt.managedbuild.toolchain.gnu.base.159290000" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64;org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.1930506317" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64;org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.1930506317" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
<builder arguments="--build ." buildPath="${workspace_loc:/fsfw_example/build-Release-Linux}" command="cmake" id="cdt.managedbuild.target.gnu.builder.base.1965960475" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/> <builder arguments="--build ." buildPath="${workspace_loc:/fsfw_example_public/build-Release-Linux}" command="cmake" id="cdt.managedbuild.target.gnu.builder.base.1965960475" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1609672491" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> <tool id="cdt.managedbuild.tool.gnu.archiver.base.1609672491" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1491459311" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base"> <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1491459311" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.1743900662" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.1743900662" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
@ -122,7 +122,7 @@
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494.615695818." name="/" resourcePath=""> <folderInfo id="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494.615695818." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.base.623801143" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base"> <toolChain id="cdt.managedbuild.toolchain.gnu.mingw.base.623801143" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64;org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.mingw.base.1711871351" name="Debug Platform" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64;org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.mingw.base.1711871351" name="Debug Platform" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/>
<builder arguments="--build ." autoBuildTarget="all" buildPath="${workspace_loc:/fsfw_example/build-Debug-Host}" cleanBuildTarget="clean" command="cmake" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="cdt.managedbuild.builder.gnu.cross.1761965921" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.builder.gnu.cross"/> <builder arguments="--build ." autoBuildTarget="all" buildPath="${workspace_loc:/fsfw_example_public/build-Debug-Host}" cleanBuildTarget="clean" command="cmake" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="cdt.managedbuild.builder.gnu.cross.1761965921" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.builder.gnu.cross"/>
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.base.13166088" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.base"> <tool id="cdt.managedbuild.tool.gnu.assembler.mingw.base.13166088" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.base">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1629700138" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1629700138" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool> </tool>
@ -174,7 +174,7 @@
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494.615695818.954051921." name="/" resourcePath=""> <folderInfo id="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494.615695818.954051921." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.base.1448115319" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base"> <toolChain id="cdt.managedbuild.toolchain.gnu.mingw.base.1448115319" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64;org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.mingw.base.169860740" name="Debug Platform" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64;org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.mingw.base.169860740" name="Debug Platform" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/>
<builder arguments="--build ." autoBuildTarget="all" buildPath="${workspace_loc:/fsfw_example/Release-Host}" cleanBuildTarget="clean" command="cmake" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="cdt.managedbuild.builder.gnu.cross.1108079754" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.builder.gnu.cross"/> <builder arguments="--build ." autoBuildTarget="all" buildPath="${workspace_loc:/fsfw_example_public/build-Release-Host}" cleanBuildTarget="clean" command="cmake" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="cdt.managedbuild.builder.gnu.cross.1108079754" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.builder.gnu.cross"/>
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.base.1193239387" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.base"> <tool id="cdt.managedbuild.tool.gnu.assembler.mingw.base.1193239387" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.base">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1144625128" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1144625128" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool> </tool>
@ -300,7 +300,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1998715444" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1998715444" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1164065327" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1164065327" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.859936413" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.859936413" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder arguments="--build ." autoBuildTarget="all" buildPath="${workspace_loc:/fsfw_example/build-Debug-RPi}" cleanBuildTarget="clean" command="cmake" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="ilg.gnuarmeclipse.managedbuild.cross.builder.510727936" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/> <builder arguments="--build ." autoBuildTarget="all" buildPath="${workspace_loc:/fsfw_example_public/build-Debug-RPi}" cleanBuildTarget="clean" command="cmake" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="ilg.gnuarmeclipse.managedbuild.cross.builder.510727936" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1275243710" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler"> <tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1275243710" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1772374282" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1772374282" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1512175823" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/> <inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1512175823" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
@ -441,7 +441,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1941954257" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1941954257" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1643607730" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1643607730" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1156260373" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1156260373" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder arguments="--build ." autoBuildTarget="all" buildPath="${workspace_loc:/fsfw_example/build-Release-RPi}" cleanBuildTarget="clean" command="cmake" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="ilg.gnuarmeclipse.managedbuild.cross.builder.221137140" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/> <builder arguments="--build ." autoBuildTarget="all" buildPath="${workspace_loc:/fsfw_example_public/build-Release-RPi}" cleanBuildTarget="clean" command="cmake" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="ilg.gnuarmeclipse.managedbuild.cross.builder.221137140" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1050996101" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler"> <tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1050996101" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.577446546" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.577446546" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1908565237" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/> <inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1908565237" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
@ -587,7 +587,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1229082279" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1229082279" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1853005011" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1853005011" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64;org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.787378269" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64;org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.787378269" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder arguments="--build ." autoBuildTarget="all" buildPath="${workspace_loc:/fsfw_example/build-Debug-STM32H743-RTEMS}" cleanBuildTarget="clean" command="cmake" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="ilg.gnuarmeclipse.managedbuild.cross.builder.2086445741" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/> <builder arguments="--build ." autoBuildTarget="all" buildPath="${workspace_loc:/fsfw_example_public/build-Debug-STM32H743-RTEMS}" cleanBuildTarget="clean" command="cmake" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="ilg.gnuarmeclipse.managedbuild.cross.builder.2086445741" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.69591689" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler"> <tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.69591689" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.823743724" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.823743724" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1507142905" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath"> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1507142905" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
@ -747,7 +747,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1883044707" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1883044707" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1981903948" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1981903948" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64;org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.633957164" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64;org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.633957164" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder arguments="--build ." buildPath="${workspace_loc:/fsfw_example/build-Release-STM32H743-RTEMS}" command="cmake" id="ilg.gnuarmeclipse.managedbuild.cross.builder.744774495" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/> <builder arguments="--build ." buildPath="${workspace_loc:/fsfw_example_public/build-Release-STM32H743-RTEMS}" command="cmake" id="ilg.gnuarmeclipse.managedbuild.cross.builder.744774495" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1724462366" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler"> <tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1724462366" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1298708475" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1298708475" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.488497726" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath"> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.488497726" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
@ -900,7 +900,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.211372987" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.211372987" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1913468245" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.1913468245" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.197500878" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.197500878" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder arguments="--build ." buildPath="${workspace_loc:/fsfw_example/build-Debug-STM32H743-FreeRTOS}" command="cmake" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1059796223" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/> <builder arguments="--build ." buildPath="${workspace_loc:/fsfw_example_public/build-Debug-STM32H743-FreeRTOS}" command="cmake" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1059796223" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.43129417" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler"> <tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.43129417" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.82715789" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.82715789" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.671384657" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols"> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.671384657" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
@ -1056,7 +1056,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1424010361" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1424010361" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.213201916" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.213201916" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1241442493" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1241442493" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder arguments="--build ." buildPath="${workspace_loc:/fsfw_example/build-Release-STM32H743-FreeRTOS}" command="cmake" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1531059207" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/> <builder arguments="--build ." buildPath="${workspace_loc:/fsfw_example_public/build-Release-STM32H743-FreeRTOS}" command="cmake" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1531059207" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.672489248" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler"> <tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.672489248" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1922193266" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1922193266" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1784187041" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/> <inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1784187041" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>fsfw_example</name> <name>fsfw_example_public</name>
<comment></comment> <comment></comment>
<projects> <projects>
</projects> </projects>

View File

@ -18,11 +18,11 @@
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/> <booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/> <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build-Debug-Linux/fsfw_example"/> <stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build-Debug-Linux/fsfw_example"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="fsfw_example"/> <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="fsfw_example_public"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/> <booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494"/> <stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/fsfw_example"/> <listEntry value="/fsfw_example_public"/>
</listAttribute> </listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/> <listEntry value="4"/>

View File

@ -19,11 +19,11 @@
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/> <booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/> <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build-Debug-Host/fsfw_example.exe"/> <stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build-Debug-Host/fsfw_example.exe"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="fsfw_example"/> <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="fsfw_example_public"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/> <booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494.615695818"/> <stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494.615695818"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/fsfw_example"/> <listEntry value="/fsfw_example_public"/>
</listAttribute> </listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/> <listEntry value="4"/>

View File

@ -19,11 +19,11 @@
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/> <booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/> <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build-Release-Host/fsfw_example.exe"/> <stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build-Release-Host/fsfw_example.exe"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="fsfw_example"/> <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="fsfw_example_public"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/> <booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494.615695818.954051921"/> <stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.toolchain.gnu.base.450259316.1933681494.615695818.954051921"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/fsfw_example"/> <listEntry value="/fsfw_example_public"/>
</listAttribute> </listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/> <listEntry value="4"/>

View File

@ -1,7 +1,7 @@
#include <fsfw/ipc/QueueFactory.h> #include <fsfw/ipc/QueueFactory.h>
#include <fsfw/tmtcpacket/pus/TmPacketStored.h> #include <fsfw/tmtcpacket/pus/TmPacketStored.h>
#include <fsfw/serviceinterface/ServiceInterface.h> #include <fsfw/serviceinterface/ServiceInterface.h>
#include <fsfw/tmtcpacket/pus/TmPacketBase.h> #include <fsfw/tmtcpacket/pus/TmPacketPusC.h>
#include <mission/utility/TmFunnel.h> #include <mission/utility/TmFunnel.h>
object_id_t TmFunnel::downlinkDestination = objects::NO_OBJECT; object_id_t TmFunnel::downlinkDestination = objects::NO_OBJECT;
@ -50,7 +50,7 @@ ReturnValue_t TmFunnel::handlePacket(TmTcMessage* message) {
if(result != HasReturnvaluesIF::RETURN_OK){ if(result != HasReturnvaluesIF::RETURN_OK){
return result; return result;
} }
TmPacketBase packet(packetData); TmPacketPusC packet(packetData);
packet.setPacketSequenceCount(this->sourceSequenceCount); packet.setPacketSequenceCount(this->sourceSequenceCount);
sourceSequenceCount++; sourceSequenceCount++;
sourceSequenceCount = sourceSequenceCount % sourceSequenceCount = sourceSequenceCount %

1
spdlog Submodule

Submodule spdlog added at 87133ef6b7

View File

@ -3,6 +3,12 @@
#include <fsfw/objectmanager/ObjectManagerIF.h> #include <fsfw/objectmanager/ObjectManagerIF.h>
#include <fsfw/serviceinterface/ServiceInterface.h> #include <fsfw/serviceinterface/ServiceInterface.h>
#define TEST_SPDLOG 1
#if TEST_SPDLOG == 1
#include "spdlog/spdlog.h"
#endif
bool TestTask::oneShotAction = true; bool TestTask::oneShotAction = true;
MutexIF* TestTask::testLock = nullptr; MutexIF* TestTask::testLock = nullptr;
@ -45,6 +51,9 @@ ReturnValue_t TestTask::performOperation(uint8_t operationCode) {
ReturnValue_t TestTask::performOneShotAction() { ReturnValue_t TestTask::performOneShotAction() {
/* Everything here will only be performed once. */ /* Everything here will only be performed once. */
#if TEST_SPDLOG == 1
spdlog::info("Welcome to spdlog!");
#endif
return HasReturnvaluesIF::RETURN_OK; return HasReturnvaluesIF::RETURN_OK;
} }

View File

@ -13,7 +13,7 @@
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtc_client_cli.py" /> <option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtc_client_cli.py" />
<option name="PARAMETERS" value="-m onecmd -s 200 -t 4" /> <option name="PARAMETERS" value="-m seqcmd -s 200 -t 4" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="true" /> <option name="EMULATE_TERMINAL" value="true" />
<option name="MODULE_MODE" value="false" /> <option name="MODULE_MODE" value="false" />

View File

@ -4,7 +4,6 @@ from typing import Dict, Union, Tuple
from tmtccmd.core.hook_base import TmTcHookBase from tmtccmd.core.hook_base import TmTcHookBase
from tmtccmd.ecss.tc import PusTelecommand from tmtccmd.ecss.tc import PusTelecommand
from tmtccmd.pus_tm.service_3_base import Service3Base from tmtccmd.pus_tm.service_3_base import Service3Base
from tmtccmd.ecss.conf import PusVersion
class FsfwHookBase(TmTcHookBase): class FsfwHookBase(TmTcHookBase):
@ -20,16 +19,18 @@ class FsfwHookBase(TmTcHookBase):
def add_globals_pre_args_parsing(self, gui: bool = False): def add_globals_pre_args_parsing(self, gui: bool = False):
from tmtccmd.defaults.globals_setup import set_default_globals_pre_args_parsing from tmtccmd.defaults.globals_setup import set_default_globals_pre_args_parsing
set_default_globals_pre_args_parsing(gui=gui, apid=0xef, pus_tm_version=PusVersion.PUS_A) set_default_globals_pre_args_parsing(gui=gui, apid=0xef)
def add_globals_post_args_parsing(self, args: argparse.Namespace, json_cfg_path: str = ""): def add_globals_post_args_parsing(self, args: argparse.Namespace):
from tmtccmd.defaults.globals_setup import set_default_globals_post_args_parsing from tmtccmd.defaults.globals_setup import set_default_globals_post_args_parsing
set_default_globals_post_args_parsing(args=args, json_cfg_path=json_cfg_path) set_default_globals_post_args_parsing(args=args, json_cfg_path=self.set_json_config_file_path())
def assign_communication_interface(self, com_if: int, tmtc_printer: TmTcPrinter) -> \ def assign_communication_interface(self, com_if: int, tmtc_printer: TmTcPrinter) -> \
Union[CommunicationInterface, None]: Union[CommunicationInterface, None]:
from tmtccmd.defaults.com_setup import create_communication_interface_default from tmtccmd.defaults.com_setup import create_communication_interface_default
return create_communication_interface_default(com_if=com_if, tmtc_printer=tmtc_printer) return create_communication_interface_default(
com_if=com_if, tmtc_printer=tmtc_printer, json_cfg_path=self.set_json_config_file_path()
)
def perform_mode_operation(self, tmtc_backend: TmTcHandler, mode: int): def perform_mode_operation(self, tmtc_backend: TmTcHandler, mode: int):
print("No custom mode operation implemented") print("No custom mode operation implemented")

View File

@ -1,5 +1,4 @@
from tmtccmd.core.definitions import QueueCommands from tmtccmd.core.definitions import QueueCommands
from tmtccmd.core.object_id_manager import get_object_id
from tmtccmd.pus_tc.service_200_mode import pack_mode_data from tmtccmd.pus_tc.service_200_mode import pack_mode_data
from tmtccmd.pus_tc.service_20_parameter import pack_boolean_parameter_command from tmtccmd.pus_tc.service_20_parameter import pack_boolean_parameter_command
from tmtccmd.pus_tc.service_3_housekeeping import make_sid, generate_one_hk_command, \ from tmtccmd.pus_tc.service_3_housekeeping import make_sid, generate_one_hk_command, \