[RTOS]uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点

2023-05-16

最近正好又重新回顾了一下这几款OS,心里一直有个疑问,明明这几款RTOS是这么像,为什么还要搞出这么多个来呢,最后的结论就是,管他呢,反正哪个用的顺手用哪个。
  本篇博客就来细数这几个RTOS的特点。
 
以下内容均来自官方网站或者官方手册Feature的Google翻译的加了我的一些调整,没有任何主观成分。

未经同意禁止转载,尊重别人的劳动成果!!!https://blog.csdn.net/wangyijieonline/article/details/77584726


1. FreeRTOS

  FreeRTOS是专为小型嵌入式系统设计的可扩展的实时内核。
亮点包括:

  • 微小的封装形式。
  • 免费的RTOS调度程序
  • 免费嵌入式软件源代码。
  • 免版税。
  • 抢占式,协作式和混合配置选项,可选时间分片。
  • SafeRTOS衍生产品对代码完整性提供了高度的信心。
  • 包括一个为低功耗应用设计的tickless模式。
  • 可以使用动态或静态分配的RAM来创建RTOS对象(任务,队列,信号量,软件定时器,互斥体和事件组)。
  • 官方支持>30个嵌入式系统架构(以ARM7和ARM Cortex-M3为一体架构)。
  • FreeRTOS-MPU支持ARM Cortex-M3内存保护单元(MPU)。
  • 设计小巧,简单易用。通常,RTOS内核二进制映像将在4K到9K字节的区域内。
  • 可移植性非常好的源代码结构,主要用C.
  • 支持实时任务和协同程序。
  • 直接到任务通知,队列,二进制信号量,计数信号量,递归信号量和互斥体,用于任务之间的通信和同步,或实时任务和中断之间。
  • 创新事件组(或事件标志)实施。
  • 具有优先级继承的互斥体。
  • 高效的软件定时器。
  • 强大的执行跟踪功能。
  • 堆栈溢出检测选项。
  • 免费监控的论坛支持或可选的商业支持和许可。
  • 对可创建的实时任务数量没有软件限制。
  • 对可以使用的任务优先级的数量没有软件限制。
  • 对任务优先级分配没有限制 - 可以为多个实时任务分配相同的优先级。
  • 许多支持的架构的免费开发工具。
  • 从标准的Windows主机开发。

2. uCOS家族(I/II/III)

  μC/ OS-II和μC/ OS-III是抢占式,高度便携式和可扩展的实时内核。这些内核旨在便于在大量CPU架构上使用,这些内核是μC/ OS实时操作系统的关键组件。

关键价值(Key Values):

  • 可移植性。 提供前所未有的易用性,μC/OS内核提供完整的源代码和深入的文档。 μC/ OS内核运行在大量处理器架构上,端口可供下载。
  • 可扩展性。 μC/ OS内核允许无限制的任务和内核对象。内核的内存占用可以缩小,仅包含应用程序所需的功能,通常为6-24 KB的代码空间和1KB的数据空间。
  • 可靠。 μC/ OS内核包括减少开发时间的调试功能。内核提供广泛的范围检查,包括检查API调用中传递的指针,来自ISR的任务级服务,允许范围内的参数以及有效的指定选项。
  • 高效。 Micrium的内核还包括有价值的运行时统计信息,使您的应用程序的内部可视化。 识别性能瓶颈,并在开发周期的早期优化电源使用。

μC/ OS内核的特性包括以下亮点(Highlights):

  • 抢占式多任务实时内核,可选择循环调度
  • 提供完整,干净,一致的源代码,具有深入的文档。
  • 高可扩展性:无限数量的任务,优先级和内核对象
  • 同时等待多个内核对象
  • 直接向任务发送信号/消息
  • 资源高效:6K至24K字节代码空间,1K +字节数据空间)
  • 非常低的中断禁用时间
  • 广泛的性能测量指标(可配置)
  • 可用于关注安全型应用

下表显示了µC/OS 多年来的演变, 比较了每个版本中可用的功能。

