什么是 RTOS 移植

What is porting in RTOS

我最近开始学习 RTOS,并遇到了“移植”这个主题。我一直认为我可以从 github 复制 RTOS 文件,将其粘贴到我的项目中并在任何设备上毫无问题地使用它。所以我对移植有点困惑。我有两个问题:

  1. RTOS 的移植是什么?
  2. 为什么我需要移植 RTOS?

提前致谢,

阿尔琼

移植是将写入 运行 的软件在一个系统上进行修改,使其在另一个系统上 运行 的行为。来自 Wikipedia

In software engineering, porting is the process of adapting software for the purpose of achieving some form of execution in a computing environment that is different from the one that a given program (meant for such execution) was originally designed for

而且,

When code is not compatible with a particular operating system or architecture, the code must be [ported] to the new system.

而且,

Porting is also the term used when a video game designed to run on one platform, be it an arcade, video game console, or personal computer, is converted to run on a different platform

换句话说,您有一些想要在实时操作系统 (RTOS) 上 运行 的软件。该软件未在 RTOS 上写入 运行,除非进行相应修改,否则将会失败。它必须先 移植 到 RTOS,然后才能 运行。如果你不移植软件,它不会运行在新系统上。

这些修改的性质和范围取决于软件和特定的 RTOS。

RTOS 直接与处理器和平台硬件交互。当 RTOS 设计用于 不同 硬件的 运行 时,您必须具有目标特定代码以使通用代码适应特定硬件和处理器架构。

RTOS 至少需要一个系统计时器来生成中断,并且要执行上下文切换,它需要直接访问处理器寄存器以恢复上下文,为要切换到的任务设置堆栈指针并生效通过设置程序计数器进行跳转 - 使用通用代码无法完成,因为它需要熟悉的硬件知识。

RTOS 的 "port" 需要专门为目标平台编写的代码,包括处理定时器中断的代码,select 哪个定时器将用作系统定时器,以及实现上下文切换.通常,大部分代码必须用汇编程序编写才能直接访问寄存器,这必然是特定于体系结构的。

除了内核调度程序之外,根据 RTOS 提供的服务范围,可能需要代码来处理目标特定 MMU/MPU 支持和 I/O 驱动程序用于文件系统、网络等