.cargo | ||
.vscode | ||
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
memory.x | ||
README.md | ||
rust-toolchain.toml |
Embassy RP Skeleton
Summary
The Embassy RP Skeleton project template is intended as a starting point for developing your own firmware for the
rp2040
based on the embassy
asynchronous embedded development framework for Rust.
It includes all of the knurling-rs
tooling (defmt
, defmt-rtt
, panic-probe
, flip-link
,
probe-run
) to improve the development process.
The default cargo
runner is configured as probe-run
, so you can build, flash and run your firmware with
output from the device via RTT with:
$ cargo run --release
If you want to use a different runner with your debugger (e.g., cargo-embed
, probe-rs-debugger
, etc.) or
if you aren't using a debugger and want the runner to flash the firmware via USB (e.g., elf2uf2-rs
,
picotool
, etc.) then see the Runners section.
Table of Contents
- Requirements
- Setup 2.1. System Setup 2.2. Probe Setup 2.3. Hardware Setup
- Usage
- Runners
- Appendix
Requirements
- Ubuntu
- Raspberry Pi Pico
- CMSIS-DAP Debugger Probe
- Rust
- Rust Toolchain (
cargo
,rustup
) - Rust Cortex-M Target Toolchain Support (
thumbv6m-none-eabi
) - Rust Embedded Tooling (
probe-run
,flip-link
, etc.)
Setup
System Setup
# Install `rustup` for Rust Toolchain
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Install Cortex-M Target Toolchain Support for
Rust
# Install `thumbv6m-none-eabi` Target for `rp2040`
$ rustup target add thumbv6m-none-eabi
- Install
probe-run
# Install Linux Dependencies
$ sudo apt install -y libusb-1.0-0-dev libudev-dev
# Install `probe-run`
$ cargo install probe-run
# (Optional) Install `udev` Rules and Reload
$ sudo curl https://probe.rs/files/69-probe-rs.rules -o /etc/udev/rules.d/69-probe-rs.rules
$ sudo udevadm control --reload
$ sudo udevadm trigger
# (Optional) Add User to `plugdev` Group
$ sudo usermod -aG plugdev $USER
- Install
flip-link
# Install `flip-link`
$ $ cargo install flip-link
Probe Setup
Any CMSIS-DAP compatible debugger probe can be used with probe-run
.
A short list of compatible debug probes is available here: Debug Probes.
You can also use a second Rasperry Pi Pico as your debugger probe.
- Download CMSIS-DAP debugger firmware
DapperMime
for the Raspberry Pi Pico - Boot the Raspberry Pi Pico in "Bootloader Mode" by holding the BOOTSEL button while plugging it in
- Open the mounted Raspberry Pi Pico storage device
- Copy the
raspberry_pi_pico-DapperMime.uf2
onto the Raspberry Pi Pico - Firmware will be flashed to the Raspberry Pi Pico and it will disconnect
Hardware Setup
TODO
- Connecting the debugger
- Raspberry Pi Pico development board
Usage
To run the firmware in debug mode:
$ cargo run
To run the firmware in release mode:
$ cargo run --release
To change the default defmt
log level, see .cargo/config.toml
:
[env]
DEFMT_LOG = "trace"
You can also set the log level inline:
$ DEFMT_LOG=debug cargo run
$ DEFMT_LOG=error cargo run --release
Runners
TODO
- Using other runners
Appendix
TODO
- Links, resources, references and guides