Skip to content

移植概览

本文档说明如何将 Yuan RTOS 移植到新的 MCU、CPU 架构或编译器环境。

目标是回答下面几个问题:

  • 需要改哪些文件
  • 必须实现哪些底层接口
  • 系统 tick 应该怎么接
  • 第一次跑起来后应该怎么验证

适用范围

本文档主要面向以下几类场景:

  • 将 Yuan RTOS 从当前 Cortex-M3 + GCC 移植到其它 Cortex-M 内核
  • 将 Yuan RTOS 移植到不同编译器
  • 将 Yuan RTOS 移植到全新架构

如果你的目标平台与当前仓库中的 libcpu/CM3/port_gcc.clibcpu/CM3/port_gcc.s 很接近,建议优先在现有实现基础上修改,而不是从零开始。

先理解 Yuan RTOS 的移植边界

Yuan RTOS 的整体结构可以分为两层:

  • 通用内核层
    • 位于 src/include/
    • 包含任务管理、调度器、定时器、IPC 等逻辑
  • 移植层
    • 位于 libcpu/
    • 负责中断控制、上下文切换、任务初始栈帧构造、首任务启动等与平台强相关的内容

也就是说,移植时你通常不需要改任务、调度器、IPC 的核心逻辑,而是要让这些通用逻辑能正确调用到底层 CPU 机制。

移植时必须完成的两件事

移植 Yuan RTOS 到新平台时,必须完成以下两部分:

  1. 实现 include/portable.h 中声明的移植层接口
  2. 提供满足 YR_TICK_RATE_HZ 的系统 tick,并在其中调用 yr_tick_update()

只要这两部分正确接入,RTOS 的大部分通用能力就可以运行起来。