首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FreeRTOS与CMSIS-RTX的区别

FreeRTOS与CMSIS-RTX的区别
EN

Stack Overflow用户
提问于 2017-01-25 18:20:57
回答 3查看 16.7K关注 0票数 6

FreeRTOS和CMSIS有什么区别?有谁能解释一下这两种RTOSes是如何相似或不同的吗?

EN

回答 3

Stack Overflow用户

发布于 2017-02-25 09:26:24

我认为这里混淆的原因是存在CMSIS (v1v2),还有CMSIS-RTOS RTX,它是ARM (由ARM制造)的独立操作系统,它实现了这个API。

这样做的目的是为RTOSes创建一个公共抽象层,因此,如果一个人对FreeRTOS队列不满意,他/她可以选择相同RTOS的另一个实现,而不必经常更改他/她的固件源。

虽然我认为RTOS制造商会违反CMSIS,就像MCU厂商违反CMSIS驱动程序API一样,但我个人更喜欢CMSIS。应该有许多包装器,它们提供了一层兼容的宏,使现有的RTOSes与CMSIS兼容。我只知道PolyMCU的尝试:

票数 13
EN

Stack Overflow用户

发布于 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,这可能有助于开发,但可能不是必需的。

票数 7
EN

Stack Overflow用户

发布于 2017-01-26 10:39:46

基本上,FreeRTOS是一个RTOS,而CMSIS-RTOS只是任何RTOS的包装器(比如FreeRTOS、CMSIS或您想要的任何东西)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41858814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档