FreeRTOS 作为开源的轻量级实时性操作系统,不仅实现了基本的实时调度、信号量、队列和存储管理,而
且在商业应用上不需要授权费。
FreeRTOS 的实现主要由 list.c、queue.c、croutine.c 和 tasks.c 4 个文件组成。list.c 是一个链表的实现,主要
供给内核调度器使用;queue.c 是一个队列的实现,支持中断环境和信号量控制;croutine.c 和 task.c 是两种任务
的组织实现。对于 croutine,各任务共享同一个堆栈,使 RAM 的需求进一步缩小,但也正因如此,他的使用受
到相对严格的限制。而 task 则是传统的实现,各任务使用各自的堆栈,支持完全的抢占式调度。
FreeRTOS 的主要功能可以归结为以下几点:
1) 优先级调度、相同优先级任务的轮转调度,同时可设成可剥夺内核或不可剥夺内核
2) 任务可选择是否共享堆栈(co-routines & tasks),并且没有任务数限制
3) 消息队列,二值信号量,计数信号量,递归互斥体
4) 时间管理
5) 内存管理
与 UC/OSII 一样,FreeRTOS 在 STM32 的移植大致由 3 个文件实现,一个.h 文件定义编译器相关的数据类型
和中断处理的宏定义;一个.c 文件实现任务的堆栈初始化、系统心跳的管理和任务切换的请求;一个.s 文件实
现具体的任务切换。
1