分类: 嵌入式
2014-09-27 15:01:22
开源的免费的小型实时内核,支持的处理器内核:ARM7,ARM9,CortexM3,ATMEL AVR32,AVR,MSP430等
功能介绍:
FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。
FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。
任务可以选择是否共享堆栈,并且任务没有数量限制。
消息队列,二值信号量,计数信号量。
时间管理
内存管理
FreeRTOS的内核可根据用户需要设置为可剥夺型内核或不可剥夺型内核。当FreeRTOS被设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的CPU使用权,这样可保证系统满足实时性的要求;当FreeRTOS被设置为不可剥夺型内核时,处于就绪态的高优先级任务只有等当前运行任务主动释放CPU的使用权后才能获得运行,这样可提高CPU的运行效率。
嵌入式系统基本概念:多任务,调度,上下文切换,实时应用和调度。
FreeRTOS与UCOS比较:
1:与ucosii不同,它是free的,ucosii不是free的,虽然它的代码是公开的。
2:它支持同优先级任务时间片调度,轮换调度算法,UCOS不允许任务使用相同优先级。
3:任务数目FREERTOS没有限制,UCOS有限制,一般64个。
4:freertos既可以配置为可抢占内核也可以配置为不可抢占内核。 UCOS是可抢占。
5:内核ROM和耗费RAM都比uCOS 小,特别是RAM。 这在单片机里面是稀缺资源,uCOS至少要5K以上,而freeOS用2~3K也可以跑的很好。
6:freeRTOS 可以用协程(Co-routine),减少RAM消耗(共用STACK)。uCOS只能用任务(TASK,每个任务有一个独立的STACK)。
7:比uSOS简单,任务间通讯freeRTOS只支持Queque, Semaphores, Mutex。 uCOS除这些外,还支持Flag, MailBox.
8:uCOS可靠性更高,而且耐优化,freeRTOS 在我设置成中等优化的时候,就会出问题。
9:
freertos的任务挂起与ucosii也不大一样。它把 所有挂起的任务加到xSuspendedTaskList中,而且一旦调用vTaskSuspend()函数挂起一个任务,该任务就将从所有它原先连入的链表中删除(包括就绪表,延时表和它等待的事件链表),也就是说,和 ucosii不同,一旦一个任务被挂起,它将取消先前它的延 时和对事件的等待。ucosii中是不同的,在ucosii里 面一个任务被挂起仅仅是把任务的状态或上一个OS_STAT_SUSPEND并从就绪表中删除,如果先前这个任务正在等待某事件,则并不取消等待。