Expand description

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 NameArchitectureRust Target
ARM Cortex-M3 w/MPUArmv7-Mthumbv7m-none-eabi
ARM Cortex-M4 w/MPUArmv7E-Mthumbv7em-none-eabi
ARM Cortex-M7 w/MPUArmv7E-Mthumbv7em-none-eabi

Quickstart

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

Re-exports

pub use crate::syscall::*;
pub use bern_units as units;
pub use embedded_time;
pub use bern_arch;
pub use kernel::*;

Modules

Allocator collection.

Collection of everything that can be executed on the CPU.

Data structures.

Thread stack management.

Synchronization primitives.

System calls.

System time.

Macros

Creates a new process and the required linker sections.