RK0 is a lean, highly deterministic Real-Time Kernel for deeply embedded solutions.
- See the RK0 Docbook for a thorough design description.
- Check the RK0 Blog for some quick reads.
Supported Architectures: ARMv6M (Cortex-M0/0+) and ARMv7M (Cortex-M3/4/7).
- Emulated hardware: the provided Makefile targets QEMU
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.
- Priority Preemptive Scheduler (Low-latency, O(1): 4¹ CPU cycles pick-next algorithm).
- FPU support.
- Inter-Task Communication: a composable rich set of synchronisation and message-passing mechanisms, designed with different best-use cases in mind
- High-precision application timers.
- Efficient fixed-size Memory Allocator (Memory Pools)
- Footprint² is less than 3KB ROM (core features).
- Highly modular: features are independent. You don't pay for what you don't use.
- Clean uniform API.
¹ On ARMv7M. ARMv6M yields O(1), ~11 cycles
² Core system, does not account optional services and application size.
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
Drop a message: 📫
Copyright (C) 2025 Antonio Giacomelli | All Rights Reserved | www.kernel0.org