FreeRTOS
文章平均质量分 86
FreeRTOS源码学习笔记
killer-p
欢迎指出博客中的错误,如果你觉得对你有用,记得点赞三连,有问题可留言,会及时回复
展开
-
FreeRTOS学习 信号量
信号量FreeRTOS 学习仓库:https://gitee.com/killerp/free-rtos_-study在深入理解了消息队列后,信号量也就很容易学习了。因为信号量就是使用消息队列实现的。信号量是特殊的消息队列,其只部分利用了队列结构体,信号量没有队列存储区域,所以信号量不能用来传递任务间的数据。但可以利用消息队列的其他特点如:对共享数据的保护,阻塞等待机制等,实现任务之间的同步,对共享数据的互斥访问。一、信号量的分类不同类型的信号量有各自的用途。二值信号量二值信号量只有 0原创 2022-01-22 09:16:34 · 1034 阅读 · 0 评论 -
FreeRTOS学习 消息队列
消息队列FreeRTOS学习仓库地址:https://gitee.com/killerp/free-rtos_-study消息队列是RTOS的基础数据结构,用于任务之间、任务与中断之间进行数据传递。没有使用消息队列时,若想要在两个任务之间进行数据传递,那么必须通过全局变量来传递,而在多任务系统中,访问全局变量往往需要用户对资源进行保护,这样就使得编程变得麻烦。消息队列封装了对共享数据的访问保护,同时还加入了阻塞等待机制。使用户编程时不用去考虑复杂的并发访问。一、队列的结构消息队列结构体的定义原创 2022-01-22 09:10:18 · 1127 阅读 · 0 评论 -
FreeRTOS学习 任务调度
任务调度任务调度实现在多个任务之间轮流使用CPU,他的主要工作分为三个阶段:保存当前任务上下文到任务栈选择新任务恢复新任务的上下文这三个步骤需要在中断服务函数中执行,所以要求执行的速度要快,所以任务选择策略需要满足快的要求,同时使用汇编代码编写。 任务调度器的具体实现与硬件架构相关,所以需要具备一定的CPU知识。本文以Cortex-M3架构为例。一、任务运行环境任务运行环境、也就是任务上下文,当我们说任务获得CPU时,究竟发生了什么?CPU运行时,是通过不断的读取指令、数据到CPU的寄存原创 2021-10-10 19:25:03 · 1261 阅读 · 0 评论 -
FreeRTOS学习 任务管理(二)
任务管理(二)多任务系统在同一时刻中,只有一个任务占有CPU的使用权。一个任务长期占有CPU会影响对系统的效应能力,故任务需要在空闲的时候,通过延时/挂起来让出CPU的使用权给其他任务,这样任务调度器才能调度其他任务运行。一、任务延时 vTaskDelay任务延时就是当前任务将CPU让出一定时间,将任务插入延时链表中,等到延时时间到达才将任务恢复到就绪状态,等待调度运行。其实质就是将任务移动到延时链表/挂起链表。注意进入延时函数时,会挂起调度器,这是为了防止在插入就绪链表过程中,由于中断产生打乱了原创 2021-10-08 22:46:48 · 464 阅读 · 0 评论 -
FreeRTOS学习 任务管理(一)
任务管理(一)freertos学习 仓库地址:https://gitee.com/killerp/free-rtos_-studyfreertos是一个实时操作系统,其相比裸机最大的特点就是支持多任务。学习rtos,核心就是学习任务相关知识及其实现。多任务是指多个任务轮流使用CPU,每个任务是一个死循环的函数,“调度器”会合理安排这些任务去得到CPU的使用。因此任务就有了状态的区分,正在使用CPU的任务处于运行态,等待CPU的任务处于就绪态,而等待某一资源的任务处于阻塞态。最后还有处于挂起态的任务,他原创 2021-10-08 16:30:19 · 406 阅读 · 2 评论