FreeRTOS和CMSIS-RTOS有什么区别?有人能解释一下这两个RTOS的相似之处和不同之处吗?
我曾经使用过RTX,在CMSIS包含RTOS规范之前,与FreeRTOS进行了比较。当时,相对于定时器的支持方面,RTX比较原始。我不知道在CMSIS-RTX中是否有所改变。
两者都使用基于优先级的抢占式调度,在这个意义上都是“传统”的,但是FreeRTOS的内部设计有些不同寻常。在大多数RTOS中,所有其他API服务都是从互斥锁创建的基本原语,而在FreeRTOS中,最基本的原语是“队列”。因此,“简单”的原语,如信号量和互斥锁,是从更复杂的队列创建的,而不是从更直观地从简单事物构建复杂事物。我想这种设计对性能有一定影响。即使没有这个问题,我发现即使在Cortex-M3 72MHz上,FreeRTOS中的上下文切换也比RTX慢得多(15us vs 5us)。
FreeRTOS当然是“免费”的,而RTX则包含在Keil的许可商业开发工具中。如果您正在使用这些工具,IDE和调试器中可能会有一定程度的RTOS感知支持,这可能有助于开发,但并非必需。