特点(Features)µC/OSµC/OSIIµC/OSIII
发布年份199219982009
提供源代码
书(Book)
抢占式多任务
最大任务量64255无限
每个优先级别的任务数11无限
时间片轮转调度××
信号量
互斥信号量×√(可嵌套)
事件标志组×
消息邮箱×(不需要)
消息队列
固定大小的内存管理×
直接向任务发送信号量××
无需调度的信号发送选项××
直接向任务发送消息××
软件定时器×
任务挂起/恢复×√(可嵌套)
防止死锁
可裁剪
代码量3K-8K6K-26K6K-24K
数据量1K+1K+1K+
代码可固化
运行时可配置××
编译时可配置
支持内核对象的 ASCII 命名×
同时等待多个内核对象×
任务寄存器×
内置性能测试×基本增强
内置追踪点××
用户可定义的钩子函数×
POST 操作可加时间戳××
内核察觉式调试×
用汇编语言优化的调度器××
捕获退出的任务××
任务级时钟节拍处理×
系统服务函数的数目~20~90~75

3. RT-Thread

Tips:在markdown中实现段落缩进

  • 半方大的空白 或 
  • 全方大的空白 或 
  • 不断行的空白格 或 

  RT-Thread是一款来自中国的开源嵌入式实时操作系统,由国内一些专业开发人员从2006年开始开发、维护,除了类似FreeRTOS和UCOS的实时操作系统内核外,也包括一系列应用组件和驱动框架,如TCP/IP协议栈,虚拟文件系统,POSIX接口,图形用户界面,FreeModbus主从协议栈,CAN框架,动态模块等,因为系统稳定,功能丰富的特性被广泛用于新能源,电网,风机等高可靠性行业和设备上,已经被验证是一款高可靠的实时操作系统。
  RT-Thread实时操作系统遵循GPLv2+许可证,实时操作系统内核及所有开源组件可以免费在商业产品中使用,不需要公布应用源码,没有任何潜在商业风险。
  RT-Thread实时操作系统核心是一个高效的硬实时核心,它具备非常优异的实时性、稳定性、可剪裁性,当进行最小配置时,内核体积可以到 3k ROM 占用、1k RAM 占用。

  • 任务/线程调度

  在RT-Thread中线程是最小的调度单位,线程调度算法是基于优先级的全抢占式多线程调度算法,支持256个线程优先级(也能通过配置文件更改为最大支持32个或8个线程优先级),0优先级代表最高优先级,255优先级留给空闲线程使用;支持创建相同优先级线程,相同优先级的线程采用可设置时间片的轮转调度算法;调度器寻找下一个最高优先级就绪线程的时间是恒定的(时间复杂度是1,即O(1))。系统不限制线程数量的多少,只和硬件平台的具体内存相关。

  • 任务同步机制

  系统支持semaphore(信号量)、mutex(互斥锁)作为线程间同步机制。mutex采用优先级继存方式以解决优先级翻转问题。semaphore的释放动作可安全用于中断服务例程中。同步机制支持线程按优先级等待或按先进先出方式获取信号量或互斥锁。

  • 任务间通信机制

  系统支持event(事件)、mbox(邮箱)和MessageQueue(消息队列)等通信机制。event支持多事件”或触发”及”与触发”,适合于线程等待多个事件情况。mbox中一封邮件的长度固定为4字节,效率较MessageQueue更为高效。通信设施中的发送动作可安全用于中断服务例程中。通信机制支持线程按优先级等待或按先进先出方式获取。

  • 时间管理

  系统使用时钟节拍来完成同优先级任务的时间片轮转调度;线程对内核对象的时间敏感性是通过系统定时器来实现的;定时器支持软定时器及硬定时器(软定时器的处理在系统线程的上下文中,硬定时器的处理在中断的上下文中);定时器支持一次性超时及周期性超时。

  • 内存管理

  系统支持静态内存池管理及动态内存堆管理。从静态内存池中获取内存块时间恒定,当内存池为空时,可把申请内存块的线程阻塞(或立刻返回,或等待一段时间后仍未获得内存块返回。这取决于内存块申请时设置的等待时间),当其他线程释内存块到内存池时,将把相应阻塞线程唤醒。动态堆内存管理对于不同的系统资源情况,提供了面向小内存系统的小内存管理算法及大内存系统的SLAB内存管理算法

  • 设备管理

  系统实现了按名称访问的设备管理子系统,可按照统一的API界面访问硬件设备。在设备驱动接口上,根据嵌入式系统的特点,对不同的设备可以挂接相应的事件,当设备事件触发时,通知给上层的应用程序。

