#rtos #cortex-m #iot #no-std

no-std bern-kernel

Preemptive real-time kernel for microcontrollers

7 releases

0.3.0 Aug 7, 2022
0.2.5 Jun 26, 2021

#498 in Embedded development

MIT license

180KB
4.5K SLoC

bern-kernel

crates.io docs.rs book

Bern RTOS preemptive real-time kernel for microcontrollers written in Rust.

Documentation

The API Documentation is not up to date, please prefer the Bern RTOS Kernel Book for now.

Semantic Versioning

This project follows Semantic Versioning 2.0.0.

Currently the version is below 1.0.0 meaning that everything is very much unstable and the API could change completely.

Cargo Features

  • time-slicing (default): A task runs at max for one system tick period if there are other tasks of equal priority
  • log-defmt: Activate system log messages using defmt. The user must select a log transport in the application, e.g. defmt-rtt.
  • log-rtt: Activate system log messages with core formatting and RTT transport.
  • log-global: Activate system log messages using the log facade. The use must provide a global logger.
  • trace: Activate system tracing. The user must provide a global tracer, e.g. systemview-target.

License

Supported Architectures

Core Name Architecture Rust Target
ARM Cortex-M3 w/MPU Armv7-M thumbv7m-none-eabi
ARM Cortex-M4 w/MPU Armv7E-M thumbv7em-none-eabi
ARM Cortex-M7 w/MPU Armv7E-M thumbv7em-none-eabi

Quickstart

cargo generate --git https://gitlab.com/bern-rtos/templates/cortex-m.git

Dependencies

~4–6MB
~107K SLoC