Skip to content

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.hyr_kernel_init() / yr_kernel_start()
任务管理task.h任务创建、启动、删除、挂起、延时
调度器scheduler.h就绪队列、任务切换、让出 CPU
定时器timer.htick 更新、软件定时器、超时唤醒
IPCipc.h阻塞任务队列的统一管理
信号量semaphore.h计数信号量及 ISR API
互斥锁mutex.h递归互斥锁与优先级继承
队列queue.h消息队列及 ISR API
链表list.h双向循环链表工具
移植层portable.h中断开关、上下文切换、任务栈初始化等
核心定义yr_def.h错误码、日志宏、断言等
内核配置yr_config.h功能开关与默认配置

下一步