首页 > 嵌入式基础教程 > 设计教程

1 FreeRTOS操作系统功能

  作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。

  FreeRTOS的内核可根据用户需要设置为可剥夺型内核或不可剥夺型内核。当FreeRTOS被设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的CPU使用权,这样可保证系统满足实时性的要求;当FreeRTOS被设置为不可剥夺型内核时,处于就绪态的高优先级任务只有等当前运行任务主动释放CPU的使用权后才能获得运行,这样可提高CPU的运行效率。

  2 FreeRTOS操作系统的原理与实现

  2. 1任务调度机制的实现

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

  


 

  FreeRTOS定义就绪任务链表数组为xList pxReady—TasksLists[portMAX_PRIORITIES]。其中portMAX_PRIORITIES为系统定义的最大优先级。若想使优先级为n的任务进入就绪态,需要把此任务对应的TCB中的结点xGenericListltem插入到链表pxReadyTasksLiStS[n]中,还要把xGenericListItem中的pvContainer指向pxReadyTasksLists[n]方可实现。

  当进行任务调度时,调度算法首先实现优先级调度。系统按照优先级从高到低的顺序从就绪任务链表数组中寻找usNumberOfItems第一个不为0的优先级,此优先级即为当前最高就绪优先级,据此实现优先级调度。若此优先级下只有一个就绪任务,则此就绪任务进入运行态;若此优先级下有多个就绪任务,则需采用轮换调度算法实现多任务轮流执行。

  若在优先级n下执行轮换调度算法,系统先通过执行(pxReadyTasksLists[n])→pxIndex=( pxReadyTasks-Lists[n ]) → pxlndex→pxNext语句得到当前结点所指向的下一个结点,再通过此结点的pvOwner指针得到对应的任务控制块,最后使此任务控制块对应的任务进入运行态。由此可见,在FreeRTOS中,相同优先级任务之间的切换时间为一个时钟节拍周期。

  以图1为例,设系统的最大任务数为pottMAX_PRIORITIES,在某一时刻进行任务调度时,得到pxReadyTasksLists[ i].usNumberOfItems=O(i=2...portMAX_PRIORITIES)以及pxReadyTasksLists。usNumberOfItems=3。由此内核可知当前最高就绪优先级为l,且此优先级下已有三个任务已进入就绪态.由于最高就绪优先级下有多个就绪任务,系统需执行轮换调度算法实现任务切换;通过指针pxlndex可知任务l为当前任务,而任务l的pxNext结点指向任务2,因此系统把pxIndex指向任务2并执行任务2来实现任务调度。当下一个时钟节拍到来时,若最高就绪优先级仍为1,由图可见,系统会把pxIndex指向任务3并执行任务3。

  

换一批

延伸阅读

[真心话] 明年内存铁定要降价!中国三大存储公司将量产内存、闪存

明年内存铁定要降价!中国三大存储公司将量产内存、闪存

对于关注国产内存、闪存的用户来说,从明年开始将会有实质性的成果,因为长江存储、晋华集成电路以及合肥Innotro存储都将量产。据台湾电子时报报道称,2019年,中国大陆地区将有三家存储芯片厂竣工并投入量产。目前,......

关键字:内存 存储

[真心话] 软件开源活动领航人Eric Raymond:C语言时代行将落幕

软件开源活动领航人Eric Raymond:C语言时代行将落幕

这几天来,我(Eric Raymond)在思考那些正在挑战C语言的系统编程语言领袖地位的新潮语言,尤其是Go和Rust。思考的过程中,我意识到了一个让我震惊的事实——我有着35年的C语言经验。每周我都要写很多C代码,但是我已经记不清楚上一次......

关键字:Eric Raymond C语言

[新鲜事] 世界卫生组织将“游戏成瘾”列入精神疾病,任天堂索尼激烈反对...

世界卫生组织将“游戏成瘾”列入精神疾病,任天堂索尼激烈反对...

北京时间6月20日早间消息,美国娱乐软件协会(ESA)就世界卫生组织将“游戏成瘾”列入精神疾病的做法提出激烈批评,认为他们列举的证据不够充分,而且可能引发误诊。ESA呼吁世界卫生组织在将游戏成瘾正式列入......

关键字:游戏 任天堂 索尼

[真心话] 工程师中大热的的“技术型复合人才”究竟是什么?

工程师中大热的的“技术型复合人才”究竟是什么?

经过半年的工作和学习,突然想到以前在哪里听说,技术型复合人才比较抢手。单从技术角度看,我认为在任何科技领域,除了能够出色完成自己手中的工作外,还能帮助两个、多个研发人员甚至整个团队解决从理论、方案到工程实现中所面临各种难题,这样的人才应该能......

关键字:工程师
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14