/usync

Async executor for bare-metal firmware

Primary LanguageRust

Usync

A Rust future runtime for bare-metal no_std devices.

Rust Workflow

Development

The following section will help set up your development environment. All examples in this repo were developed with the STM32F4DISCOVERY board, so the instructions are focused on that setup. Note that this library can currently run on any Cortex-M based MCU, but has not been extensively tested in those environments.

Prerequisites

Nightly Compiler

Usync uses several experimental features, and thus requires the nightly compiler. To switch to nightly run the following command:

rustup default nightly

Cortex-M4F Target

Since all examples for this project are targeting the STM32F407, we need to install the Cortex-M4F. To add the target run the following command:

rustup target add thumbv7em-none-eabihf

Renode(Optional)

Renode is an open source MCU emulator. All examples in this library can run in Renode. You only need to install this dependency if you plan to run an emulated example. Downloads can be found here.

cargo-make(Optional)

cargo-make is a workflow manager for cargo. It is used to provide a single command to build and launch examples in Renode. To install run the following command:

cargo install --force cargo-make

Running Examples

All examples can be built normally and executed in target with your choice of debugger. To quickly run an example in renode run the following command:

cargo make --makefile renode.toml run <example_name>

Running Integration Tests

Integration tests are all written in the Robot Framework, and can be run with the following command

cargo make --makefile renode.toml test <test-name>