其他文档信息参见:
RT-Thread 文档中心

RT-Thread这个系统还是有很多自己的想法在里面的,比如Finish,设备树等都是参照Linux的思想来设计的。

4. RTX

  Keil RTX是为ARM和Cortex-M设备设计的免版税,确定性的实时操作系统。它允许您创建同时执行多个功能的程序,并帮助创建更好的结构和更容易维护的应用程序。

特征

  • 具有源代码的免版权,确定性RTOS
  • 灵活的调度:循环,抢占和协作
  • 具有低中断延迟的高速实时操作
  • 为资源有限的系统提供小封装
  • 无限数量的任务每个具有254个优先级
  • 无限数量的邮箱,信号量,互斥量和计时器
  • 支持多线程和线程安全操作
  • 内核感知调试支持MDK-ARM
  • 使用μVision配置向导的基于对话框的设置

优点

  尽管无需实时操作系统(通过在超级循环中执行一个或多个功能)就可以创建实时程序,但KeilRTX为您解决的RTOS有许多调度,维护和计时问题。

注意事项
  所有MDK-ARM版本都包含RTX源代码。

这个系统我只是用过一次,感觉最大的特点就是用起来简单,不需要那么多的注意事项,拿来就用的感觉,还有就是没有关中断的操作,所以你懂的~


最后说一下我的感受吧,其实uCOS和FreeRTOS差不多(复杂度和功能),RT-Thread挺好用的,但是说实话我没有深入去研究过,感觉上手好用度一般,RTX这个东西太简单了,我有点不放心,不过据说效率上Very Good.

所以呢,其实我比较推荐FreeRTOS,其次是RT-Thread(次要推荐其实还是资料不多的原因,不过RT-Thread有一个丘丘群可以加一下,87088566,创始人就是群主),毕竟uCOS这玩意万一要真跟你谈谈版权的事,那估计就被牵着鼻子走了,尤其是自己创业的还是要注意的。

附上几篇我当时学习时用到的资料,感觉挺好的,分享给大家,其实大家要是愿意自己找,也都能在网上找到。

