![](https://img-blog.csdnimg.cn/d7f220e6bbe046f9b0b0e7292d9bdc6a.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
FreeRTOS
文章平均质量分 94
深入理解FreeRTOS
吾爱技术圈
这个作者很懒,什么都没留下…
展开
-
FreeRTOS 查找最高优先级的就绪任务源码分析
就绪列表是一个数组, 数组里面存的是就绪任务的 TCB(准确来说是 TCB 里面的 xStateListItem 节点) ,数组的下标对应任务的优先级,优先级越低对应的数组下标越小(即数字优先级越小,逻辑优先级也越小)。空闲任务的优先级最低,对应的是下标为 0 的链表。configMAX_PRIORITIES 该宏定义在FreeRTOSConfig.h中,代表支持的最大优先级。我们看到configMAX_PRIORITIES 即为就绪任务列表的数组元素个数。原创 2023-08-24 17:31:35 · 528 阅读 · 0 评论 -
FreeRTOS的内存管理方案
heap_1.c1)适用于项目不需要删除任务、信号量、消息队列等已经创建的资源。2)所申请的动态内存的时间是固定的,并且不会产生内存碎片。3)是一种静态内存分配方案,因为申请的内存是不会被释放掉。heap_2.c1)在不考虑内存碎片的情况下,这种方式支持重复的任务、信号量、事件标志组、软件定时器等内部资源的创建和删除。因为不使用的资源是支持释放的,所以可以让内存资源得到反复的使用!2)如果申请和释放的动态内存大小是随机的,不建议采用这种动态内存管理方式。转载 2023-04-14 15:53:12 · 502 阅读 · 0 评论 -
FreeRTOS任务切换过程深层解析
为了解决这种问题,早期的 OS 在上下文切换的时候,检查是否有中断需要响应,没有的话,采取切换上下文,然而这种方法的问题在于,可能会将任务切换的动作拖延很久(如果此次的 SYSTICK 无法切换上下文,那么要等到下一次 SYSTICK 再来切换),严重的情况下,如果某 IRQ 来的频率和 SYSTICK 来的频率比较接近的时候,会导致上下文切换迟迟得不到进行;可以看出,是一致的。C语言表达是*(–R0)={R4-R11},R0中值先自减1,然后将R4-R11的值保存到该值所指向的地址中,即PSP中。原创 2022-12-09 17:19:13 · 4779 阅读 · 2 评论 -
FreeRTOS内核详解(1) —— 临界段保护原理
什么是临界段临界段用一句话概括就是一段在执行的时候不能被中断的代码段。 在 FreeRTOS 里面,这个临界段最常出现的就是对全局变量的操作,由于不同任务间可以切换运行,当一个任务在访问某个全局变量时,这时其他任务切入,改变了该全局变量,再回到上个任务时访问该变量已经不是当时的值,这种情况可能会导致不可意料的后果。FreeRTOS 源码中就有多处临界段的处理,跟 FreeRTOS 一样,uCOS-II 和 uCOS-III 源码中都是有临界段的,而 RTX 的源码中不存在临界段。另外,除了 FreeRT原创 2021-12-30 20:17:54 · 2130 阅读 · 0 评论