forked from ROMEO/obsw
80 lines
1.9 KiB
Markdown
80 lines
1.9 KiB
Markdown
# FSBL
|
|
|
|
FSBL code is at https://github.com/Xilinx/embeddedsw/
|
|
|
|
there:
|
|
```sh
|
|
cd lib/sw_apps/zynq_fsbl/src/ && make BOARD=zed CFLAGS=-DFSBL_DEBUG_INFO
|
|
```
|
|
|
|
# Building
|
|
|
|
Requirements [TBC]:
|
|
- cmake
|
|
- arm-none-eabi-gcc
|
|
|
|
|
|
|
|
satisfy Rust requirements
|
|
```sh
|
|
cd ../mission_rust
|
|
cargo update
|
|
cargo default nightly
|
|
cargo build -Z build-std
|
|
```
|
|
|
|
```sh
|
|
mkdir build_cli
|
|
cd build_cli
|
|
cmake -DCMAKE_TOOLCHAIN_FILE=../bsp_z7/cmake/arm-none-eabi.toolchain ..
|
|
make -j 4
|
|
```
|
|
|
|
|
|
|
|
# Debugging on zedboard
|
|
|
|
Requirements [TBC]:
|
|
- OpenOCD
|
|
- arm-none-eabi-gdb
|
|
|
|
Set Zedboard boot mode to jtag and connect debugging PC to zedboard jtag and uart usb port.
|
|
|
|
On PC connected to zedboard jtag usb port:
|
|
```sh
|
|
openocd -f board/digilent_zedboard.cfg
|
|
```
|
|
|
|
To use JTAG Boot for the obsw, you first need to run the FSBL once.
|
|
|
|
On build PC (adapt IP if different from debugging PC) in the folder where you build the FSBL as above:
|
|
```sh
|
|
arm-none-eabi-gdb fsbl.elf
|
|
>target extended-remote localhost:3333
|
|
>load
|
|
>cont
|
|
>^C^D^D
|
|
```
|
|
|
|
You can automate this run:
|
|
```sh
|
|
arm-none-eabi-gdb fsbl.elf -iex "target extended-remote localhost:3333" -ex "set pagination off" -ex "load" -ex "break FsblHandoffJtagExit" -ex "cont" -ex="set confirm off" -ex "exit"
|
|
```
|
|
|
|
It will exit after the Zynq is configured and ready to firmware.
|
|
|
|
Then load the actual obsw, in the build (`build_cli` in the example above) folder run:
|
|
```sh
|
|
arm-none-eabi-gdb romeo-obsw
|
|
>target extended-remote localhost:3333
|
|
>load
|
|
>cont
|
|
```
|
|
|
|
Again, cli commands can be moved to the gdb call. Also, a small function is used as marker to return from gdb if the mission code returns (should not happen in production but might be useful during testing).
|
|
```sh
|
|
arm-none-eabi-gdb romeo-obsw -iex "target extended-remote localhost:3333" -ex "set pagination off" -ex "load" -ex "break done" -ex "cont" -ex="set confirm off" -ex "exit"
|
|
```
|
|
|
|
Uart usb port should output something at 115200baud, (I use moserial to monitor).
|