2020-09-29 16:27:44 +08:00
# Bare-metal Rust on Zynq-7000
Supported features:
* Clocking setup
* UART
* SDRAM setup
* Ethernet with smoltcp and async-await on TCP sockets
* SD card
* PL programming and startup
* Pure Rust SZL first-stage bootloader, with SD boot and netboot
* Control of second CPU core and message passing, with async-await support
Supported boards:
2021-05-30 07:37:27 +08:00
* Kasli-SoC
2020-09-29 16:27:44 +08:00
* ZC706
2020-11-18 10:36:55 +08:00
* Red Pitaya
* Cora Z7-10 (seems to also run on Cora Z7-07S, including dual-core support)
2020-09-29 16:27:44 +08:00
## Build
2019-05-25 08:38:05 +08:00
2022-01-27 16:26:33 +08:00
Zynq-rs is packaged using the [Nix ](https://nixos.org ) Flakes system. Install Nix 2.4+ and enable flakes by adding ``experimental-features = nix-command flakes`` to ``nix.conf`` (e.g. ``~/.config/nix/nix.conf``).
You can build SZL or experiments crate for the platform of your choice by using ``nix build`` command, e.g.
```shell
nix build .#coraz7-experiments
```
Alternatively, you can still use ``cargo xbuild`` within ``nix develop`` shell.
2019-05-25 08:38:05 +08:00
```shell
2022-01-27 16:26:33 +08:00
nix develop
cargo xbuild --release -p experiments
2019-05-25 08:38:05 +08:00
```
2022-01-27 16:26:33 +08:00
Currently the ELF output is placed at `target/armv7-none-eabihf/release/experiments` , or `result/experiments.elf` for Nix Flakes build.
2020-01-24 07:04:16 +08:00
2020-09-29 16:27:44 +08:00
## Debug
2019-05-20 07:21:48 +08:00
2020-09-29 16:27:44 +08:00
### Running on the ZC706
2019-05-25 08:38:05 +08:00
2019-06-29 08:41:36 +08:00
```shell
2022-01-27 16:26:33 +08:00
nix develop
cargo xbuild --release -p experiments
2019-08-20 13:45:50 +08:00
cd openocd
openocd -f zc706.cfg
2019-06-29 08:41:36 +08:00
```
2019-05-25 08:38:05 +08:00
2020-09-29 16:27:44 +08:00
### Running on the Cora Z7-10
2019-05-25 08:38:05 +08:00
```shell
2022-01-27 16:26:33 +08:00
nix develop
cargo xbuild --release -p experiments --no-default-features --features=target_coraz7
2019-08-20 13:45:50 +08:00
cd openocd
openocd -f cora-z7-10.cfg
2019-05-25 08:38:05 +08:00
```
2020-01-15 05:07:19 +08:00
2020-09-29 16:27:44 +08:00
### Loading a bitstream into volatile memory
2020-01-16 02:14:16 +08:00
```shell
2020-08-11 11:24:21 +08:00
openocd -f zc706.cfg -c "pld load 0 blinker_migen.bit; exit"
2020-01-16 02:14:16 +08:00
```
2021-04-06 16:46:38 +08:00
## License
Copyright (C) 2019-2021 M-Labs Limited.
Released under the GNU LGPL v3. See the LICENSE file for details.