FreeRTOS和CMSIS有什么区别?有谁能解释一下这两种RTOSes是如何相似或不同的吗?
发布于 2017-02-25 09:26:24
我认为这里混淆的原因是存在CMSIS (v1和v2),还有CMSIS-RTOS RTX,它是ARM (由ARM制造)的独立操作系统,它实现了这个API。
这样做的目的是为RTOSes创建一个公共抽象层,因此,如果一个人对FreeRTOS队列不满意,他/她可以选择相同RTOS的另一个实现,而不必经常更改他/她的固件源。
虽然我认为RTOS制造商会违反CMSIS,就像MCU厂商违反CMSIS驱动程序API一样,但我个人更喜欢CMSIS。应该有许多包装器,它们提供了一层兼容的宏,使现有的RTOSes与CMSIS兼容。我只知道PolyMCU的尝试:
发布于 2017-01-26 14:34:40
在CMSIS包含RTOS规范之前,我就使用过RTX,并将其与FreeRTOS进行了比较。当时RTX有点原始,特别是在对定时器的支持方面。我不知道这是否已经改变在CMSIS中。
两者都使用先发制人的基于优先级的调度,而且在这个意义上都是“传统的”,但是FreeRTOS的内部设计有点不寻常。在大多数RTOS中,创建所有其他API服务的基本原语是互斥,而在FreeRTOS中,基本原语是队列。因此,“简单”原语(如信号量和互斥)是从更复杂的队列中创建的--而不是从直观上来说更复杂的东西是由简单的事物生成的。我可以想象这种设计对性能有一定的影响。即使没有这一点,我也发现即使是FreeRTOS中的上下文切换也要花费更长的时间(15usvs5us在72MHz的Cortex-M3上)。
FreeRTOS当然是“免费的”,而RTX则包含在Keil授权的商业开发工具中。如果您正在使用这些工具,则在IDE和调试器中有一定程度的RTOS支持RTX,这可能有助于开发,但可能不是必需的。
发布于 2017-01-26 10:39:46
基本上,FreeRTOS是一个RTOS,而CMSIS-RTOS只是任何RTOS的包装器(比如FreeRTOS、CMSIS或您想要的任何东西)。
https://stackoverflow.com/questions/41858814
复制相似问题