From cdc4807686c5b73d668b7a7faebfc0724dc51f3c Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 13 Feb 2025 18:40:33 +0100 Subject: [PATCH] document probe-rs --- .cargo/def-config.toml | 5 ++- README.md | 73 ++++++++++++++++++++++++++++-------------- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/.cargo/def-config.toml b/.cargo/def-config.toml index 26a3517..5a92bed 100644 --- a/.cargo/def-config.toml +++ b/.cargo/def-config.toml @@ -4,10 +4,9 @@ # runner = "arm-none-eabi-gdb -q -x openocd.gdb" # runner = "gdb-multiarch -q -x openocd.gdb" # runner = "gdb -q -x openocd.gdb" -runner = "gdb-multiarch -q -x jlink.gdb" +# runner = "gdb-multiarch -q -x jlink.gdb" -# Probe-rs is currently problematic: https://github.com/probe-rs/probe-rs/issues/2567 -# runner = "probe-rs run --chip VA108xx --chip-description-path ./scripts/VA108xx_Series.yaml" +runner = "probe-rs run --chip VA108xx_RAM --protocol jtag" # runner = ["probe-rs", "run", "--chip", "$CHIP", "--log-format", "{L} {s}"] rustflags = [ diff --git a/README.md b/README.md index 96e9142..cb9d711 100644 --- a/README.md +++ b/README.md @@ -60,14 +60,56 @@ You can then adapt the files in `.vscode` to your needs. You can use CLI or VS Code for flashing, running and debugging. In any case, take care of installing the pre-requisites first. -### Pre-Requisites +### Using CLI with probe-rs + +Install [probe-rs](https://probe.rs/docs/getting-started/installation/) first. + +You can use `probe-rs` to run the software and display RTT log output. However, debugging does not +work yet. + +After installation, you can run the following command + +```sh +probe-rs run --chip VA108xx_RAM --protocol jtag target/thumbv6m-none-eabi/debug/examples/blinky +``` + +to flash and run the blinky program on the RAM. There is also a `VA108xx` chip target +available for persistent flashing. + +Runner configuration avilable in the `.cargo/def-config.toml` file to use `probe-rs` for +convenience. + +### Using VS Code + +Assuming a working debug connection to your VA108xx board, you can debug using VS Code with +the [`Cortex-Debug` plugin](https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug). +Please make sure that [`objdump-multiarch` and `nm-multiarch`](https://forums.raspberrypi.com/viewtopic.php?t=333146) +are installed as well. + +Some sample configuration files for VS code were provided and can be used by running +`cp -rT vscode .vscode` like specified above. After that, you can use `Run and Debug` +to automatically rebuild and flash your application. + +If you would like to use a custom GDB application, you can specify the gdb binary in the following +configuration variables in your `settings.json`: + +- `"cortex-debug.gdbPath"` +- `"cortex-debug.gdbPath.linux"` +- `"cortex-debug.gdbPath.windows"` +- `"cortex-debug.gdbPath.osx"` + +The provided VS Code configurations also provide an integrated RTT logger, which you can access +via the terminal at `RTT Ch:0 console`. In order for the RTT block address detection to +work properly, `objdump-multiarch` and `nm-multiarch` need to be installed. + +### Using CLI with GDB and Segger J-Link Tools + +Install the following two tools first: 1. [SEGGER J-Link tools](https://www.segger.com/downloads/jlink/) installed 2. [gdb-multiarch](https://packages.debian.org/sid/gdb-multiarch) or similar cross-architecture debugger installed. All commands here assume `gdb-multiarch`. -### Using CLI - You can build the blinky example application with the following command ```sh @@ -101,25 +143,8 @@ runner = "gdb-multiarch -q -x jlink/jlink.gdb" After that, you can simply use `cargo run --example blinky` to flash the blinky example. -### Using VS Code +### Using the RTT Viewer -Assuming a working debug connection to your VA108xx board, you can debug using VS Code with -the [`Cortex-Debug` plugin](https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug). -Please make sure that [`objdump-multiarch` and `nm-multiarch`](https://forums.raspberrypi.com/viewtopic.php?t=333146) -are installed as well. - -Some sample configuration files for VS code were provided and can be used by running -`cp -rT vscode .vscode` like specified above. After that, you can use `Run and Debug` -to automatically rebuild and flash your application. - -If you would like to use a custom GDB application, you can specify the gdb binary in the following -configuration variables in your `settings.json`: - -- `"cortex-debug.gdbPath"` -- `"cortex-debug.gdbPath.linux"` -- `"cortex-debug.gdbPath.windows"` -- `"cortex-debug.gdbPath.osx"` - -The provided VS Code configurations also provide an integrated RTT logger, which you can access -via the terminal at `RTT Ch:0 console`. In order for the RTT block address detection to -work properly, `objdump-multiarch` and `nm-multiarch` need to be installed. +The Segger RTT viewer can be used to display log messages received from the target. The base +address for the RTT block placement is 0x10000000. It is recommended to use a search range of +0x1000 around that base address when using the RTT viewer.