Yuan RTOS 项目简介
Yuan RTOS 是一个面向 Cortex-M 等资源受限 MCU 的轻量级实时操作系统(RTOS),使用 C11 编写。核心设计目标是简单、可控、低资源占用,同时也是一份"从零写 RTOS"的完整教学素材。
设计目标
- 轻量:默认配置下内核占用约 640B RAM / 2.5KB ROM(-Os)
- 简单:内核与移植层分离,代码量小、可读性好,适合学习与二次开发
- 可控:所有内核对象静态分配,不使用动态内存,资源占用可预测
- 可裁剪:通过配置开关按需关闭功能模块
- 可移植:架构相关代码集中在
libcpu,提供清晰的移植接口
主要特性
- 优先级抢占式调度(32 级,数值越小优先级越高),同级任务按时间片轮转
- 基于位图 + 双向循环链表的 O(1) 就绪队列
- 任务创建、启动、删除、挂起、相对/周期延时
- 软件定时器与系统 tick 管理
- 信号量、递归互斥锁(支持优先级继承)、消息队列,均提供 ISR 版本
- 轻量级日志(
yr_printf/YR_DEBUG_LOG)与断言、参数检查开关
目录结构
| 目录 | 说明 |
|---|---|
include/ | 公共头文件(内核 API 与配置) |
src/ | 内核通用源码 |
libcpu/ | 架构/编译器相关移植层 |
bsp/ | 板级支持包示例(STM32F103C8T6,CMake / EWARM) |
docs/ | 文档站点(VitePress) |
内核模块
| 模块 | 头文件 | 说明 |
|---|---|---|
| 内核入口 | kernel.h | yr_kernel_init() / yr_kernel_start() |
| 任务管理 | task.h | 任务创建、启动、删除、挂起、延时 |
| 调度器 | scheduler.h | 就绪队列、任务切换、让出 CPU |
| 定时器 | timer.h | tick 更新、软件定时器、超时唤醒 |
| IPC | ipc.h | 阻塞任务队列的统一管理 |
| 信号量 | semaphore.h | 计数信号量及 ISR API |
| 互斥锁 | mutex.h | 递归互斥锁与优先级继承 |
| 队列 | queue.h | 消息队列及 ISR API |
| 链表 | list.h | 双向循环链表工具 |
| 移植层 | portable.h | 中断开关、上下文切换、任务栈初始化等 |
| 核心定义 | yr_def.h | 错误码、日志宏、断言等 |
| 内核配置 | yr_config.h | 功能开关与默认配置 |
下一步
- 想了解 RTOS 的基本概念?阅读 RTOS 入门
- 想快速跑起来?看 安装与集成
- 想深入了解内核实现与 API?进入 Yuan RTOS 教程