文档库 最新最全的文档下载
当前位置:文档库 › 三种实时操作系统rtthread、freertos、μc-os

三种实时操作系统rtthread、freertos、μc-os

三种实时操作系统rtthread、freertos、μc-os
三种实时操作系统rtthread、freertos、μc-os

1. FreeRTOS

特点:免费嵌入式软件源代码,设计小巧,简单易用,有许多支持架构的免费开发工具,可移植性非常好的源代码结构,主要用C.

任务调度:

对任务优先级分配没有限制 - 可以为多个实时任务分配相同的优先级,0优先级为最低的优先级。

固定优先级抢占式,调度器保证总是在所有可运行的任务中训责具有最高优先级的任务;被选中的任务具有不止一个任务,调度器会让这些任务轮流运行。对可创建的实时任务数量没有软件限制。

对于优先级反转,采用优先级继承机制。

支持实时任务和协同程序。

任务运行要在主函数中启动调度器,任务在主函数或其他任务中声明

拥有心跳中断钩子函数

允许调度器的关闭与开启、中断的开关

通讯机制:

队列、二进制信号量、计数信号量、递归信号量和互斥体,用于任务之间的通信和同步,或实时任务和中断之间(没有邮箱机制)

创新事件组(或事件标志)实施。

具有优先级继承的互斥体。

信号量和队列没有控制块,使用前要在主函数中定义

中断服务程序要在主函数中声明,如:

声明:_dos_setvect(0x82,vExampleInterruptHandler)

而在任务中要用_asm{int 0x82}进入中断。

2.UC/0S

特点:μC/OS-II是一种完整的、可移植的、可固化的、可剪裁的占先式实时多任务内核,绝大多数代码用c语言编写,与微处理器密切相关的部分用汇编语言编写,不过开源收费

任务调度:

对任务优先级分配有限制 - 一个优先级只能有一个任务,通常最低的两个优先级被赋给空闲任务和统计任务,0优先级为最高的优先级。

固定优先级抢占式,调度器保证总是在所有可运行的任务中训责具有最高优先级的任务;不支持时间片轮询机制。

因为优先级不能相同,所以不支持优先级继承机制,UC/0S在互斥信号量中引用了优先级提升的方法。

任务运行不需要在主函数中启动调度器,任务在主函数或其他任务中创建允许调度器的关闭与开启、中断的开关

通讯机制:

二进制信号量、计数信号量、消息邮箱、消息队列、事件标志组用于任务之间的通信和同步,或实时任务和中断之间

3.RT-Thread

特点:RT-Thread是一款来自中国的开源嵌入式实时操作系统,除了类似FreeRTOS和UCOS的实时操作系统内核外,也包括一系列应用组件和驱动框架,遵循GPLv2+许可证,实时操作系统内核及所有开源组件可以免费在商业产品中使用,不需要公布应用源码,没有任何潜在商业风险。 RT-Thread实时操作系统核心是一个高效的硬实时核心,它具备非常优异的实时性、稳定性、可剪裁性,任务调度:

对任务优先级分配没有限制 - 可以为多个实时任务分配相同的优先级,0优先级为最高的优先级。一共有256/32/8个优先级,拥有优先级就绪队列,如果有32个优先级,那么会有一个包含32个队列的数组。每个任务控制块中都包含了一个定时器:被用于当任务需要执行一些待时间特性的系统调用。

固定优先级抢占式,调度器保证总是在所有可运行的任务中训责具有最高优先级的任务;相同优先级的任务采用时间片轮转制度,任务总数不受限。

线程(任务)、定时器、信号量、事件、邮箱、消息队列都有各自的控制块,都有它们各自的建立、删除(动态)、初始化、脱离(静态)函数,对于优先级反转,采用优先级继承机制。

允许调度器的关闭与开启、中断的开关

任务的状态:初始状态,阻塞状态、就绪状态、运行状态、结束状态、

主函数中,每个任务都要通过start函数启动,任务被建立后处于初始状态、start后进入就绪状态、如果任务被删除后为结束状态、任务并不是真正的被删除,真正的删除在空闲任务中。

定时器,定时器对应一个定时器超时函数,定时器的创建类似创建任务,定时器要用对应的start函数开启,

内核中采用了基于位图的优先级算法

通讯机制:

二进制信号量、计数信号量、消息邮箱、消息队列、事件标志组用于任务之间的通信和同步,或实时任务和中断之间

特点(Features)μC/OS FreeRTOS RTthread

是否免费×√√

提供源代码√√√

抢占式多任务√√√

最大任务量64 无限无限

每个优先级别的任务数 1 无限无限

时间片轮转调度×√√

信号量√√√

互斥信号量√√√

事件标志组√√√

消息邮箱√×√

消息队列√√√

特点(Features)μC/OS FreeRTOS RTthread 可裁剪√√√

优先级继承制度×√√

相关文档