0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分析一下CesiμmRTOS与FreeRTOS的差异

麦克泰技术 来源:麦克泰技术 2023-02-12 10:17 次阅读

µC/OS的商业版Cesiμm RTOS,和FreeRTOS是嵌入式软件领域流行的两种实时内核。虽然这两款RTOS功能相似,并且具有可比较的执行指标,但它们都有各自的优点和缺点,本文将分析一下其差异。

功能区别

Cesiμm RTOS和FreeRTOS的API之间存在比较大的差异。以信号量创建为例,FreeRTOS提供了下列对象创建函数:

1d7e0cf0-a983-11ed-bfe3-dac502259ad0.png

与信号量创建函数一样,互斥信号量和队列也使用类似的函数变体,而非一个统一的函数来创建这些内核对象,导致用户必须熟悉更多的API。

虽然FreeRTOS这些函数使得在应用程序中查找相应的信号量创建函数更容易,但用户需要付出更多努力理解每个函数的具体用途。相反,使用Cesiμm RTOS,信号量或互斥量创建更简单。

1d931ab4-a983-11ed-bfe3-dac502259ad0.png

传递给函数的参数将决定用户创建的对象类型。这种方法非常简单,用户不需要象FreeRTOS一样,在调试时执行多个重定向创建函数。

通过OSSemCreate()函数,根据参数值可以创建二值、计数或静态信号量,设置初始计数并将信号量数据对象定义为静态变量或非静态变量。

通过传入创建函数的不同参数,创建与FreeRTOS相同类型的对象,而无需为每个对象单独提供函数。

从使用上讲,Cesiμm RTOS的功能没有缺失,但调试时需要了解、管理和维护的API更少。

调试特性

FreeRTOS中,信号量创建函数将映射到等效队列函数实例中。例如:

1da2c090-a983-11ed-bfe3-dac502259ad0.png

随着函数嵌套深度的增加,在调试期间跟踪错误将变得更加困难。而在Cesiμm RTOS中调试信号量、队列或互斥信号量的创建更简单,更容易找到故障点或错误配置。

例如xSemaphoreTake()函数将调用xQueueSemaphoreTake()函数,后者将根据调用来自信号量还是队列,实现后续操作。

额外的条件处理使函数在调试时的跟踪更加复杂。相比之下,Cesiμm RTOS中的创建函数更直接、简短,并且能更快的调试并识别问题。

在性能方面,两者几乎相同,但从开发人员的角度来看,Cesiμm RTOS代码将更容易跟踪。

特性区别

尽管两个内核提供的功能相似,但Cesiμm RTOS提供了更高的代码质量和一些独特的特性。

其中包括更具描述性的错误返回代码、与现成的Cesiμm软件栈的兼容性以及整体代码的清洁度。

错误返回码

FreeRTOS函数返回码非常简单。通常会给出两个返回代码值给其调用API。大多数函数的返回值为pdPASS, pdFAIL, pdTRUE和pdFALSE。

对于描述性稍强的返回代码,一些函数可能返回值errCOULD_NOT_ALLOCATE_REQUIRED_

MEMORY、errQUEUE_BLOCKED、errQUEUE_YIELD、errQUEUE_BLOCKED或errQUEUE_YIELD。

当试图检测代码以实现故障恢复或更复杂的错误处理时,这些返回值无法提供更多详细的反馈。

如vSemaphoreDelete(),这个函数调用了vQueueDelete(),其返回代码是void,这使得测试该函数的结果是成功还是失败变得很棘手。

1db4266e-a983-11ed-bfe3-dac502259ad0.png

相比之下,Cesiμm RTOS提供了丰富的错误返回值和消息,供开发人员在API中使用。所有用户调用的OS函数都提供了(OS_ERR *)类型参数。

该变量在执行完成时被赋予一个值来反映成功或失败的原因。这些细节可以提供更精确的调试体验。

当调试一个大型应用程序时,这个特性将显著影响开发时间。

vSemaphoreDelete()的等效函数,在Cesiμm RTOS 为OSSemDel(),此函数接受(OS_ERR *)类型参数,该参数可以返回以下值之一。

1dc6c1a2-a983-11ed-bfe3-dac502259ad0.png

支持的软件栈

Cesiμm RTOS的另一个优势是其丰富的中间件支持。中间件与RTOS基于相同的规范设计和标准。使开发人员的学习体验更加顺畅。

广泛使的用FreeRTOS,也支持许多第三方软件栈。然而,这些产品具有不同的代码设计标准,使得产品集成更具挑战性。开发人员不仅要学习新产品,还必须熟悉其代码风格。移植和集成工作更具挑战性。Cesiμm RTOS全系列软件产品在设计时考虑到了互操作性。这有助于加快开发人员在集成新软件堆栈时的学习曲线。Cesiμm RTOS提供以下产品栈:

· 文件系统Cs/FS

· 网络协议栈Cs/NET,其中应用协议如HTTP、DHCP等

· USB设备栈Cs/USBD

· USB主机栈Cs/USBH

· Modbus栈Cs/Modbus

此时,Cesiμm还支持SSL解决方案、图形用户接口和其他第三方产品。

洁净的代码

在查看代码时,将代码和注释混合在一起时中,将很难将两者分开并只关注其中一个。因此,Cesiμm RTOS代码被划分为左边的代码和右边的注释。当然,这并没有真正的改进性能,完全是为了用户体验。结构越清晰,就越容易学习、使用和支持。这使得理解Cesiμm RTOS代码更容易,从而节省了进入开发阶段的时间。

