1.什么是FreeRTOS
????????RTOS从名字上可以分为free和RTOS两部分。free是免费的意思,RTOS全称是Real Time Operation System,译为实时操作系统。那FreeRTOS的意思就是“免费的实时操作系统”。RTOS不是指某一个特定的系统,而是一类系统。比如uC/OS,FreeRTOS,RTX,RT-Thread等都属于RTOS类操作系统。
????????操作系统允许多个任务同时运行,这个叫做多任务,实际上,一个处理器核心在某一时刻只能运行一个任务。操作系统中任务调度器的责任就是决定在某一时刻究竟运行哪个任务,任务调度在各个任务之间的切换非常快!这就给人们造成了同一时刻有多个任务同时运行的错觉。
????????操作系统的分类方式可以由任务调度器的工作方式决定,比如有的操作系统给每个任务分配相同的运行时间,时间到了就轮到下一个任务,Unix操作系统就是这样。RTOS的任务调度器被设计为可预测的,而这正是嵌入式实时操作系统所需要的,实时环境中要求操作系统必须对一个事件作出实时的响应,因此系统任务调度器的行为必须是可预测的。向FreeRTOS这种传统的RTOS类操作系统是由用户给每个任务分配一个任务优先级,任务调度器就可以根据此优先级来决定下一刻应该运行哪个任务。
????????FreeRTOS相比uC/OS要小的多,可以在资源有限的微控制器上运行。
2.FreeRTOS特点
- FreeRTOS的内核支持抢占式,合作式和时间片调度
- 提供了一个用于低功耗的Tickless模式
- 系统的组件在创建时可以选择动态或静态的RAM,比如任务、消息队列、信号量、软件定时器等等。
- 已经在超过30种架构的芯片上进行了移植
- FreeRTOS系统简单、小巧、易用、通常情况下内核占用4K-9K字节的空间
- 高可移植性,代码主要C语言编写
- 支持实时任务和协程(协程是为资源很少的MCU准备的,开销很小。但是官方已经不再更新协程了)
- 任务与任务、任务与中断之间可以使用任务通知、消息队列、二值信号量、数值型信号量、递归互斥信号量和互斥信号量进行通信和同步
- 支持事件组(或事件标志组)
- 具有优先级继承特性的互斥信号量
- 高效的软件定时器
- 堆栈溢出检测功能
- 任务数量不限
- 任务优先级不限
文档参考《正点原子FreeRTOS开发手册》
|