【问题标题】:Why do we need a RTOS on ARM Cortex-M为什么我们需要 ARM Cortex-M 上的 RTOS
【发布时间】:2016-04-15 03:02:45
【问题描述】:

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

【问题讨论】:

    标签: arm rtos cortex-m


    【解决方案1】:

    RTOS 可能带来的典型事物,

    1. 内存管理(谁拥有内存)
    2. 中断处理支持
    3. 调度(先发制人或合作)
    4. 通常在 BSP 中为您的硬件/SOC 提供多个驱动程序
    5. 调试工具
    6. 某种外壳
    7. 文件系统
    8. IPC(进程间通信)
    9. 工具套件
    10. 构建环境
    11. 内存保护
    12. 网络

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

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

    如果 RTOS 获得 BSD(或其他许可)许可,则可以将驱动程序代码重用于您自己的自定义基础架构。在某些时候,您的代码可能会变成某种“RTOS”。有many to choose from

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

    【讨论】:

      【解决方案2】:

      不,只有当您需要/想要(特定)RTOS 的功能时,您才需要 RTOS。如果您愿意,您可以按照您/我们一直没有的方式对微控制器进行编程。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 谢谢,如果我的微控制器每次从传感器获取输入时都应该执行相同的代码,我还需要操作系统吗?
        • 你需要多任务处理吗?使用很多不同的设备?通过网络传输数据?将测量值存储为文件?
        • 在少数情况下是的,但我也可以有不包括多任务处理的项目。
        • 您不需要操作系统即可拥有 HAL。操作系统不仅仅是 HAL。
        • 我没有写“only 提供 hardware 抽象层”。操作系统定义了“文件”“线程”“网络连接”“信号”等抽象概念,并提供了一个 API 来使用它们。
        猜你喜欢
        • 1970-01-01
        • 2022-12-21
        • 2019-06-09
        • 2017-06-07
        • 1970-01-01
        • 2017-03-16
        • 2015-03-10
        • 2015-04-20
        • 2010-10-09
        相关资源
        最近更新 更多