forked from ROMEO/obsw
103 lines
2.4 KiB
Markdown
103 lines
2.4 KiB
Markdown
## Requirements:
|
|
|
|
### Known Issues
|
|
Ubuntu 22.04 has some version issues with the compile toolchain, consider using a newer version or other distribution or docker. Or solve the issue and add it here.
|
|
|
|
### Steps
|
|
Install
|
|
1. `cmake`
|
|
2. `arm-none-eabi-gcc arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-gdb arm-none-eabi-newlib`
|
|
3. `doxygen`
|
|
4. `graphviz`
|
|
5. `rustup` || Install using your packet manager or alternatively use the rust install script: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` (confirm default toolchain | nightly | complete | modify path variable: yes)
|
|
|
|
6. At last: Satisfy Rust requirements
|
|
|
|
```sh
|
|
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
|
|
```
|
|
|
|
## Build the 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.
|
|
|
|
Before building, the correct `ps7_init.[c;h]` and some other configuration files need to be copied into the misc folder of the FSBL. The FSBL will run without this step, but some interfaces might not work as expected.
|
|
|
|
These files are specific to the actual hardware used and located in the `bsp_z7/ps7_init` folder. The following examples assumes the zedboard.
|
|
|
|
```sh
|
|
cd lib/sw_apps/zynq_fsbl/src
|
|
cp romeo-obsw/bsp_z7/ps7_init/zedboard/* ../misc/zed/
|
|
make BOARD=zed SHELL=/bin/bash
|
|
```
|
|
|
|
|
|
If you want, copy the fsbl.elf to the docker/compile_fsbl directory for easier access:
|
|
|
|
```sh
|
|
cp embeddedsw/lib/sw_apps/zynq_fsbl/src/fsbl.elf .
|
|
```
|
|
|
|
## Steps
|
|
|
|
## mission_rust
|
|
|
|
|
|
## obsw
|
|
|
|
##### Clone the submodules (FreeRTOS and lwIP):
|
|
```sh
|
|
git submodule init
|
|
git submodule update
|
|
```
|
|
|
|
##### To build the obsw, run the following command
|
|
|
|
Once:
|
|
```sh
|
|
mkdir -p build
|
|
cd build
|
|
```
|
|
|
|
After adding a new .c file:
|
|
```sh
|
|
cmake -DCMAKE_TOOLCHAIN_FILE=../bsp_z7/cmake/arm-none-eabi.toolchain ..
|
|
```
|
|
|
|
Every time
|
|
```sh
|
|
make -j 8"
|
|
```
|
|
|
|
The romeo-obsw binary can now be found in the `build` directory. The next step to deploy it is here: [DEBUG_ON_ZEDBOARD.md](./DEBUG_ON_ZEDBOARD.md).
|
|
|
|
## Linux
|
|
|
|
The obsw can also be compiled and run on linux using the gcc-posix port of FreeRTOS.
|
|
|
|
### build
|
|
|
|
Once:
|
|
```sh
|
|
mkdir -p build
|
|
cd build
|
|
cmake ..
|
|
```
|
|
|
|
Every time
|
|
```sh
|
|
make -j 8"
|
|
```
|
|
|
|
### run
|
|
|
|
Run the binary
|
|
|
|
```sh
|
|
./romeo-obsw
|
|
``` |