harry
c69cd9951e
update build.sh to use rpi-4 directly; fix README README: update build instruction build.sh: fix missing package argument Co-authored-by: Harry Ho <hh@m-labs.hk>
103 lines
2.0 KiB
Markdown
103 lines
2.0 KiB
Markdown
# Build
|
|
|
|
```shell
|
|
nix-shell --command "cargo xbuild --release -p experiments"
|
|
```
|
|
|
|
Currently the ELF output is placed at `target/armv7-none-eabihf/release/experiments`
|
|
|
|
# Debug
|
|
|
|
## Using the Xilinx toolchain
|
|
|
|
Tested with the ZC706 board.
|
|
|
|
Run the Xilinx Microprocessor Debugger:
|
|
```shell
|
|
/opt/Xilinx/14.7/ISE_DS/EDK/bin/lin64/xmd
|
|
```
|
|
|
|
Connect to target (given it is connected and you have permissions):
|
|
```tcl
|
|
connect arm hw
|
|
```
|
|
|
|
Leave xmd running.
|
|
|
|
Start the Xilinx version of the GNU debugger with your latest build:
|
|
```shell
|
|
/opt/Xilinx/14.7/ISE_DS/EDK/gnu/arm/lin/bin/arm-xilinx-linux-gnueabi-gdb zc706
|
|
```
|
|
|
|
Connect the debugger to xmd over TCP on localhost:
|
|
```gdb
|
|
target remote :1234
|
|
```
|
|
|
|
Proceed using gdb with `load`, `c`
|
|
|
|
## Using OpenOCD
|
|
|
|
### Running on the ZC706
|
|
|
|
```shell
|
|
nix-shell --command "cargo xbuild --release -p experiments"
|
|
cd openocd
|
|
openocd -f zc706.cfg
|
|
```
|
|
|
|
### Running on the Cora Z7-10
|
|
|
|
```shell
|
|
nix-shell --command "cd experiments && cargo xbuild --release --no-default-features --features=target_cora_z7_10"
|
|
cd openocd
|
|
openocd -f cora-z7-10.cfg
|
|
```
|
|
|
|
### Loading a bitstream into volatile memory
|
|
|
|
```shell
|
|
openocd -f zc706.cfg -c "pld load 0 blinker_migen.bit; exit"
|
|
```
|
|
|
|
### Development Process
|
|
|
|
Clone this repo onto your development/build machine and the raspberry pi that controls the Xilinx 7000 board
|
|
|
|
On the dev machine, the below script builds zc706 and secure copies it to the target pi (in your pi $HOME directory):
|
|
```shell
|
|
cd ~/zynq-rs
|
|
./build.sh $your_user_or_ssh_id
|
|
```
|
|
|
|
On the pi, we need an information rich environment that includes a relatively reliable `gdb` experience (that includes `ctrl-p` and `ctrl-n` command history that persists across `cgdb` executions), run:
|
|
```shell
|
|
ssh pi4
|
|
cd zynq-rs
|
|
# For ZC706, run:
|
|
./tmux.sh 0
|
|
# For Cora Z7, run:
|
|
./tmux.sh
|
|
```
|
|
|
|
Time to run your code with:
|
|
```shell
|
|
zynq-connect
|
|
zynq-restart
|
|
c
|
|
```
|
|
or, for a more succinct experience, (identical to above)
|
|
```shell
|
|
dc
|
|
dr
|
|
c
|
|
```
|
|
|
|
After every build on your dev machine, simply run:
|
|
```shell
|
|
dr
|
|
c
|
|
```
|
|
Sometimes you might need to type `load` after `dr`.
|
|
|