移植概览
本文档说明如何将 Yuan RTOS 移植到新的 MCU、CPU 架构或编译器环境。
目标是回答下面几个问题:
- 需要改哪些文件
- 必须实现哪些底层接口
- 系统 tick 应该怎么接
- 第一次跑起来后应该怎么验证
适用范围
本文档主要面向以下几类场景:
- 将 Yuan RTOS 从当前
Cortex-M3 + GCC移植到其它 Cortex-M 内核 - 将 Yuan RTOS 移植到不同编译器
- 将 Yuan RTOS 移植到全新架构
如果你的目标平台与当前仓库中的 libcpu/CM3/port_gcc.c、libcpu/CM3/port_gcc.s 很接近,建议优先在现有实现基础上修改,而不是从零开始。
先理解 Yuan RTOS 的移植边界
Yuan RTOS 的整体结构可以分为两层:
- 通用内核层
- 位于
src/和include/ - 包含任务管理、调度器、定时器、IPC 等逻辑
- 位于
- 移植层
- 位于
libcpu/ - 负责中断控制、上下文切换、任务初始栈帧构造、首任务启动等与平台强相关的内容
- 位于
也就是说,移植时你通常不需要改任务、调度器、IPC 的核心逻辑,而是要让这些通用逻辑能正确调用到底层 CPU 机制。
移植时必须完成的两件事
移植 Yuan RTOS 到新平台时,必须完成以下两部分:
- 实现
include/portable.h中声明的移植层接口 - 提供满足
YR_TICK_RATE_HZ的系统 tick,并在其中调用yr_tick_update()
只要这两部分正确接入,RTOS 的大部分通用能力就可以运行起来。