FreeRTOS内部机制学习笔记
文章平均质量分 84
QRS_HL
这个作者很懒,什么都没留下…
展开
-
深入理解FreeRTOS_学习笔记(1.程序的本质)
***原创 2023-05-22 17:02:14 · 182 阅读 · 1 评论 -
深入理解FreeRTOS_学习笔记(2.任务的本质)
任务的创建大概都已经会使用了,可以使用静态和动态创建,使用静态创建需要自己定义栈空间大小,还需要设定相对应的宏。本章全程使用动态创建,不需要自定义栈空间大小。这章主要是讲了一下任务在内存中是怎么样的,下一期主要是写一下任务的调度原理,这就会用上TCB中的两个状态链表了,这需要去了解一下数据结构了。原创 2023-05-22 17:04:12 · 182 阅读 · 1 评论 -
深入理解FreeRTOS_学习笔记(3.任务调度的原理)
任务我们已经知道是什么了,如果还不了解任务内部的机制,就先看一下第二章的任务的本质。上一章在介绍任务结构体时发现了里面有两个链表,在本章就能很好的解释操作系统为什么会提供这两个链表了。知道上面的内容后,我们就得学习操作系统是怎么去管理任务的了。在FreeRTOS操作系统中,是通过链表来实现的。调度器需要先找出最高优先级的就绪态任务去运行,如果大家的优先级任务是一样的,大家就轮流执行,链表前面的先执行,运行一个时钟周期后调度器便将任务插入链表尾部,从而实现轮转执行。原创 2023-05-24 13:55:03 · 345 阅读 · 2 评论 -
深入理解FreeRTOS_学习笔记(4.队列的原理)
在裸机中我们都知道在两个函数之间如何进行通信,可以使用全局变量来传递。因为在裸机中函数是交替进行的,如果函数1对变量a进行了修改,那么函数2就必须要等待函数1运行完之后才能运行,这就保证运行的顺序,数据也就安全了。但是在操作系统中,每个任务几乎都是同时运行的,如果任务1才修改了变量,任务2就打断任务1运行把变量修改了,那就可能会达不到我们想要的结果,并且数据安全性也不高。因此互斥的访问变量就变得尤为重要,操作系统提供了这种方式,并且提供了内核对象消息队列来让任务之间进行通信。原创 2023-05-24 14:38:52 · 223 阅读 · 0 评论 -
深入理解FreeRTOS_学习笔记(5.信号量机制)
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。原创 2023-05-28 17:41:53 · 180 阅读 · 0 评论 -
深入理解FreeRTOS_学习笔记(6.事件标志组)
FreeRTOS中的事件标志组是一种同步和通信机制,用于在多任务应用程序中协调任务之间的操作,使得任务能够以非阻塞的方式等待事件的发生,并在事件发生后立即被通知。事件标志组是一个包含32个标志位的二进制掩码,每个标志位都可以用来表示一个特定的事件。任务可以通过设置或清除相应的标志位来指示事件的发生或取消,而其他任务可以等待标志位的状态改变。当一个标志位被置位或清零时,事件标志组会检查等待该标志位的任务,并将这些任务加入到调度队列中,以便可以立即被唤醒。原创 2023-05-29 16:37:57 · 151 阅读 · 0 评论 -
深入理解FreeRTOS_学习笔记(7.任务通知)
本文学习的也是最后一个通信方式,也就是任务通知,也可以称作“通知任务”。本文的重点主要有两点:1.搞明白任务通知的三个状态(实现任务通知的关键),2.明白任务通知的优缺点,以及任务通知模拟出来的队列、信号量、事件组与真实的有何区别这就是任务通信之间的最后一个方式了,我们前面一共学了多种通信,既可以让任务之间同步,也能让任务之间通信。原创 2023-05-30 16:13:06 · 158 阅读 · 1 评论 -
深入理解FreeRTOS_学习笔记(8.软件定时器)
定时器可以说是每个 MCU 都有的外设,有的 MCU 其定时器功能异常强大,比如提供 PWM、输入捕获等功能。但是最常用的还是定时器最基础的功能——定时,通过定时器来完成需要周期性处理的事务。MCU 自带的定时器属于硬件定时器,不同的 MCU 其硬件定时器数量不同,因为要考虑成本的问题。FreeRTOS 也提供了定时器功能,不过是软件定时器,软件定时器的精度肯定没有硬件定时器那么高,但是对于普通的精度要求不高的周期性处理的任务来说够了。原创 2023-05-31 18:22:13 · 561 阅读 · 4 评论 -
深入理解FreeRTOS_学习笔记(9.中断管理)
我们都知道在FreeRTOS中几乎每个函数都有两个api,分别是用在任务之间的和中断之间的,在中断中使用的话,api函数就要加上后缀FromISR。我们这一章主要学习一下FreeRTOS的中断机制。FreeRTOS只能在任务内进行屏蔽中断操作,一旦任务产生调度,中断则会被重新打开。原创 2023-06-01 13:08:05 · 613 阅读 · 1 评论 -
深入理解FreeRTOS_学习笔记(10.链表)
链表是FreeRTOS中使用次数相当多的,我们这一章主要就是链表项定义,插入,删除等一些操作,并且通过源码分析。如图所示,freertos具有非常多的链表宏操作freertos中对链表设定为双向链表,这是对数据结构中链表的深度理解,以及需要一定的C语言的代码能力。原创 2023-06-01 18:44:47 · 1405 阅读 · 1 评论 -
深入理解FreeRTOS_学习笔记(11.内存管理)
内存管理的五种方式转载 2023-06-04 15:07:29 · 83 阅读 · 0 评论