RK0 is a lean, feature-rich, highly deterministic Real-Time Kernel for deeply embedded solutions.
- See the RK0 Docbook for a thorough design description and usage examples.
- Check the RK0 Blog for some quick reads.
Supported Architectures: ARMv6M (Cortex-M0/0+) and ARMv7M (Cortex-M3/4/7).
-
O(1) Scheduler: priority preemptive (RMS)
-
Synch Pack:
- Semaphores (Counting/Binary)
- Mutexes with fully transitive Priority Inheritance for nested locks
- Condition Variables
- Direct Task Notifications
-
Priority-aware message-passing
- Message Queues (Mailboxes) for general asynchronous message-passing
- Ports for client-server synchronous RPC, message-driven priority inheritance
-
Most-Recent Message Protocol
- Asynchronous, Lock-Free, purpose-built for Real-time Control Loops
-
High-Precision Timers:
- Minimal Tick Handling overhead for Bounded Waiting, Periodic Sleeps and Application Timers.
-
Memory Partition:
- Well-proven, deterministic memory allocator suitable for real-time systems.
-
Suits both procedural/shared-memory and message-passing paradigms
-
Highly Modular with clean and consistent API.
-
(And that wicked cool mascot)
- Emulated hardware: the provided Makefile in this branch targets QEMU
- Nucleo boards
If no more details are to be provided, the kernel has a top and a bottom layer. On the top, the Executive manages the resources needed by the application. On the bottom, the Low-level Scheduler works as a software extension of the CPU. Together, they implement the Task abstraction — the Concurrency Unit that enables a multitasking environment.
In systems design jargon, the Executive enforces policy (what should happen). The Low-level Scheduler provides the mechanism (how it gets done). The services are the primitives that transform policy decisions into concrete actions executed by the Scheduler.
RK0 source code compiles cleanly with the following GCC flags:
-Wall -Wextra -Wsign-compare -Wsign-conversion -pedantic
Static Analysis (Cppcheck) is clean with no warnings, errors, or style issues.
- ARM-GCC, CMSIS-GCC
Copyright (C) 2025 Antonio Giacomelli | All Rights Reserved | www.kernel0.org | 📫