有人评估过 NuttX RTOS 吗?
这里有与这个问题相关的讨论:链接
摘录:参考的 Linux Journal 文章在这里:链接
我认为 8052 和 M68HC12 端口是表征 NuttX 的特别糟糕的选择,因为它们都有一些问题,而 NuttX 现在的版本为 5.16,有 63 个版本。
我确实在此处的“发布者”选项卡中填写了采访:链接;那里也有评论:链接。
可在此处获得大量 NuttX 文档:链接。
hcs12和8051部分的问题如下:
8051/80c52:这种架构对 RTOS 非常不利。它在专用内存位置(地址 0)有一个很小的硬件堆栈(8051 上为 128 个字节,80c52 上为 256 个字节)。要切换任务,您必须将要阻塞的任务的整个堆栈从其专用地址复制到某个保存位置,然后将要启动的任务的整个堆栈从其保存位置复制到专用堆栈位置。耶!
而且,堆栈是如此之小。溢出堆栈非常非常容易——尤其是在中断处理期间。
NuttX 8051 端口是完整且功能齐全的(至少在我最后一次使用它时)。但是为了使它有用,您可能还必须在每次中断时复制整个堆栈以防止它溢出。基本上,我当时就失去了兴趣,但如果有人真的有使用 8051 的动机,那是可行的(如果可能不是明智的建议)。
8051 端口的优点在于它是一个很好的练习,可以将 NuttX 放入一个非常小的内存位置。8051 端口在 32Kb 的 RAM 中运行——其中包括 RTOS、libc、编译器库、大量测试程序、.data/.bss 和堆。并有一点内存可以节省!
hcs12:这是我在空闲时间做的一个项目,我没有做任何其他事情。它还没有完成,还没有准备好迎接黄金时段。
关于与其他 RTOS 的比较,我真的没有任何好的、权威的答案,因为我不使用其他 RTOS。但这是我天真的理解:
FreeRTOS有大量的下载量和大约 4Kb 的非常小的占用空间。它是真正小型 MCU 的首选 RTOS。芯片供应商将 FreeRTOS 端口与几乎每个 MCU 捆绑在一起。所以它是默认的 RTOS 选择。
有几十个竞争对手使用 FreeRTOS。ChiBIOS立即浮现在脑海中。这些都是不同类型的小型调度程序。
为了进行真正的比较,我们首先需要做的一件事是定义我们所说的 RTOS:它只是一个调度程序吗?或者它是一组集成的标准操作系统特性——比如调度程序、文件系统、设备驱动程序、内存管理、网络等。大多数操作系统,例如 Linux,都是完整的开发环境,而不仅仅是调度程序。NuttX 是一个完整的操作系统,与 Linux 的意义相同。以下是其他几个:
RTEMS:我用过这个。它一直存在,应该非常稳定。它很大;认为> 100kb。我认为它的目标略高于 MCU 市场。
uCOS : 没用过,但这是几个流行的引导加载程序下的 RTOS,不是吗?我的印象是它类似于 RTEMS,但我真的不知道我在说什么。
我如何将 NuttX 与那些进行比较:嗯,它要小得多。起始占用空间约为 20Kb。一个全功能的配置大约要多 10-20Kb。与这些 RTOS 的另一个区别是 NuttX 非常面向标准。你可以把 NuttX 想象成一个小型的类似 Linux 的工作。大多数在 Linux 上编译和运行的代码也将在 NuttX 上运行(一些系统代码,如网络代码或守护进程可能需要一些调整)。
我认为 RTEMS 更专注于微处理器;NuttX 更专注于微控制器。
选择开源 RTOS 时要记住的另一个区别是许可。特别是如果您计划在商业项目中使用 RTOS。大多数开源 RTOS 都有修改后的 GPL 许可证。许可证修改通常指定您不必使用与 GPL RTOS 链接的专有代码(但您仍然必须发布带有修改的 RTOS 文件)。
NuttX(可能还有其他人)有一个非限制性的、修改过的 BSD 许可证。使用 BSD 许可证,您基本上可以获取代码并像拥有它一样使用它,除了在文件中保留许可和版权信息之外没有任何义务。