Updated FSFW #14
138
README.md
138
README.md
@ -16,55 +16,118 @@ Target systems:
|
|||||||
* Linux Kernel https://github.com/XiphosSystemsCorp/linux-xlnx.git
|
* Linux Kernel https://github.com/XiphosSystemsCorp/linux-xlnx.git
|
||||||
* Host System
|
* Host System
|
||||||
* Generic software components which are not dependant on hardware can also
|
* Generic software components which are not dependant on hardware can also
|
||||||
be run. All host code is contained in the hosted folder
|
be run on a host system. All host code is contained in the `bsp_hosted` folder
|
||||||
* Tested for Linux (Ubuntu 20.04) and Windows 10
|
* Tested for Linux (Ubuntu 20.04) and Windows 10
|
||||||
* Raspberry Pi
|
* Raspberry Pi
|
||||||
* EIVE OBC can be built for Raspberry Pi as well (either directly on Raspberry Pi or by installing a cross compiler)
|
* EIVE OBC can be built for Raspberry Pi as well (either directly on Raspberry Pi or by installing a cross compiler)
|
||||||
|
|
||||||
The steps in the primary README are related to the main OBC target Q7S.
|
The steps in the primary README are related to the main OBC target Q7S.
|
||||||
|
The CMake build system can be used to generate build systems as well (see helper scripts in `cmake/scripts`:
|
||||||
|
|
||||||
|
- Linux (Raspberry Pi): Using the `bsp_rpi` BSP folder, and a very similar cross-compiler.
|
||||||
|
For running the software on a Raspberry Pi, it is recommended to follow the steps specified in
|
||||||
|
[the fsfw example](https://egit.irs.uni-stuttgart.de/fsfw/fsfw_example/src/branch/mueller/master/doc/README-rpi.md#top) and
|
||||||
|
using the TCF agent to have a similar set-up process also required for the Q7S.
|
||||||
|
- Linux Host: Uses the `bsp_hosted` BSP folder and the CMake Unix Makefiles generator.
|
||||||
|
- Windows Host: Uses the `bsp_hosted` BSP folder, the CMake MinGW Makefiles generator and MSYS2.
|
||||||
|
|
||||||
## Setting up development environment
|
## Setting up development environment
|
||||||
|
|
||||||
|
### Installing Vivado the the Xilinx development tools
|
||||||
|
|
||||||
* Install Vivado 2018.2 and Xilinx SDK from https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html.
|
* Install Vivado 2018.2 and Xilinx SDK from https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html.
|
||||||
Install the Vivado Design Suite - HLx Editions - 2018.2 Full Product Installation instead of the updates. It is recommended to use the installer
|
Install the Vivado Design Suite - HLx Editions - 2018.2 Full Product Installation instead of the updates. It is recommended to use the installer.
|
||||||
|
|
||||||
* Install settings. In the Devices selection, it is sufficient to pick SoC → Zynq-7000: <br>
|
* Install settings. In the Devices selection, it is sufficient to pick SoC → Zynq-7000: <br>
|
||||||
<img src="./doc/img/xilinx-install.PNG" width="50%"> <br>
|
|
||||||
|
<img src="./doc/img/xilinx-edition.png" width="40%"> <br>
|
||||||
|
<img src="./doc/img/vivado-hl-design.png" width="40%"> <br>
|
||||||
|
<img src="./doc/img/xilinx-install.png" width="40%"> <br>
|
||||||
|
|
||||||
* For supported OS refer to https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_2/ug973-vivado-release-notes-install-license.pdf
|
* For supported OS refer to https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_2/ug973-vivado-release-notes-install-license.pdf
|
||||||
* Add path of linux cross-compiler to environment variables SDK\2018.2\gnu\aarch32\nt\gcc-arm-linux-gnueabi\bin
|
* Add path of linux cross-compiler to permanent environment variables (`.profile` file in Linux):
|
||||||
* Install make (only on windows, SDK on Linux can use the make installed with the SDK)
|
`<XilinxInstallation>SDK\2018.2\gnu\aarch32\nt\gcc-arm-linux-gnueabi\bin`
|
||||||
|
or set up path each time before debugging.
|
||||||
|
|
||||||
### Installing make on Windows
|
### Installing CMake and MSYS2 on Windows
|
||||||
1. Install NodeJS LTS
|
|
||||||
2. Install xpm
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install --global xpm
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Install Windows build tools (after installation also linux commands like mkdir can be used from windows)
|
1. Install [MSYS2](https://www.msys2.org/) and [CMake](https://cmake.org/download/) first.
|
||||||
|
|
||||||
```sh
|
2. Open the MinGW64 console. It is recommended to set up aliases in `.bashrc` to navigate to the
|
||||||
xpm install --global @xpack-dev-tools/windows-build-tools@latest
|
software repository quickly
|
||||||
```
|
|
||||||
|
3. Run the following commands in MinGW64
|
||||||
|
|
||||||
## Building the software
|
```sh
|
||||||
|
pacman -Syuuu
|
||||||
|
```
|
||||||
|
|
||||||
|
It is recommended to install the full base development toolchain
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pacman -S base-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
It is also possible to only install required packages
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-make mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb python3
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installing CMake on Linux
|
||||||
|
|
||||||
|
1. Run the following command
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt-get install cmake
|
||||||
|
````
|
||||||
|
|
||||||
|
## Building the software with CMake
|
||||||
|
|
||||||
|
When using Windows, run theses steps in MSYS2.
|
||||||
|
|
||||||
1. Clone the repository with
|
1. Clone the repository with
|
||||||
```sh
|
```sh
|
||||||
git clone https://egit.irs.uni-stuttgart.de/eive/eive_obsw.git
|
git clone https://egit.irs.uni-stuttgart.de/eive/eive_obsw.git
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Update all the submodules
|
2. Update all the submodules
|
||||||
```sh
|
|
||||||
git submodule init
|
|
||||||
git submodule sync
|
|
||||||
git submodule update
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Open Xilinx SDK 2018.2
|
```sh
|
||||||
4. Import project
|
git submodule init
|
||||||
|
git submodule sync
|
||||||
|
git submodule update
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Ensure that the cross-compiler is working with `arm-linux-gnueabihf-gcc --version`.
|
||||||
|
It is recommended to run the shell script `win_path_helper_xilinx_tools.sh` in `cmake/scripts/Q7S`
|
||||||
|
or to set up the [PATH and the CROSS_COMPILE variable permanently](https://unix.stackexchange.com/questions/26047/how-to-correctly-add-a-path-to-path)
|
||||||
|
in the `.profile` file.
|
||||||
|
|
||||||
|
4. Run the CMake configuration to create the build system in a `Debug` folder.
|
||||||
|
Navigate into the `eive_obsw` folder first.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd cmake/scripts/Q7S`
|
||||||
|
./create_cmake_debug.sh
|
||||||
|
cd ../../..
|
||||||
|
```
|
||||||
|
|
||||||
|
This will invoke a Python script which in turn invokes CMake with the correct
|
||||||
|
arguments to configure CMake for Q7S cross-compilation.
|
||||||
|
|
||||||
|
5. Build the software with
|
||||||
|
```sh
|
||||||
|
cd Debug
|
||||||
|
cmake --build . -j
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building in Xilinx SDK 2018.2
|
||||||
|
|
||||||
|
1. Open Xilinx SDK 2018.2
|
||||||
|
2. Import project
|
||||||
* File → Import → C/C++ → Existing Code as Makefile Project
|
* File → Import → C/C++ → Existing Code as Makefile Project
|
||||||
5. Set build command. Replace \<target\> with either debug or release.
|
3. Set build command. Replace \<target\> with either debug or release.
|
||||||
* When on Linux right click project → Properties → C/C++ Build → Set build command to `make <target> -j`
|
* When on Linux right click project → Properties → C/C++ Build → Set build command to `make <target> -j`
|
||||||
* -j causes the compiler to use all available cores
|
* -j causes the compiler to use all available cores
|
||||||
* The target is used to either compile the debug or the optimized release build.
|
* The target is used to either compile the debug or the optimized release build.
|
||||||
@ -73,11 +136,13 @@ git submodule update
|
|||||||
* Target name: all
|
* Target name: all
|
||||||
* Uncheck "Same as the target name"
|
* Uncheck "Same as the target name"
|
||||||
* Uncheck "Use builder settings"
|
* Uncheck "Use builder settings"
|
||||||
* As build command type: `make -j <target> WINDOWS=1`
|
* As build command type: `cmake --build .`
|
||||||
6. Run build command by double clicking the created target or by right clicking
|
* In the Behaviour tab, you can enable build acceleration
|
||||||
|
4. Run build command by double clicking the created target or by right clicking
|
||||||
the project folder and selecting Build Project.
|
the project folder and selecting Build Project.
|
||||||
|
|
||||||
## Debugging the software (when workstation is directly conncected to Q7S)
|
## Debugging the software (when workstation is directly conncected to Q7S)
|
||||||
|
|
||||||
1. Assign static IP address to Q7S
|
1. Assign static IP address to Q7S
|
||||||
* Open serial console of Q7S (Accessible via the micro-USB of the PIM, see also Q7S user maunal chapter 10.3)
|
* Open serial console of Q7S (Accessible via the micro-USB of the PIM, see also Q7S user maunal chapter 10.3)
|
||||||
* Baudrate 115200
|
* Baudrate 115200
|
||||||
@ -96,6 +161,7 @@ git submodule update
|
|||||||
* When IP address is set to 192.168.133.10 and the netmask is 255.255.255.0, an example IP address for the workstation
|
* When IP address is set to 192.168.133.10 and the netmask is 255.255.255.0, an example IP address for the workstation
|
||||||
is 192.168.133.2
|
is 192.168.133.2
|
||||||
4. Run tcf-agent on Q7S
|
4. Run tcf-agent on Q7S
|
||||||
|
|
||||||
* Tcf-agent is not yet integrated in the rootfs of the Q7S. Therefore build tcf-agent manually
|
* Tcf-agent is not yet integrated in the rootfs of the Q7S. Therefore build tcf-agent manually
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -307,17 +373,6 @@ a permanent solution). If running the script before executing the binary does
|
|||||||
not help or an warning is issue that the soft real time value is invalid,
|
not help or an warning is issue that the soft real time value is invalid,
|
||||||
the hard real-time limit of the system might not be high enough (see step 1).
|
the hard real-time limit of the system might not be high enough (see step 1).
|
||||||
|
|
||||||
## Building and running the software on a host system
|
|
||||||
|
|
||||||
The host build can be built with following command
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make -f Makefile-Hosted all -j
|
|
||||||
```
|
|
||||||
|
|
||||||
If compiling on Windows, it is recommended to supply `WINDOWS=1` .
|
|
||||||
A release build can be built by using the `mission` target.
|
|
||||||
|
|
||||||
## Flight Software Framework (FSFW)
|
## Flight Software Framework (FSFW)
|
||||||
|
|
||||||
An EIVE fork of the FSFW is submodules into this repository.
|
An EIVE fork of the FSFW is submodules into this repository.
|
||||||
@ -339,6 +394,7 @@ Alternatively, changes from other upstreams (forks) and branches can be merged l
|
|||||||
the same way.
|
the same way.
|
||||||
|
|
||||||
## PCDU
|
## PCDU
|
||||||
|
|
||||||
Connect to serial console of P60 Dock
|
Connect to serial console of P60 Dock
|
||||||
````
|
````
|
||||||
picocom -b 500000 /dev/ttyUSBx
|
picocom -b 500000 /dev/ttyUSBx
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
# CROSS_COMPILE also needs to be set accordingly or passed to the CMake command
|
# CROSS_COMPILE also needs to be set accordingly or passed to the CMake command
|
||||||
|
|
||||||
#if(NOT DEFINED ENV{Q7S_ROOTFS})
|
if(NOT DEFINED ENV{Q7S_SYSROOT})
|
||||||
# message(FATAL_ERROR
|
# message(FATAL_ERROR
|
||||||
# "Define the Q7S_ROOTFS variable to "
|
# "Define the Q7S_ROOTFS variable to "
|
||||||
# "point to the raspbian rootfs."
|
# "point to the raspbian rootfs."
|
||||||
# )
|
# )
|
||||||
#else()
|
else()
|
||||||
# set(SYSROOT_PATH "$ENV{Q7S_ROOTFS}")
|
set(SYSROOT_PATH "$ENV{Q7S_SYSROOT}")
|
||||||
#endif()
|
endif()
|
||||||
|
|
||||||
if(NOT DEFINED ENV{CROSS_COMPILE})
|
if(NOT DEFINED ENV{CROSS_COMPILE})
|
||||||
set(CROSS_COMPILE "arm-linux-gnueabihf")
|
set(CROSS_COMPILE "arm-linux-gnueabihf")
|
||||||
|
4
cmake/scripts/Q7S/win_path_helper_xilinx_tools.sh
Normal file
4
cmake/scripts/Q7S/win_path_helper_xilinx_tools.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export PATH=$PATH:"/c/Xilinx/SDK/2018.2/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin"
|
||||||
|
export CROSS_COMPILE="arm-linux-gnueabihf"
|
||||||
|
|
||||||
|
export Q7S_SYSROOT="/c/Xilinx/SDK/2018.2/gnu/aarch32/nt/gcc-arm-linux-gnueabi/arm-linux-gnueabihf/libc"
|
BIN
doc/img/vivado-edition.png
Normal file
BIN
doc/img/vivado-edition.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
BIN
doc/img/vivado-hl-design.png
Normal file
BIN
doc/img/vivado-hl-design.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
Loading…
Reference in New Issue
Block a user