https://github.com/antoniogiacomelli/rk0
RK0 | The Real-Time Kernel '0'
https://github.com/antoniogiacomelli/rk0
arm armv6m armv7m assembly c embedded operating-system real-time rtos thumb2
Last synced: 8 months ago
JSON representation
RK0 | The Real-Time Kernel '0'
- Host: GitHub
- URL: https://github.com/antoniogiacomelli/rk0
- Owner: antoniogiacomelli
- License: apache-2.0
- Created: 2025-03-25T02:25:54.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-10-04T02:16:15.000Z (8 months ago)
- Last Synced: 2025-10-04T04:17:48.541Z (8 months ago)
- Topics: arm, armv6m, armv7m, assembly, c, embedded, operating-system, real-time, rtos, thumb2
- Language: C
- Homepage: https://antoniogiacomelli.github.io/RK0/
- Size: 10.6 MB
- Stars: 9
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
RK0 - The Real-Time Kernel '0'
---
## Know it
**RK*0*** is a lean, feature-rich, highly deterministic Real-Time Kernel for deeply embedded solutions.
> - See the [**RK*0* Docbook**](https://antoniogiacomelli.github.io/RK0/) for a thorough design description and usage examples.
> - Check the [**RK*0* Blog**](https://kernel0.org/blog) for some quick reads.
_Supported Architectures_: **ARMv6M (Cortex-M0/0+) and ARMv7M (Cortex-M3/4/7)**.
---
## RK0 Main Features (0.8.0-dev)
- **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)_
---
## Use it
> - [**Emulated hardware**](https://github.com/antoniogiacomelli/RK0/wiki/RK0-%E2%80%90-Running-on-QEMU): the provided Makefile in this branch targets QEMU
> - [**Nucleo boards**](https://github.com/antoniogiacomelli/RK0/wiki/RK0-V0.6.4-on-NUCLEO%E2%80%90F103RB)
---
## System Architecture
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.

---
## Code Quality
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.
---
### Dependencies
* ARM-GCC, CMSIS-GCC
---
Copyright (C) 2025 Antonio Giacomelli | All Rights Reserved | www.kernel0.org | [📫](mailto:dev@kernel0.org)