当前位置:主页 > 技术文档 > FreeRTOS 下载

FreeRTOS操作系统中文入门手册 清晰版

  • 更新:2020-10-11 09:32:26
  • 大小:3.4 MB
  • 热度:795
  • 审核:彭德佑
  • 类别:技术文章
  • 格式:PDF

  • 资源介绍
  • 相关推荐

FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。

由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为10.3.1版。

FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。

任务调度机制是嵌入式实时操作系统的一个重要概念,也是其核心技术。对于可剥夺型内核,优先级高的任务一旦就绪就能剥夺优先级较低任务的CPU使用权,提高了系统的实时响应能力。不同于μC/OS-II,FreeRTOS对系统任务的数量没有限制,既支持优先级调度算法也支持轮换调度算法,因此FreeRTOS采用双向链表而不是采用查任务就绪表的方法来进行任务调度。

系统定义的链表和链表节点数据结构如下所示:

//定义链表结构
typedef struct xLIST{
    unsigned portSHORPT usNumberOfItems;    //usNumberOfItems为链表的长度,为0表示链表为空
    volatile xListItem *pxHead;    //pxHead为链表的头指针
    volatile xListItem *pxIndex;    //pxIndex指向链表当前结点的指针
    volatile xListItem xListEnd;    //xListEnd为链表尾结点
}xList;
 
//定义链表结点的结构
struct xLIST_ITEM{
    port Tick type;    //port Type为时针节拍数据类型
    xItem Value;    //xItem Value的值用于实现时间管理,可根据需要选择为16位或32位
    volatile struct xLIST_ITEM *pxNext;    //指向链表的前一个结点
    void *pvOwner;    //指向此链表结点所在的任务控制块
    void *pvContainer;    //指向此链表结点所在的链表
};

 

资源下载

资源下载地址1:https://pan.baidu.com/s/16UnZ9fQ0AmGyn3agh3L1sQ

相关资源

网友留言

freertos手册
芮季同

什么情况下可以用 FreeRTOS ?

单片机也要用操作系统?如果以日常用的Windows, Linux, BSD这些,甚至是DOS,来代表操作系统的话,在单片机上运行操作系统时候个很荒诞的想法——因为对大多数单片机,RAM实在太少了。而 FreeRTOS 并不是要提供一个在单片机上运行软件的平台,把软件一个个安装到它上面,供用户选择运行什么,它没有用户界面;它不是一个管家,也不带任何硬件驱动程序,也没有文件系统服务提供。FreeRTOS只是一个操作系统内核,它首先提供了操作系统最重要的特性:任务调度。

也就是说,有了FreeRTOS,在单片机上实现多任务会容易一些。这里至少有两层含义,一是多任务是否一定要用RTOS才可以实现? 当然不是。对于单片机开发来讲,所有系统资源都是你的,在不同中断服务里面处理不同的任务并不是很困难的事情。第二,是否没有多任务就完全用不着RTOS? 这也得看具体情况,如何界定“任务”的概念了,一件复杂的事情在程序中也有可能划分为几个任务来处理。

开源的免费的小型实时内核,支持的处理器内核: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并从就绪表中删除,如果先前这个任务正在等待某事件,则并不取消等待。

freertos中文实用教程
劳德宇

FreeRTOS是一个迷你操作系统内核的小型嵌入式系统。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。

功能和特点

混合配置选项

提供一个高层次的信任代码的完整性

目的是小,简单易用

以开发C,非常便携代码结构

支持两项任务和共同例程

强大的执行跟踪功能

堆栈溢出检测

没有软件任务的限制数量

没有软件优先事项的限制数量

没有施加的限制,优先转让,多个任务可以分配相同的优先权

队列,二进制信号量,计数信号灯和递归通信和同步的任务

Mutexes优先继承权

免费开发工具

免费嵌入式软件的源代码

从一个标准的Windows主机交叉发展