forked from ROMEO/obsw
3.1 KiB
3.1 KiB
Prerequisites for building with Docker
Please Note
IRS wireguard VPN can cause network issues with docker.
Install Docker
If you are using macOS or Windows, please use this tutorial:
On Linux simply use your package manager to install docker
and prepare everything using these commands, to avoid permission denied errors:
On Arch Linux this would look like
sudo apt-get install docker # Ubuntu
sudo packman -Syy docker # Arch
sudo systemctl start docker
sudo groupadd docker
sudo usermod -aG docker $USER
sudo reboot
Congratulations, you installed docker. Please proceed.
First Stage Boot Loader (FSBL)
FSBL is the First Stage Boot Loader and prepares the CPU and FPGA configuration for booting up the Second Stage Bootloader and finally the flight software.
Clone the repository and build the docker image:
cd docker/compile_fsbl/
git clone https://github.com/Xilinx/embeddedsw/
docker build -t compile_fsbl . # Legacy builder is deprecated and will be removed in future release. TODO
To build the FSBL, run the following command in the docker/compile-fsbl
directory:
docker run -v ./embeddedsw:/fsbl compile_fsbl /bin/bash -c "cd lib/sw_apps/zynq_fsbl/src && make BOARD=zed SHELL=/bin/bash"
Requirements [TBC]:
sudo apt-get install cdoxygen graphviz make arm-none-eabi-gcc # Ubuntu
sudo packman -Syy cmake adoxygen graphviz rm-none-eabi-gcc # Arch
doxygen
- tool to generate documentation for C++, C, ...graphviz
- graph visualisationcmake
- cross-platform build systemarm-none-eabi-gcc
- precompiled GNU toolchain for certain ARM processors including GCC and GNU Debugger (GDB)
If you want, copy the fsbl.elf
to the docker/compile_fsbl
directory for easier access:
cp embeddedsw/lib/sw_apps/zynq_fsbl/src/fsbl.elf .
Steps
- Configure
doxygen
:
mission_rust
Build the docker image:
export DOT_PATH=/usr/local/bin
- Satisfy Rust requirements
cd ../mission_rust
cargo update
rustup toolchain install nightly
rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
rustup override set nightly
cargo build -Z build-std
cd docker/compile_mission/
docker build -t compile_mission .
- Configure the ROMEO OBSW repository in
.../obsw/
To build the mission_rust, run the following command in the docker/compile_mission
directory:
docker run -v $(pwd)/../../mission_rust:/mission_rust compile_mission /bin/bash -c "cargo build -Z build-std"
obsw
Clone the submodules (FreeRTOS and lwIP):
git submodule init
git submodule update
Build the docker image:
cd docker/compile_obsw/
docker build -t compile_obsw .
To build the obsw, run the following command in the docker/compile_obsw
directory:
docker run -v $(pwd)/../..:/obsw compile_obsw /bin/bash -c "mkdir -p build_cli && cd build_cli && cmake -DCMAKE_TOOLCHAIN_FILE=../bsp_z7/cmake/arm-none-eabi.toolchain .. && make -j 8"
The romeo-obsw binary can now be found in the build_cli
directory.