FreeRTOS基本概念
1.在FreeRTOS中,使用的数据类型虽然都是标准C里面的数据类型,但是针对不同的处理器,对标准C的数据类型又进行了重新定义。
2.链表由节点组成,节点与节点之间首尾相连,节点包含用于指向后一个节点的指针。节点都是自定义类型的数据结构,可以使单个数据、数组、指针数据和自定义的结构体数据类型。
3.双向链表与单向量表的区别就是其节点中有两个指针,分别指向前后两个节点。
4.临界段是在执行时不能被中断的代码段。在FreeRTOS中,临界段最常出现的地方就是对全局变量的操作。
5.时间片:就是同一个优先级下可以有多个任务,每个任务轮流享用相同的CPU时间,享有CPU的时间叫做时间片。
6.FreeRTOS的任务可认为是一系列独立任务的集合。每个任务在自己的环境中运行。在任何时刻,只有一个任务得到运行,调度器决定运行哪个任务。调度器会不断的启动、停止每一个任务,宏观上看,所有的任务都在同时执行。
7.消息队列:任务间传递消息和数据的结构
8.信号量:单个事件同步,不需要传递消息时使用;对(全局变量等)共享资源的访问,防止冲突而设立的,用于同步任务。
- 二值信号量:类似一个标志位。仅”空“(0)和”非空“(1)两种状态
- 互斥信号量:(中断中无法使用)拥有优先级继承的二值信号量
- 计数信号量:用来事件计数和资源管理
9.事件:实现任务间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。
10.事件标志组:同步多个任务而设立的,标志位都置1了,才执行某操作
11.任务通知:可以在一定场合下替代 FreeRTOS 的信号量, 队列、事件组等。相对于以前使用FreeRTOS内核通信的资源时必须创建队列、二进制信号量、计数信号量或事件组的情况,使用任务通知更加灵活,解除阻塞的任务速度更快,更加节省内存空间。
12.互斥信号量和二值信号量的区别
- 占用资源多、运行速度慢:如果互斥对程序很关键,那么就该使用互斥量;如果互斥不是程序中的主要因素,那么就使用信号量,因为它比互斥量稍快,使用系统资源比较少。
- 互斥信号量:是特殊的信号量:计数器只有0和1
13.消息队列 和信号量 的线程同步的区别:消息队列的线程间通信是用于传递数据,而信号量的线程同步侧重的是信号量的指示作用。