freeRTOS
文章平均质量分 92
学习freertos
Eleven-boy
这个作者很懒,什么都没留下…
展开
-
FreeRTOS——支持时间片
所谓时间片就是同一个优先级任务下可以有多个任务,每个任务轮流的享有相同的CPU时间,享有CPU的时间我们叫做时间片。在RTOS中,最小的时间单位是一个tick,即 SysTick 的中断周期。对于FreeRTOS,时间片只能是一个tick。与其说FreeRTOS支持时间片,倒不如说他的时间片就是正常的任务调度。一、原理分析之 所 以 在 同 一 个 优 先 级 下 可 以 有 多 个 任 务 ...原创 2020-02-19 12:02:34 · 1502 阅读 · 0 评论 -
FreeRTOS——任务延时列表的实现
在学习本章之前,为了实现任务的阻塞延时,在任务控制块中内置了一个延时变量xTicksToDelay。当每次任务需要延时时,就初始化xTicksToDelay需要延时的时间,然后将任务挂起,这里所说的挂起只是将任务在优先级位图表uxTopReadyPriority中对应的位清零,并不会将任务从就绪列表中删除。当每次时基中断(SysTick中断)来临时,就扫描就绪列表中每个任务的xTicksToDel...原创 2020-02-19 12:02:19 · 869 阅读 · 0 评论 -
FreeRTOS——支持多优先级
在FreeRTOS中,数字优先级越小,逻辑优先级也越小。一、如何支持多优先级就绪列表 pxReadyTasksLists[ configMAX_PRIORITIES ]是一个数组,数组里面存储的是就绪任务的TCB(准确来说是TCB里面的xStateListItem节点),数组的下表对应任务的优先级,优先级越低对应数组的下标越小。空闲任务的优先级最低,对应的是下标为0的链表。下图展示了就绪列表中...原创 2020-02-17 11:27:16 · 1064 阅读 · 0 评论 -
FreeRTOS——空闲任务与阻塞延迟实现
在裸机运行中,我们是使用软件延时来实现延时的功能(delay()),即是让CPU空等来达到延时的目的。使用RTOS的很大优势就是榨干CPU性能,永远不让他闲着,任务需要延时也就不需要让CPU空等来实现延时的效果。RTOS中的延时叫做阻塞延时,即任务需要延时的时候,任务会放弃CPU的使用权,CPU可以去干其他的事情,当任务延时时间到,重新获取CPU使用权,任务继续运行。这样就可以充分利用CPU资源...原创 2020-02-15 09:53:01 · 2437 阅读 · 0 评论 -
FreeRTOS——临界段保护
一、什么是临界段临界段就是一段在执行的时候不能被打断的代码。在FreeRTOS中,临界段最常出现的就是对全局变量的操作。那么在什么情况下临界段可以被打断?一个是系统调度,另一个是外部中断。但是在FreeRTOS中,系统调度最终也是产生PendSV中断,在PendSV Handler里面实现任务的切换,所以还是归结为中断。因此,FreeRTOS对临界段的保护最终还是回到了对中断开、关的控制。二...原创 2020-02-14 13:53:49 · 846 阅读 · 0 评论 -
FreeRTOS——任务的定义与切换
本节属于操作系统中基础中的基础,包括任务的创建与切换。以两个任务为例,在多任务系统中,两个变量波形完全一样,就好像CPU在同时做两件事,这才是多任务的意义。一、什么是任务裸机系统中,系统的主体是main函数里顺序执行的无限循环,这个无限循环里面CPU按照顺序完成各种事情。在多任务系统中,我们可以根据功能的不同,把整个系统分割为一个个独立的且无法返回的函数,这个函数我们就称为任务。如下:vo...原创 2020-02-12 09:32:50 · 861 阅读 · 0 评论 -
FreeRTOS数据结构——列表与列表项
在FreeRTOS中存在着大量的基础数据结构列表和列表项的操作,要想读懂FreeRTOS的源代码,就必须弄懂列表和列表项的操作。一、C语言链表简介链表就好比一个圆形的晾衣架,晾衣架上有很多钩子,钩子首尾相连。链表也是,链表由节点组成,节点与节点之间首尾相连。晾衣架的钩子本身不能代表很多东西,但是钩子本身可以挂很多东西。同样,链表也类似,链表的节点本身不可能存储太多东西,但是节点跟晾衣架的钩子一...原创 2020-02-10 08:10:51 · 747 阅读 · 0 评论 -
新建FreeRTOS工程——软件仿真/裸机系统与多任务系统
一、新建FreeRTOS工程——软件仿真1、新建本地工程文件在开始新建工程之前,我们先在本地电脑端新建一个文件夹用于存放工程。文件夹名字我们取为“” FreeRTOS ”(名字可以随意取) ,然后再在该文件夹下面新建各个文件夹和文件:Doc:用于存放对整个工程的说明文件.readme.txt。Project:用于存放新建的工程文件。freertos:include:存放头文件por...原创 2020-02-08 17:03:50 · 1149 阅读 · 0 评论