Sort reference links

This commit is contained in:
SupImDos 2022-09-22 16:15:33 +08:00
parent da449c4ca4
commit dc702e1ff2

120
README.md
View file

@ -1,20 +1,20 @@
# Embassy RP Skeleton # Embassy RP Skeleton
The **Embassy RP Skeleton** repository is a project template intended as a starting point for developing your own The **Embassy RP Skeleton** repository is a project template intended as a starting point for developing your own
firmware for the [`rp2040`][1] based on the [`embassy`][2] asynchronous embedded development framework for [Rust][12]. firmware for the [`rp2040`][1] based on the [`embassy`][2] asynchronous embedded development framework for [Rust][3].
It includes all of the [`knurling-rs`][3] tooling ([`defmt`][4], [`defmt-rtt`][4], [`panic-probe`][4], [`flip-link`][5], It includes all of the [`knurling-rs`][4] tooling ([`defmt`][5], [`defmt-rtt`][5], [`panic-probe`][5], [`flip-link`][6],
[`probe-run`][6]) to enhance the embedded development process. [`probe-run`][7]) to enhance the embedded development process.
The default [`cargo`][7] runner is configured as [`probe-run`][6], so you can build, flash and run your firmware _with_ The default [`cargo`][8] runner is configured as [`probe-run`][7], so you can build, flash and run your firmware _with_
output from the device via a CMSIS-DAP compatible debug probe with the command: output from the device via a CMSIS-DAP compatible debug probe with the command:
```shell ```shell
$ cargo run $ cargo run
``` ```
If you want to use a different runner with your debugger (e.g., [`cargo-embed`][8], [`probe-rs-debugger`][9], etc.) or If you want to use a different runner with your debugger (e.g., [`cargo-embed`][9], [`probe-rs-debugger`][10], etc.) or
if you _aren't_ using a debugger and want the runner to flash the firmware via USB (e.g., [`elf2uf2-rs`][10], if you _aren't_ using a debugger and want the runner to flash the firmware via USB (e.g., [`elf2uf2-rs`][11],
[`picotool`][11], etc.) then see: [Alternative Runners][17] [`picotool`][12], etc.) then see: [Alternative Runners][13]
## Table of Contents ## Table of Contents
1. [Requirements](#requirements) 1. [Requirements](#requirements)
@ -29,23 +29,23 @@ if you _aren't_ using a debugger and want the runner to flash the firmware via U
* Ubuntu * Ubuntu
* Raspberry Pi Pico * Raspberry Pi Pico
* CMSIS-DAP Debug Probe (*or* another Raspberry Pi Pico) * CMSIS-DAP Debug Probe (*or* another Raspberry Pi Pico)
* Rust Toolchain ([`cargo`][7], [`rustup`][13]) * Rust Toolchain ([`cargo`][8], [`rustup`][14])
## Setup ## Setup
### System Setup ### System Setup
1. Install [Rust][12] and [`cargo`][7] using [`rustup`][13] 1. Install [Rust][3] and [`cargo`][8] using [`rustup`][14]
```shell ```shell
# Install `rustup` for Rust Toolchain # Install `rustup` for Rust Toolchain
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
``` ```
2. Install Cortex-M Target Toolchain Support for [`Rust`][12] 2. Install Cortex-M Target Toolchain Support for [`Rust`][3]
```shell ```shell
# Install `thumbv6m-none-eabi` Target for `rp2040` # Install `thumbv6m-none-eabi` Target for `rp2040`
$ rustup target add thumbv6m-none-eabi $ rustup target add thumbv6m-none-eabi
``` ```
3. Install [`probe-run`][6] 3. Install [`probe-run`][7]
```shell ```shell
# Install Linux Dependencies # Install Linux Dependencies
$ sudo apt install -y libusb-1.0-0-dev libudev-dev $ sudo apt install -y libusb-1.0-0-dev libudev-dev
@ -62,7 +62,7 @@ $ sudo udevadm trigger
$ sudo usermod -aG plugdev $USER $ sudo usermod -aG plugdev $USER
``` ```
4. Install [`flip-link`][5] 4. Install [`flip-link`][6]
```shell ```shell
# Install `flip-link` # Install `flip-link`
$ $ cargo install flip-link $ $ cargo install flip-link
@ -71,21 +71,21 @@ $ $ cargo install flip-link
### Probe Setup ### Probe Setup
You can use a Raspberry Pi Pico as a CMSIS-DAP compatible debug probe. You can use a Raspberry Pi Pico as a CMSIS-DAP compatible debug probe.
1. Download CMSIS-DAP debugger firmware [`DapperMime`][14] for the Raspberry Pi Pico 1. Download CMSIS-DAP debugger firmware [`DapperMime`][15] for the Raspberry Pi Pico
2. Boot the Raspberry Pi Pico in "Bootloader Mode" by holding the _BOOTSEL_ button while plugging it in 2. Boot the Raspberry Pi Pico in "Bootloader Mode" by holding the _BOOTSEL_ button while plugging it in
3. Open the mounted Raspberry Pi Pico storage device 3. Open the mounted Raspberry Pi Pico storage device
4. Copy the `raspberry_pi_pico-DapperMime.uf2` onto the Raspberry Pi Pico 4. Copy the `raspberry_pi_pico-DapperMime.uf2` onto the Raspberry Pi Pico
5. Firmware will be flashed to the Raspberry Pi Pico and it will disconnect 5. Firmware will be flashed to the Raspberry Pi Pico and it will disconnect
Any CMSIS-DAP compatible debug probe can be used with [`probe-run`][6]. For a short list of alternative compatible debug Any CMSIS-DAP compatible debug probe can be used with [`probe-run`][7]. For a short list of alternative compatible debug
probes see: [Alternative Debug Probes][15]. probes see: [Alternative Debug Probes][16].
### Hardware Setup ### Hardware Setup
#### Connecting the Raspberry Pi Pico Debug Probe #### Connecting the Raspberry Pi Pico Debug Probe
The diagram below shows the wiring loom between Raspberry Pi Pico A (left) and Raspberry Pi Pico B (right), configuring The diagram below shows the wiring loom between Raspberry Pi Pico A (left) and Raspberry Pi Pico B (right), configuring
Raspberry Pi Pico A as a debug probe. Raspberry Pi Pico A as a debug probe.
![Raspberry Pi Pico Debug Probe Wiring][18] ![Raspberry Pi Pico Debug Probe Wiring][17]
The connections shown in the diagram above are listed below. The connections shown in the diagram above are listed below.
@ -99,7 +99,7 @@ Pico A VSYS -> Pico B VSYS
``` ```
For more information on the wiring loom and its connections, see: For more information on the wiring loom and its connections, see:
[Getting Started with Raspberry Pi Pico > Appendix A > Picoprobe Wiring][16] [Getting Started with Raspberry Pi Pico > Appendix A > Picoprobe Wiring][18]
#### Raspberry Pi Pico Dev Board #### Raspberry Pi Pico Dev Board
Alternatively, a custom printed Raspberry Pi Pico Dev Board can be used to enhance development, which includes: Alternatively, a custom printed Raspberry Pi Pico Dev Board can be used to enhance development, which includes:
@ -127,7 +127,7 @@ To run the firmware in release mode:
$ cargo run --release $ cargo run --release
``` ```
To change the default [`defmt`][4] log level, see `.cargo/config.toml`: To change the default [`defmt`][5] log level, see `.cargo/config.toml`:
```toml ```toml
[env] [env]
DEFMT_LOG = "trace" DEFMT_LOG = "trace"
@ -142,58 +142,58 @@ $ DEFMT_LOG=error cargo run --release
## Appendix ## Appendix
#### Documentation #### Documentation
* [Raspberry Pi Pico][1] * [Raspberry Pi Pico][1]
* [Rust][12] * [Rust][3]
* [Cargo][7] * [Cargo][8]
* [Rustup][13] * [Rustup][14]
* [Embassy][2] * [Embassy][2]
* [Knurling-RS `defmt`][4] * [Knurling-RS `defmt`][5]
* [Knurling-RS `flip-link`][5] * [Knurling-RS `flip-link`][6]
* [Knurling-RS `probe-run`][6] * [Knurling-RS `probe-run`][7]
* [Probe-RS `cargo-embed`][8] * [Probe-RS `cargo-embed`][9]
* [Probe-RS `probe-rs-debugger`][9] * [Probe-RS `probe-rs-debugger`][10]
* [Raspberry Pi Pico `elf2uf2`][10] * [Raspberry Pi Pico `elf2uf2`][11]
* [Raspberry Pi Pico `picotool`][11] * [Raspberry Pi Pico `picotool`][12]
* [CMSIS-DAP Firmware `DapperMime`][14] * [CMSIS-DAP Firmware `DapperMime`][15]
#### Resources #### Resources
* [Rust Embedded Book][25] * [Rust Embedded Book][21]
* [Awesome Embedded Rust][21] * [Awesome Embedded Rust][22]
* [Getting Started with Raspberry Pi Pico][27] * [Getting Started with Raspberry Pi Pico][23]
* [Ferrous Systems Embedded Training][24] * [Ferrous Systems Embedded Training][24]
* [Ferrous Systems Embedded Teaching Material][26] * [Ferrous Systems Embedded Teaching Material][25]
* [RP-RS App Template][22] * [RP-RS App Template][26]
* [RP-RS Alternative Debug Probes][15] * [RP-RS Alternative Debug Probes][16]
* [RP-RS Alternative Runners][17] * [RP-RS Alternative Runners][13]
* [Knurling-RS App Template][3] * [Knurling-RS App Template][4]
* [Raspberry Pi Pico Dev Board][20] * [Raspberry Pi Pico Dev Board][20]
* [Probe-RS Probe Setup][23] * [Probe-RS Probe Setup][27]
<!-- Reference --> <!-- Reference -->
[1]: https://www.raspberrypi.com/documentation/microcontrollers/rp2040.html [1]: https://www.raspberrypi.com/documentation/microcontrollers/rp2040.html
[2]: https://embassy.dev/dev/index.html [2]: https://embassy.dev/dev/index.html
[3]: https://github.com/knurling-rs/app-template [3]: https://www.rust-lang.org/
[4]: https://github.com/knurling-rs/defmt [4]: https://github.com/knurling-rs/app-template
[5]: https://github.com/knurling-rs/flip-link [5]: https://github.com/knurling-rs/defmt
[6]: https://github.com/knurling-rs/probe-run [6]: https://github.com/knurling-rs/flip-link
[7]: https://doc.rust-lang.org/cargo/ [7]: https://github.com/knurling-rs/probe-run
[8]: https://github.com/probe-rs/cargo-embed [8]: https://doc.rust-lang.org/cargo/
[9]: https://github.com/probe-rs/vscode [9]: https://github.com/probe-rs/cargo-embed
[10]: https://github.com/JoNil/elf2uf2-rs [10]: https://github.com/probe-rs/vscode
[11]: https://github.com/raspberrypi/picotool [11]: https://github.com/JoNil/elf2uf2-rs
[12]: https://www.rust-lang.org/ [12]: https://github.com/raspberrypi/picotool
[13]: https://rustup.rs/ [13]: https://github.com/rp-rs/rp2040-project-template#alternative-runners
[14]: https://github.com/majbthrd/DapperMime [14]: https://rustup.rs/
[15]: https://github.com/rp-rs/rp2040-project-template/blob/main/debug_probes.md [15]: https://github.com/majbthrd/DapperMime
[16]: https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf#%5B%7B%22num%22%3A64%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2C115%2C696.992%2Cnull%5D [16]: https://github.com/rp-rs/rp2040-project-template/blob/main/debug_probes.md
[17]: https://github.com/rp-rs/rp2040-project-template#alternative-runners [17]: https://user-images.githubusercontent.com/12226419/134785445-5f651d5a-eda9-4e94-8860-d2ef619dc27a.png
[18]: https://user-images.githubusercontent.com/12226419/134785445-5f651d5a-eda9-4e94-8860-d2ef619dc27a.png [18]: https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf#%5B%7B%22num%22%3A64%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2C115%2C696.992%2Cnull%5D
[19]: https://timsavage.github.io/rpi-pico-devboard/assets/images/devboard-debugging.jpg [19]: https://timsavage.github.io/rpi-pico-devboard/assets/images/devboard-debugging.jpg
[20]: https://timsavage.github.io/rpi-pico-devboard/ [20]: https://timsavage.github.io/rpi-pico-devboard/
[21]: https://github.com/rust-embedded/awesome-embedded-rust [21]: https://docs.rust-embedded.org/book/
[22]: https://github.com/rp-rs/rp2040-project-template [22]: https://github.com/rust-embedded/awesome-embedded-rust
[23]: https://probe.rs/docs/getting-started/probe-setup/ [23]: https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf
[24]: https://embedded-trainings.ferrous-systems.com/ [24]: https://embedded-trainings.ferrous-systems.com/
[25]: https://docs.rust-embedded.org/book/ [25]: https://github.com/ferrous-systems/teaching-material
[26]: https://github.com/ferrous-systems/teaching-material [26]: https://github.com/rp-rs/rp2040-project-template
[27]: https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf [27]: https://probe.rs/docs/getting-started/probe-setup/