在这里插入图片描述
https://download.csdn.net/download/wangyijieonline/11021705

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[RTOS]uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点 的相关文章

  • 序列图教程-完整指南及示例

    Sequence Diagram Tutorial Complete Guide with Examples Creately
  • 什么是好的策略?

    好的策略是承认每个人都是自私的 xff0c 但是你的策略能够在人人都是自私的基础上获得全局利益的最大化 xff0c 如果你的全局利益最大化是建立在要求每个人都是大公无私的 xff0c 那就是失败的设计 xff0c 因为这必然会导致失败
  • 软件工程3.0

  • pod、container、sidecar

    pod是一个小家庭 xff0c 它把密不可分的家庭成员 container 聚在一起 xff0c Infra container则是家长 xff0c 掌管家中共通资源 xff0c 解决顺序和依赖关系 xff0c 家庭成员通过sidecar方
  • 4种SQL标准的事务隔离级别

    SQL标准的事务隔离级别包括 xff1a 读未提交 xff08 read uncommitted xff09 xff1a 一个事务还没提交时 xff0c 它做的变更就能被别的事务看到 读提交 xff08 read committed xff
  • 设计容器网络插件的初步思路

    同一个 Pod 里面的所有用户容器的进出流量 xff0c 可以认为都是通过 Infra 容器完成的 当为Kubernetes 开发一个网络插件时 xff0c 应该重点考虑的是如何配置这个 Pod 的 Network Namespace xf
  • 各种显示接口DBI、DPI、LTDC、DSI、FSMC

    各种显示接口DBI DPI LTDC DSI FSMC qq 23899395 2019 06 05 17 30 36 4810 收藏 36 版权 首先 xff0c MIPI xff08 Mobile Industry Processor
  • 在ubuntu 16.04安装ROS Kinetic

    ubuntu16 04 已经发布一个月了 xff0c ROS的Kinetic也已经发布 xff0c 需要了解ROS发行版及支持维护的时间等 xff0c 可以参考如下网页 xff1a http wiki ros org Distributio
  • ROS创建工作空间和功能包

    所有的ROS程序 xff0c 包括我们自己开发的程序 xff0c 都被组织成功能包 xff0c 而ROS的功能包被存放在称之为工作空间的目录下 因此 xff0c 在我们写程序之前 xff0c 第一步是创建一个工作空间以容纳我们的功能包 1
  • MPU-6000(6050)介绍

    MPU 6000 xff08 6050 xff09 简介 MPU 60X0是全球首例9 轴运动处理传感器 它集成了3 轴MEMS陀螺仪 xff0c 3 轴MEMS加速度计 xff0c 以及一个可扩展的数字运动处理器DMP xff08 Dig
  • lwip/uip移植之一

    最近一直想移植一个tcp ip协议栈到板子上 xff0c 于是想到了lwip和uip lwip是一个比较完整的协议栈 xff0c 功能强大 xff0c 结合ucos系统更是方便完美 xff0c 但是需要几十k的ram xff0c 这点在我f
  • Nvidia Xavier GPIO 输入输出 中断 PWM

    文章目录 前言Jetson GPIO安装可用引脚点亮LEDGPIO输出示例GPIO输入示例GPIO EventGPIO InterruptPWM微信公众号 前言 Nvidia Jetson AGX Xavier 硬件相关 这篇讲到Xavie
  • Jetson Xavier/XavierNX/TX2 CANFD 配置使用

    目录 TX2 Xavier NX Xavier CAN特性TX2 Xavier NX Xavier 载板引出位置CAN收发器NVIDIA CAN DriverXavier CAN 引脚配置Jetson CAN 设置设置开机运行查看连接状态C
  • Altium Designer使用Git构想

    今天看了dtysky的 体三维显示器 PCB部分 LED阵列 用脚本写的上万个LED的自动布局和自动布线 很震惊 很欣赏 很喜欢 或许有很多我们可以想象的空间 这篇主要写Git Git主要管理文本文件 二进制文件却不大合适 尽管有 使用 G
  • 如何拿到阿里offer的?面试流程及面试题

    一个偶然的开始 交待一下 非广告 xff0c 第一次用拉勾 xff0c 感觉做的挺好 xff0c 以前一直用51job 从7月分开始 xff0c 打算找工作 xff0c 一个偶然的机会 xff0c 拉勾上一个蚂蚁金服的同学找到我 xff0c
  • STM32和Linux(转载)

    Linux和stm32 一个是软件平台一个是硬件平台 xff0c 完全不一样的 xff08 记住 xff0c 是平台 xff01 xff09 这样说吧 xff0c 既然你喜欢单片机 xff0c 就先学stm32 xff0c 把硬件基础打牢
  • PX4飞控问题之参数重置问题

    PX4在上电的时候会出现参数重置的问题 xff0c 出现这个问题的机率很小 xff0c 可能上电几千甚至上万次才会出现一次重置的情况 xff0c 但一旦出现了参数重置 xff0c 飞机就无法飞行 xff0c 得重新校准传感器 要解决这个问题
  • STM32硬件基础--LTDC显示图像

    STM32硬件基础 LTDC显示图像 海东青电子 2019 11 13 23 40 05字数 2 635阅读 3 102 海东青电子原创文章 xff0c 转载请注明出处 xff1a https www jianshu com p 21638
  • PX4轨迹生成公式推导

    PX4轨迹生成公式推导下载链接 对于多旋翼 飞行任务的时候 通过地面站画出航点 上传给飞控 飞控通过轨迹生成算法生成平滑的目标位置 速度及加速度 给位置控制模块控制飞机的位置 速度及加速度 PX4轨迹生成的方法为 约束加加速度的S型速度曲线
  • 植保无人机航线规划

    最近折腾了植保无人机航线规划的算法 支持任意多边形 不包括自相交多边形 的边界及障碍区域 其中涉及到了多边形内缩外扩 多边形的分解 多边形交集 并集 差集 深度优先搜索 最短路径算法 耗时两个多月 用C 实现整套算法 生成的库在missio

随机推荐