- 15
- 0
- 约9.88千字
- 约 6页
- 2021-11-20 发布于福建
- 举报
嵌入式操作系统 FreeRTOS 的原理与实现
在嵌入式领域中, 嵌入式实时操作系统正得到越来越广泛的应用。 采用嵌入式实时操作系统
(RTOS)可以更合理、 更有效地利用 CPU 的资源, 简化应用软件的设计, 缩短系统开发时间,
更好地保证系统的实时性和可靠性。 由于 RTOS 需占用一定的系统资源 (尤其是 RAM 资源 ),
只有 μC /OS-II 、embOS、Salvo 、FreeRTOS 等少数实时操作系统能在小 RAM 单片机上运
行。相对于 μC /OS-II 、embOS 等商业操作系统, FreeRTOS 操作系统是完全免费的操作系
统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机
上运行。
1.FreeRTOS 操作系统功能
作为一个轻量级的操作系统, FreeRTOS 提供的功能包括: 任务管理 、时间管理 、信号量 、
消息队列 、 内存管理 、记录功能 等,可基本满足较小系统的需要。
FreeRTOS 内核支持优先级调度算法, 每个任务可根据重要程度的不同被赋予一定的优先级,
CPU 总是让处于就绪态的、优先级最高的任务先运行。
FreeRTOS 内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更
高优先级任务就绪的情况下,同一优先级的任务共享 CPU 的使用时间。
FreeRTOS 的内核可根据用户需要设置为可剥夺型内核或不可剥夺型内核。当 FreeRTOS 被
设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的 CPU 使用权,
这样可保证系统满足实时性的要求;当 FreeRTOS 被设置为不可剥夺型内核时,处于就绪态
的高优先级任务只有等当前运行任务主动释放 CPU 的使用权后才能获得运行,这样可提高
CPU 的运行效率。
2.FreeRTOS 操作系统的原理与实现
2. 1 任务调度机制的实现
任务调度机制是嵌入式实时操作系统的一个重要概念, 也是其核心技术。 对于可剥夺型内核,
优先级高的任务一旦就绪就能剥夺优先级较低任务的 CPU 使用权,提高了系统的实时响应
能力。不同于 μC /OS-II ,FreeRTOS 对系统任务的数量没有限制,既支持优先级调度算法
也支持轮换调度算法, 因此 FreeRTOS 采用双向链表而不是采用查任务就绪表的方法来进行
任务调度。系统定义的链表和链表节点数据结构如下所示:
typedef struct xLIST{ // 定义链表结构
volatile unsigned portBASE_TYPE uxNumberOfItems; //uxNumberOfItems 为链表的长度,
//为 0 表示链表为空
volatile xListItem * pxIndex; //pxIndex 指向链表当前结点的指针
volatile xMiniListItem xListEnd; //xListEnd 为链表尾结点
} xList ;
struct xLIST_ITEM { // 定义链表结点的结构
portTicktype xItemValue; //xItemValue 的值用于实现时间管理
//portTickType 为时针节拍数据类型,
//可根据需要选择为 16 位或 32
原创力文档

文档评论(0)