Skip to content
Antonio Giacomelli edited this page Nov 20, 2025 · 378 revisions

RK0 Wiki

RK0 is built for MCU-based control systems where deterministic behaviour is critical. Determinism and clear semantics are core design guidelines.

  • It supports two complementary programming models on the top of a O(1) priority-based preemptive scheduling:
    • Shared-memory (procedural) – the classic model: tasks synchronise via semaphores, event flags and condition variables to share data and coordinate execution. he kernel implements fully transitive priority inheritance on mutex.
    • Message-passing – tasks exchange data through message queues, ports, and mailboxes, sending fixed-size messages between 'isolated' contexts. Ports leverage priority boosting/demotion for a client-server model.
  • The Most-Recent Message Protocol is a 1-to-many, purpose-built message passing mechanism to avoid stale data on control-loops.

  • Fixed-size memory pools avoid fragmentation and unpredictable memory latency.

  • Timers (delay, periodic, bounded waiting and callout) are optimised for precision and low-overhead (O(1)).


  • The examples provided within this repo and/or projects for Nucleo boards along with the Docbook provide enough guidance on creating tasks and initialising the kernel. The configuration is on the file kconfig.h and is self-documented. API is on kapi.h and is also self-documented.

  • Sections explaining QEMU building system and its integration to VSCode on macOS, Windows and Linux are available on the Wiki links.

  • Nucleo boards: an STM32CubeIDE project and a building system that is not attached to any specific IDE, are available for download.

Clone this wiki locally