RK0 is a lean, feature-rich, highly deterministic Real-Time Kernel for deeply embedded solutions.
Supported Architectures: ARMv6M (Cortex-M0/0+) and ARMv7M (Cortex-M3/4/7).
-
The RK0 Docbook provides a comprehensive system description
-
RK0 Wiki details application structuring, QEMU setup, reference projects for download (Nucleo boards)
-
RK0 Blog provides some quick complementary reads.
-
O(1) Scheduler: priority preemptive (RMS)
-
Synch Pack:
- Semaphores (Counting/Binary)
- Mutexes with fully transitive Priority Inheritance
- Conditional Critical Regions (Condition Variable/Monitor-like constructions)
- Task Event Registers
-
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, Phase-locked Periodic Releases and Callout 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)
Prerequisites:
- ARM GNU Toolchain (
arm-none-eabi-gcc, arm-none-eabi-gdb / gdb-multiarch (Debian)) - QEMU for ARM (
qemu-system-arm)
Build and run the RK0 demo on QEMU:
git clone https://github.com/antoniogiacomelli/RK0.git
cd RK0
make arch=<armv6/7m> qemuRK0 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) 2026 Antonio Giacomelli | All Rights Reserved | www.kernel0.org | 📫
