-
Notifications
You must be signed in to change notification settings - Fork 2
Home
RK0 is built for MCU-based control systems where deterministic behaviour is critical. Determinism and clear semantics are core design guidelines. It provides an O(1) preemptive, priority-based scheduler.
-
Two complementary programming models are supported:
-
Shared-memory (procedural) – the classic model: tasks synchronise via semaphores, event flags and condition variables to share data and coordinate execution. Mutexes support fully transitive priority inheritance.
-
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)).
-
A comprehensive Docbook along with the examples within this repo and/or projects for Nucleo boards provide enough guidance for kernel usage.
-
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.
Copyright (C) 2025 Antonio Giacomelli | www.kernel0.org