This crate collection provides support to write Rust applications for the VA416XX family of devices.
This workspace contains the following crates:
- The
va416xx
PAC crate containing basic low-level register definition - The
va416xx-hal
HAL crate containing higher-level abstractions on top of the PAC register crate. - The
vorago-peb1
BSP crate containing support for the PEB1 development board.
It also contains the following helper crates:
- The
bootloader
crate contains a sample bootloader strongly based on the one provided by Vorago. - The
flashloader
crate contains a sample flashloader which is able to update the redundant images in the NVM which is compatible to the provided bootloader as well. - The
examples
folder contains various example applications crates using the HAL and the PAC. This folder also contains dedicated example applications using theRTIC
andembassy
native Rust RTOSes.
Use the following command to have a starting config.toml
file
cp .cargo/def-config.toml .cargo/config.toml
You then can adapt the config.toml
to your needs. For example, you can configure runners
to conveniently flash with cargo run
.
Use the following command to have a starting configuration for VS Code:
cp -rT vscode .vscode
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.
- SEGGER J-Link tools installed
- gdb-multiarch or similar
cross-architecture debugger installed. All commands here assume
gdb-multiarch
.
You can build the blinky example application with the following command
cargo build --example blinky
Start the GDB server first. The server needs to be started with a certain configuration and with
a JLink script to disable ROM protection.
For example, on Debian based system the following command can be used to do this (this command
is also run when running the jlink-gdb.sh
script)
JLinkGDBServer -select USB -device Cortex-M4 -endian little -if SWD -speed 2000 \
-LocalhostOnly -vd -jlinkscriptfile ./jlink/JLinkSettings.JLinkScript
After this, you can flash and debug the application with the following command
gdb-mutliarch -q -x jlink/jlink.gdb target/thumbv7em-none-eabihf/debug/examples/blinky
Please note that you can automate all steps except starting the GDB server by using a cargo
runner configuration, for example with the following lines in your .cargo/config.toml
file:
[target.'cfg(all(target_arch = "arm", target_os = "none"))']
runner = "gdb-multiarch -q -x jlink/jlink.gdb"
After that, you can simply use cargo run --example blinky
to flash the blinky
example.
Assuming a working debug connection to your VA416xx board, you can debug using VS Code with
the Cortex-Debug
plugin.
Please make sure that objdump-multiarch
and nm-multiarch
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.