{"id":27464784,"url":"https://github.com/antoniogiacomelli/rk0","last_synced_at":"2025-10-06T17:28:24.235Z","repository":{"id":284271474,"uuid":"954389533","full_name":"antoniogiacomelli/RK0","owner":"antoniogiacomelli","description":"RK0 | The Real-Time Kernel '0' ","archived":false,"fork":false,"pushed_at":"2025-10-04T02:16:15.000Z","size":11089,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-04T04:17:48.541Z","etag":null,"topics":["arm","armv6m","armv7m","assembly","c","embedded","operating-system","real-time","rtos","thumb2"],"latest_commit_sha":null,"homepage":"https://antoniogiacomelli.github.io/RK0/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antoniogiacomelli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-25T02:25:54.000Z","updated_at":"2025-10-04T02:16:19.000Z","dependencies_parsed_at":"2025-04-08T07:29:02.678Z","dependency_job_id":"02b73bad-9e6e-42bd-82a7-b285ff2cd735","html_url":"https://github.com/antoniogiacomelli/RK0","commit_stats":null,"previous_names":["antoniogiacomelli/rk0"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/antoniogiacomelli/RK0","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniogiacomelli%2FRK0","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniogiacomelli%2FRK0/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniogiacomelli%2FRK0/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniogiacomelli%2FRK0/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antoniogiacomelli","download_url":"https://codeload.github.com/antoniogiacomelli/RK0/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniogiacomelli%2FRK0/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278648193,"owners_count":26021829,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm","armv6m","armv7m","assembly","c","embedded","operating-system","real-time","rtos","thumb2"],"created_at":"2025-04-15T23:15:21.727Z","updated_at":"2025-10-06T17:28:24.230Z","avatar_url":"https://github.com/antoniogiacomelli.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"left\"\u003eRK\u003cem\u003e0\u003c/em\u003e - The Real-Time Kernel \u003cem\u003e'0'\u003c/em\u003e \u003cimg src=\"https://github.com/user-attachments/assets/b8b5693b-197e-4fd4-b51e-5865bb568447\" width=\"7%\" align=\"left\" alt=\"image\"\u003e\u003c/h1\u003e\n\n---\n\n## Know it\n\n**RK*0*** is a lean, feature-rich, highly deterministic Real-Time Kernel for deeply embedded solutions.\n\n\u003e - See the [**RK*0* Docbook**](https://antoniogiacomelli.github.io/RK0/) for a thorough design description and usage examples.\n\u003e - Check the [**RK*0* Blog**](https://kernel0.org/blog) for some quick reads.\n\n _Supported Architectures_: **ARMv6M (Cortex-M0/0+) and ARMv7M (Cortex-M3/4/7)**.\n\n---\n\n## RK0 Main Features (0.8.0-dev)\n\n- **O(1) Scheduler: priority preemptive (RMS)**\n\n- **Synch Pack:**\n  - _Semaphores_ (Counting/Binary)\n  - _Mutexes_ with _fully transitive Priority Inheritance_ for nested locks\n  - _Condition Variables_\n  - _Direct Task Notifications_ \n\n- **Priority-aware message-passing**\n   - _Message Queues (Mailboxes)_ for general asynchronous message-passing\n   - _Ports_ for client-server synchronous RPC, message-driven priority inheritance\n     \n- **Most-Recent Message Protocol**\n  \n  - Asynchronous, Lock-Free, purpose-built for Real-time Control Loops\n    \n- **High-Precision Timers:**\n  \n   - Minimal Tick Handling overhead for Bounded Waiting, Periodic Sleeps and Application Timers.\n\n- **Memory Partition**:\n   - Well-proven, deterministic memory allocator suitable for real-time systems.\n     \n- **Suits both procedural/shared-memory and message-passing paradigms**\n\n- **Highly Modular with clean and consistent API**.\n\n  \n- _(And that wicked cool mascot)_ \n\n---\n\n## Use it\n\n\u003e - [**Emulated hardware**](https://github.com/antoniogiacomelli/RK0/wiki/RK0-%E2%80%90-Running-on-QEMU): the provided Makefile in this branch targets QEMU\n\u003e - [**Nucleo boards**](https://github.com/antoniogiacomelli/RK0/wiki/RK0-V0.6.4-on-NUCLEO%E2%80%90F103RB)\n---\n\n## System Architecture\n\nIf 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.\n\nIn 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.\n\n\n\u003cimg src=\"https://github.com/antoniogiacomelli/RK0/blob/docs/docs/images/images/layeredkernel.png?raw=true\" width=\"35%\"\u003e\n\n---\n## Code Quality \nRK0 source code compiles cleanly with the following GCC flags:\n\n`-Wall -Wextra -Wsign-compare -Wsign-conversion -pedantic`\n\nStatic Analysis (Cppcheck)  is clean with no warnings, errors, or style issues.\n\n---\n\n### Dependencies\n* ARM-GCC, CMSIS-GCC\n  \n---\n\nCopyright (C) 2025 Antonio Giacomelli | All Rights Reserved | www.kernel0.org | [📫](mailto:dev@kernel0.org)\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantoniogiacomelli%2Frk0","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantoniogiacomelli%2Frk0","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantoniogiacomelli%2Frk0/lists"}