Skip to content

chrysn-pull-requests/RIOT-rs

 
 

Repository files navigation

Build Status

RIOT-rs

Rust & RIOT OS combined for ergonomic embedded development

This is an experimental project trying to provide a nice base OS for embedded development on low-end IoT devices (with some kilobytes of RAM/flash, think Cortex-M). It combines the awesome Rust embedded ecosystem with RIOT OS.

This is highly experimental. Expect heavy changes and breakage!

If you're looking for a more production ready way of writing RIOT applications in Rust, check out riot-wrappers.

Supported hardware

This currently only supports the Nordic nrf52840dk and the Raspberry Pi Pico.

Goals

  • improve RIOT OS using the merits of Rust.
  • provide a "rusty" development workflow (e.g., using cargo / crates.io)
  • provide a nice Rust API, framework and collection of crates suitable for embedded development
  • rewrite parts of RIOT in Rust to improve robustness and maintainability

Status

The current iteration of RIOT-rs combines embassy with a preemptive scheduler and adds some integration and build system work. It's highly experimental, expect frequent changes and breakage.

Quickstart

Assuming you have a Nordic nrf52840dk connected, this should get you somewhere:

Prerequisites

1.install needed system dependencies. On Ubuntu, this should be sufficient:

    apt-get install build-essential curl git python3 pkg-config \
               libssl-dev llvm-dev cmake libclang-dev gcc-arm-none-eabi \
               clang libnewlib-nano-arm-none-eabi unzip lld ninja-build
  1. install rustup

  2. install laze: cargo install laze

  3. install probe-rs: cargo install probe-rs --features cli (2023-10-17: if that fails, try from git: cargo install --git https://github.com/probe-rs/probe-rs --features cli)

  4. clone this repository and cd into it

Run some example

  1. Compile, flash and the hello-world example using probe-rs run

     laze -C examples/hello-world build -b nrf52840dk -s probe-rs-run run
    

More information

Please look here for more usage information.

Minimum Supported Rust Version (MSRV)

RIOT-rs makes heavy use of Rust unstable features. For the time being, it is recommended to use a current nightly.

Copyright & License

RIOT-rs is licensed under either of

at your option.

RIOT-rs links with many components of RIOT OS, which is licenced under the terms of LGPLv2.1.

Copyright (C) 2020-2023 Freie Universität Berlin, Inria, Kaspar Schleiser

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 97.5%
  • C 1.5%
  • Other 1.0%