嵌入式开发交流网论坛

标题: uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点 [打印本页]

作者: 丁烨是个大好人    时间: 2018-7-8 16:28
标题: uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点
(以下内容来自网络,仅供讨论交流之用,版权归作者@坚强的山猫所有)

1. FreeRTOS

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



2. uCOS家族(I/II/III)μC/ OS-II和μC/ OS-III是抢占式,高度便携式和可扩展的实时内核。这些内核旨在便于在大量CPU架构上使用,这些内核是μC/ OS实时操作系统的关键组件。
关键价值(Key Values):
μC/ OS内核的特性包括以下亮点(Highlights):
下表显示了C/OS 多年来的演变, 比较了每个版本中可用的功能。
特点(Features)
C/OS
C/OSII
C/OSIII
发布年份
1992
1998
2009
提供源代码



书(Book)



抢占式多任务



最大任务量
64
255
无限
每个优先级别的任务数
1
1
无限
时间片轮转调度
×
×

信号量



互斥信号量
×

√(可嵌套)
事件标志组
×


消息邮箱


×(不需要)
消息队列



固定大小的内存管理
×


直接向任务发送信号量
×
×

无需调度的信号发送选项
×
×

直接向任务发送消息
×
×

软件定时器
×


任务挂起/恢复
×

√(可嵌套)
防止死锁



可裁剪



代码量
3K-8K
6K-26K
6K-24K
数据量
1K+
1K+
1K+
代码可固化



运行时可配置
×
×

编译时可配置



支持内核对象的 ASCII 命名
×


同时等待多个内核对象
×


任务寄存器
×


内置性能测试
×
基本
增强
内置追踪点
×
×

用户可定义的钩子函数
×


POST 操作可加时间戳
×
×

内核察觉式调试
×


用汇编语言优化的调度器
×
×

捕获退出的任务
×
×

任务级时钟节拍处理
×


系统服务函数的数目
~20
~90
~75



3. RT-ThreadTips:在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这个系统还是有很多自己的想法在里面的,比如Finish,设备树等都是参照Linux的思想来设计的。






4. RTX
Keil RTX是为ARM和Cortex-M设备设计的免版税,确定性的实时操作系统。它允许您创建同时执行多个功能的程序,并帮助创建更好的结构和更容易维护的应用程序。
特征
优点
尽管无需实时操作系统(通过在超级循环中执行一个或多个功能)就可以创建实时程序,但KeilRTX为您解决的RTOS有许多调度,维护和计时问题。
注意事项
所有MDK-ARM版本都包含RTX源代码。

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




在这块杰杰简单总结一下:为什么我会发这篇文章,是因为有人问总是私信问我学什么操作系统,其实,我想说学什么都是差不多的,基本上是一通百通的,选择自己的操作系统就好了,现在阶段,实时操作系统的资料已经很完善了。不必纠结学什么操作系统。
我当时选择学的是FreeRTOS,因为是国外开源的,并且是免费的,商业用也是免费的,使用,假如你的产品很多,那你就用这个吧。但是缺点也是很明显,没有一些组件跟外设框架。
ucos系列,他不仅仅只是实时内核,还有很多与之配套的组件,当然,需要版权费,假如你装机的产品很多,那就别用了,能省下一笔钱给我们这种苦逼的程序员发工资好了。
RT-Thread,是中国自主研发的物联网操作系统。同时是免费的,而且还有很多应用组件和驱动框架,如TCP/IP协议栈,虚拟文件系统等,基于爱国的角度,我更希望国产的东西能自信走出国门,我会FreeRTOS,看RT-Thread的源码还是能看懂一些的,初步感觉入门不难。只不过是当时学FreeRTOS的时候还不知道有RT-Thread。
RTX只听过,没有了解过,不做评论,说了那么多,我觉得还是免费的好。还有就是FreeRTOS是很简单的,我也很喜欢,同时也希望中国越来越强大。硬件(芯片)上输了,别在软件上也输了!!!!



[attach]4033[/attach]

起飞吧rtt



配图来自美女小编CK





欢迎光临 嵌入式开发交流网论坛 (http://www.dianzixuexi.com/bbs/) Powered by Discuz! X3.2