虽然FreeRTOS和Cesiμm RTOS解决方案在性能和功能上相似,但Cesium RTOS提供了的更佳的用户体验。为应用程序选择最佳的RTOS涉及许多因素,例如性能、功能和可靠性。对开发人员来说,同样重要的是精通RTOS特性所需的努力程度及其易用性(其中包括应用程序调试,这是开发周期中经常被忽视的阶段)。

随着应用的增长,会添加新的特性集,整个项目的复杂性也会增加。Cesiμm RTOS内置的用户体验增强功能使用户在复杂应用程序中更高效,并帮助提高工作效率。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RTOS
    +关注

    关注

    21

    文章

    809

    浏览量

    119342
  • FreeRTOS
    +关注

    关注

    12

    文章

    483

    浏览量

    61898
  • Err
    Err
    +关注

    关注

    0

    文章

    6

    浏览量

    6494
  • API串口
    +关注

    关注

    0

    文章

    13

    浏览量

    4832

原文标题:【内核对比】CesiμmRTOS vs FreeRTOS

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问一下在不使用FreeRTOS情况这个AP模式的连接中断是怎么设置的?

    getting_started_with_wlan_ap却可以,比较差别发现主要问题在FreeRTOS,请问一下在不使用FreeRTOS情况这个AP模式
    发表于 06-07 10:40

    分析一下uC/OS-III和FreeRTOS的区别

    样的,但是有个任务比较重要,我们希望让它的CPU占用率高点,这时只要把它的时间片设置得大点即可。而在FreeRTOS中同优先级的每个任务对CPU的占用率都只能是
    发表于 12-17 10:31

    supervisor的第三方软件Web统管理界面cesi

    supervisor进程管理(三_II):Web统管理界面cesi
    发表于 04-02 11:48

    关于FreeRTOS内存管理的疑问谁来解答一下

    今天看了原子哥讲的FreeRTOS关于内存管理方面的书和视频,看完之后有个疑问直不明白,贴出来大家分析一下。原子哥也讲了,实际在应用中,尤其是简单的单片机应用中,用的最多的内存管理方
    发表于 06-16 04:35

    请问一下FreeRTOS系统的LwIP-1.4.1是怎样移植的

    请问一下FreeRTOS系统的LwIP-1.4.1是怎样移植的?有哪些移植过程?
    发表于 11-03 07:06

    梳理一下FreeRTOS任务管理单元实现思路

    关注、星标嵌入式客栈,精彩及时送达[导读] 学习梳理一下FreeRTOS任务管理单元实现思路,代码分析基于V10.4.3。从本文开始计划写个图解freeRTOS内核系列笔记分享给朋友们
    发表于 01-13 07:08

    梳理一下FreeRTOS内核代码规范

    [导读] 遇到些朋友感觉FreeRTOS内核代码看起来很不习惯,不习惯其编码风格,本文就来梳理一下其代码规范,便于提高阅读其代码的效率。代码基于FreeRTOS V10.4.3。FreeR...
    发表于 03-01 07:33

    FreeRTOS对lwIP的移植程序

    FreeRTOS对 lwIP的移植程序。
    发表于 10-29 10:58 11次下载

    谈谈FreeRTOS及其授权方式

    FreeRTOS及其授权方式如果需要了解的可以看一下
    发表于 01-04 18:12 0次下载

    电磁炉加热一下就停一下什么原因及解决办法

    电磁炉有时会出现加热故障,现象是热一下一下在热一下又停一下,基本隔
    发表于 03-18 09:02 27.3w次阅读

    电磁炉加热一下就停一下什么原因

    电磁炉加热一下就停一下什么原因。
    的头像 发表于 06-04 10:01 3.8w次阅读

    初入FreeRTOS

    源码3、FreeRTOS移植操作三、在STM32完成个基于FreeRTOS的多任务程序1、任务要求2、任务实施3、任务结果四、总结
    发表于 12-06 21:06 40次下载
    初入<b class='flag-5'>FreeRTOS</b>

    图解FreeRTOS 原理系列之任务管理器基本框架

    [导读] 学习梳理一下FreeRTOS任务管理单元实现思路,代码分析基于V10.4.3。从本文开始计划写个图解freeRTOS内核系列笔记分享给朋友们,...
    发表于 01-25 19:49 4次下载
    图解<b class='flag-5'>FreeRTOS</b> 原理系列之任务管理器基本框架

    FreeRTOS高级篇2---FreeRTOS任务创建分析

    FreeRTOS基础系列《FreeRTOS系列第10篇---FreeRTOS任务创建和删除》中介绍了任务创建API函数xTaskCreate(),我们这里先回顾一下这个函...
    发表于 01-26 17:42 23次下载
    <b class='flag-5'>FreeRTOS</b>高级篇2---<b class='flag-5'>FreeRTOS</b>任务创建<b class='flag-5'>分析</b>

    分析一下SR锁存器的原理

    作为电路设计者,锁存器很多场合都会用到,今天和大家分析一下SR锁存器的原理。
    的头像 发表于 08-20 17:30 6767次阅读
    <b class='flag-5'>分析</b><b class='flag-5'>一下</b>SR锁存器的原理