11 releases (4 breaking)
0.5.1 | Nov 29, 2024 |
---|---|
0.5.0 | Nov 29, 2024 |
0.4.2 | Oct 16, 2024 |
0.3.0 | Jul 16, 2024 |
0.1.0 | May 11, 2024 |
#130 in Robotics
641 downloads per month
Used in 2 crates
315KB
2.5K
SLoC
vexide
Open-source Rust runtime for VEX V5 robots. vexide provides a no_std
Rust runtime, async executor, device API, and more for the VEX V5 Brain!
vexide is the successor to pros-rs which is a set of unmaintained APIs using bindings over PROS.
[!WARNING] vexide is still considered experimental, but can be used today. Check out our docs on how to get started.
Getting Started
vexide is published on crates.io and can be used like a normal embedded Rust crate.
If you're just getting started, we recommend going through our docs, which provide step-by-step instructions for setting up a development environment with vexide-template. You can also use our examples as a reference for your own projects.
Project Structure
The vexide runtime is a fairly standard rust monorepo split into 7 subcrates:
vexide-core
provides lowlevel core functionality for programs, such as allocators, synchronization primitives, serial printing, I/O and timers.vexide-devices
contains all device-related bindings for things like motors and sensors.vexide-async
implements our cooperative async runtime as well as several important async futures.vexide-startup
contains bare-metal startup code required to get freestanding user programs running on the Brain.vexide-panic
contains our panic handler.vexide-graphics
implements graphics drivers for some popular embedded Rust graphics libraries like Slint andembedded-graphics
.vexide-macro
contains the source code for the#[vexide::main]
proc-macro.
These subcrates are exported from a single vexide
crate intended to be used as a complete package.
Building
vexide relies on some features that are only available in Rust’s nightly release channel, so you’ll need to switch to using nightly. We also depend on the rust-src
component due to our embedded target requiring a build of core
.
rustup override set nightly
rustup component add rust-src
This project is compiled like any other Rust project with one caveat - we have our own dedicated wrapper over cargo
called cargo-v5
, which passes some additional arguments to cargo
to correctly build for the platform.
You can install that tool with the following command:
cargo install cargo-v5
From there, the project can be built like any other Rust library through cargo-v5
:
cargo v5 build --release
Examples can similarly be built this way:
cargo v5 build --example basic --release
[!NOTE] If you don't want to use
cargo-v5
to build your project, you can effectively do the same thing that it's doing by runningcargo build --target ./armv7a-vex-v5.json -Zbuild-std=core,alloc,compiler_builtins
Testing Your Changes
When making changes to vexide, it's a good idea to test them. The easiest way to do this is by running one of our examples. cargo-v5
can be used to upload an example by running a command like this:
cargo v5 upload --example basic --release
Depending on what you have changed, the basic example may not be the best example to test. We have many examples covering different parts of vexide, so choose the one that applies to your changes. If there isn't one, feel free to add it!
Dependencies
~0–18MB
~259K SLoC