电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

FreeRTOS进程管理

FreeRTOS进程管理_第1页
1/33
FreeRTOS进程管理_第2页
2/33
FreeRTOS进程管理_第3页
3/33
freertos 是一个轻量级的rtos,它目前实现了一个微内核,并且port 到arm7, avr, pic18, coldfire等众多处理器上;目前已经在rtos 的市场上占有不少的份额。它当然不是一个与vxworks之类的rtos 竞争的操作系统,它的目标在 于低性能小RAM 的处理器上。整个系统只有3个文件,外加上port 的和处理器相关的两个文件,实现是很简洁的。 与ucosii 不同,它是free 的,ucosii 不是free 的,虽然它的代码是公开的。FreeRTOS 提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理。FreeRTOS 内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU 总是让处于就绪态的、 优先级最高的任务先运行。FreeRT0S 内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先 级的任务共享 CPU 的使用时间。这一点是和ucosii 不同的。 另外一点不同是freertos 既可以配置为可抢占内核也可以配置为不可抢占内核。当FreeRTOS被设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的CPU 使用权,这样可保证系统 满足实时性的要求;当FreeRTOS 被设置为不可剥夺型内核时,处于就绪态的高优先级任务只有等当前运行任务主动释放 CPU 的使用权后才能获得运行,这 样可提高 CPU 的运行效率。 这篇文章是以 freertos v5.0 版本的代码为例子分析下它的任务管理方面的实现。时间关系可能没有太多时间写的很详细了。 1.链表管理 freertos 里面的任务管理,queue,semaphore 管理等都借助于双向链表,它定义了个通用的数据结构 struct xLIST_ITEM { portTickType xItemValue; //链表节点的数据项,通常用在任务延时,表示 //一个任务延时的节拍数 volatile struct xLIST_ITEM * pxNext; //通过这两个成员变量将所有节点 volatile struct xLIST_ITEM * pxPrevious;//链接成双向链表 void * pvOwner; //指向该 item 的所有者,通常是任务控制块 void * pvContainer; //指向此链表结点所在的链表 }; 这个数据结构定义了一个通用的链表节点;下面的数据结构定义了一个双向链表 typedef struct xLIST { volatile unsigned portBASE_TYPE uxNumberOfItems;//表示该链表中节点的数目 volatile xListItem * pxIndex;//用于遍历链表,指向上次访问的节点 volatile xMiniListItem xListEnd;//...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

FreeRTOS进程管理

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部