FREERTOS之系统移植

2009-5-13
首先声明,这篇文章忘了是从什么地方抓过来的前人的总结,如果原作看到的话,可以给我留个地址,我再加上,不好意思
          FreeRTOS 作为开源的轻量级实时性操作系统,不仅实现了基本的实时调度、信号量、队列和存储管理。 FreeRTOS 的实现主要由 list.c queue.c croutine.c tasks.c 4 个文件组成。 list.c 是一个链表的实现,主要供给内核调度器使用; queue.c 是一个队列的实现,支持中断环境和信号量控制; croutine.c task.c 是两种任务的组织实现。对于 croutine ,各任务共享同一个堆栈,使 RAM 的需求进一步缩小,但也正因如此,他的使用受到相对严格的限制。而 task 则是传统的实现,各任务使用各自的堆栈,支持完全的抢占式调度。 FreeRTOS 内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级, CPU 总是让处于就绪态的、 优先级最高的任务先运行。 FreeRT0S 内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享 CPU 的使用时间 freertos 既可以配置为可抢占内核也可以配置为不可抢占内核。当 FreeRTOS 被设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的 CPU 使用权,这样可保证系统满足实时性的要求;当 FreeRTOS 被设置为不可剥夺型内核时,处于就绪态的高优先级任务只有等当前运行任务主动释放 CPU 的使用权后才能获得运行,这 样可提高 CPU 的运行效率。
FreeRTOS 的主要功能可以归结为以下几点:
1) 
优先级调度、相同优先级任务的轮转调度,同时可设成可剥夺内核或不可剥夺内核
2) 
任务可选择是否共享堆栈 (co-routines & tasks) ,并且没有任务数限制
3) 
消息队列,二值信号量,计数信号量,递归互斥体
4) 
时间管理
5) 
内存管理
          UC/OSII 一样, FreeRTOS STM32 的移植大致由 3 个文件实现,一个 .h 文件定义编译器相关的数据类型和中断处理的宏定义;一个 .c 文件实现任务的堆栈初始化、系统心跳的管理和任务切换的请求;一个 .s 文件实现具体的任务切换。

你可能感兴趣的:(职场,休闲,freertos)