Image taken from [Eclipse website](https://www.eclipse.org/artwork/) Eclipse is a general purpose IDE, which was initially developed for Java but has evolved to be used for C/C++ as well. It is the recommended IDE to develop Software with the FSFW because it is cross-platform, provides useful features like an indexer and can be configured with moderate effort to use the Make and CMake build systems. ## Setting up Eclipse - General Eclipse project files and launch configurations were provided to have a starting point for application development with Eclipse. It is recommended to use those files and delete unneeded run configurations manually. There are separate project files to either use the Makefiles or CMake. 1. Install [Eclipse for C/C++](https://www.eclipse.org/downloads/packages/) using the installer. Install the Eclipse MCU plugin for the STM32 and Raspberry Pi example by going to Help → Eclipse Marketplace and searching and installing the plugin 2. For the STM32, the ARM toolchain (and Windows Build Tools on Windows) should have been installed previously. Go to Window → Preferences → MCU → Global ARM Toolchain and Windows Build Tools. Packages installed with xpm should be recognized automatically. 3. Setting up the indexer: It is recommended to use the separate indexers for each run configurations. Right click on the project folder in the tree view, go to Properties → C/C++ General → Indexer and set the indexer as shown below. 4. Cross-Compiling: In general, the provided project configurations should set up the cross compiler properly. However, if there are issues, the user should check whether the compilers are set up properly. Right click on the project folder in the tree view, go to Properties → C/C++ Build → Tool Chain Editor and set the correct editor. Then go to Properties → C/C++ Build → Settings and check whether the cross-compiler paths are correct. ## Setting up Eclipse for a hosted CMake projects 1. Copy the files `.project` and `.cproject` inside the misc/eclipse/make folder into the root of the cloned folder. This will add all build configurations. ```sh cd fsfw_example cp misc/eclipse/cmake/.project . cp misc/eclipse/cmake/.cproject . ``` 2. Import the project now by going to File → Import → Existing Projects and selecting the cloned folder. Only check the root folder, Eclipse will try to import every folder which contains `.project` or `.cproject` files! 3. Set up the build folders. Helper scripts have been provided to perform this task and have a starting point, but a valid Python 3 installation is required for them to work. For example, to create the build folder `Debug` and build the software with the FSFW Host OSAL on Windows or Linux, perform the following steps in the MinGW64 command line or Linux terminal after navigating into the cloned example folder: ```sh cd buildsystem/cmake/scripts/Host ./create_cmake_debug_cfg.sh ``` The shell script can also be run by double clicking it in Windows as long as it is executed by the MinGW terminal. This shell script will first create a new Debug folder (and delete the old one) and then execute the following command in the Debug folder on Windows ```sh cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DOS_FSFW=host ``` or the following command on Linux: ```sh cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DOS_FSFW=host ``` For example, the execution of the script in MinGW64 on Windows should show the following output: 4. The build system is now ready to be used in Eclipse. Select the `fsfw-mingw-debug-cmake` (Windows) or `fsfw-linux-debug-cmake` (Linux) launch configuration in Eclipse and press the hammer button to build the software or the bug button to debug the software for a host machine. This will invoke `cmake --build . -j` in the respective build folders to build the software. ## Seting up Eclipse for Raspberry Pi projects - Remote Application Eclipse is configured to assume that the toolchain is located in `/opt/cross-pi-gcc/bin` and will deduce settings and compiler specs automatically (e.g. for the indexer) if the provides build and launch configurations are used. Adapt the toolchain path accordingly if is installed somewhere else. Follow steps one and two of the previous section. 3. Set up the run configuration properly by setting up a SSH connection with your Raspberry Pi. Go to Run → Debug Configurations.., look for the `C/C++ Remote Application` section and click on one of the configurations provided for the Raspberry Pi. A new SSH connection should be set up here. The following image shows an example 4. Set up the build folders if this was not done already. We are going to do this with the script ```sh cd buildsystem/cmake/scripts/RPi ./create_cmake_debug_cfg.sh ``` 5. The build system is now ready to be used in Eclipse. Select the `fsfw-rpi-debug-cmake` launch configuration and press the run or debug button in the top panel on the right side to run or debug the application. If there are issues, ensure that the Launch Configuration uses the correct SSH settings to connect to the Raspberry Pi. On Windows, MinGW Makefiles are used for the cross-compilation process, but Eclipse will only have the Windows environmental variables cached. This can lead to issues with the CMake build if it is configured in MinGW64. It is recommended to add the `RASPBIAN_ROOTFS` and the `RASPBERRY_VERSION` variable to the Windows environmental variables. The following picture shows an example: Alternatively, you can also add them to the Eclipse environmental variables in Properties → C/C++ Build → Environment ## Setting up Eclipse for Raspberry Pi projects - TCF agent Alternatively, the [TCF agent](https://wiki.eclipse.org/TCF) can be used as a more generic and powerful tool to perform remote debugging. 1. Install the TCF agent plugin in Eclipse from the [releases](https://www.eclipse.org/tcf/downloads.php). Go to Help → Install New Software and use the download page, for example https://download.eclipse.org/tools/tcf/releases/1.6/1.6.2/ to search for the plugin and install it. 2. Go to Window → Perspective → Open Perspective and open the **Target Explorer Perspective**. Here, the Raspberry Pi should show up if the TCF agent has been set up on the Raspberry Pi as specified [here](https://wiki.eclipse.org/TCF/Raspberry_Pi) or in the respective [README](README-rpi.md#top). Connect to it. 3. Create a new **TCF Remote Application**. No launch configuration has been provided because the IP address can change regularly. - Create a new the configuration by pressing the cogs button at the top or going to Run → Debug Configurations → Remote Application and creating a new one there. - Select the TCF connection, the correct image in the main tab (it might be necessary to send it the the Raspberry Pi manually once) and file transfer properties - It is also recommended to link the correct Eclipse project. After that, comfortable remote debugging should be possible with the Debug button. ## Setting up Eclipse for the Makefile projects The Makefiles are not maintained anymore and it is recommended to use the CMake build configurations instead. 1. Copy the files `.project` and `.cproject` inside the misc/eclipse/make folder into the root of the cloned folder. This will add all build configurations. Configurations which are not required can be deleted manually. ```sh cd fsfw_example cp misc/eclipse/make/.project . cp misc/eclipse/make/.cproject . ``` 2. Import the project now by going to File → Import → Existing Projects and selecting the cloned folder. 3. It should now be possible to build and debug the program by selecting the correct launch configuration in the top panel and hitting the hammer or debug button.