#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

#413 in Embedded development

32 downloads per month

MIT license

4.5K SLoC


crates.io docs.rs book

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


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.


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


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


~124K SLoC