为什么我们需要 ARM Cortex-M 上的实时操作系统

Why do we need a RTOS on ARM Cortex-M

如果我们已经可以像微控制器一样在cortex-m上执行C程序,为什么还要安装RTOS(或其他操作系统)。? 如果微控制器是多用途的,它能提供什么好处?

操作系统在应用程序员编写的代码与程序 运行 所在的实际硬件之间提供了一定程度的抽象。 因此,作为应用程序程序员,您不必担心硬件的细节,因为它们由驱动程序处理。 因此,您可以为许多不同的硬件平台编译相同的程序,如果它们 运行 相同(或兼容)的操作系统。

不,仅当您 need/want 具有(特定)RTOS 的功能时,您才不需要 RTOS。如果您愿意,您可以按照 you/we 始终没有的方式对微控制器进行编程。

RTOS 可能带来的典型事物,

  1. 内存管理(谁拥有内存)
  2. 中断处理支持
  3. 正在安排(pre-emptive 或 co-operative)
  4. 通常您的 hardware/SOC
  5. 的 BSP 中有多个驱动程序
  6. 调试工具
  7. 某种shell
  8. 文件系统
  9. IPC(inter-process 交流)
  10. 工具套件
  11. 构建环境
  12. 内存保护
  13. 网络

您的应用程序可能需要也可能不需要这些功能,具体取决于您的最终目标。其中一些可能不利于您组织的工作流程(如工具套件和构建环境)。随着产品的成熟,您可能最终需要您没有考虑到的功能。

但是,完全自定义的解决方案可能占用空间更小。中断处理中涉及的竞争条件可能很难正确处理。可能大多数 RTOS 会提供比随时间演变的自定义更好的实现。如果您非常专注,带有设备轮询的状态机可能会更优化(硬实时),但同样很难做到正确。

如果 RTOS 是 BSD(或其他许可)许可的,则可以将驱动程序代码重新用于您自己的自定义 infra-structure。在某些时候,您的代码可能会变成 'RTOS' 之类的。有many to choose from.

POSIX 合规是一个共同的标准。如果将代码限制为 POSIX,则可以移植到许多不同的 RTOS/OS。然而,通常 API 比 POSIX 更富有;这是他们彼此区分的一种方式。如果 RTOS 符合 POSIX,您可以使用更多 3rd 方库。