本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。适用于快速了解FreeRTOS并进行开发、突击面试、对新手小白非常友好。期待您的后续关注和订阅
目录
1 FreeRTOS简介
1.1 什么为FreeRTOS?
首先,来看一下 FreeRTOS 这个名字,可以分为两部分:“Free”和“RTOS”。“Free”意味着免费、自由和不受约束,而“RTOS”则是实时操作系统(Real Time Operating System)的缩写。需要注意的是,RTOS 并不是指某一个特定的操作系统,而是一个类别,包括 μC/OS、FreeRTOS、RTX 和 RT-Thread 等等。这些都是 RTOS 类的操作系统。因此,从 FreeRTOS 这个名字中我们可以看出,它是一款免费的实时操作系统。
1.2 为什么选择FreeRTOS?
市场上的操作系统众多,为什么我们要选择FreeRTOS操作系统呢?并且大多数开发者都在使用此操作系统呢?原因如以下几点:
-
1.简单易用:FreeRTOS 使用简单,具有很好的可移植性,适合各种嵌入式开发平台;
-
2.任务不限:可创建的实时任务数量没有软件限制,根据系统资源灵活配置;
-
3.优先级不限:任务优先级分配没有限制,多个任务可以设置为同一优先级,灵活性高;
-
4.调度方式:支持抢占式调度、协程式调度(不再更新)、时间片调度,满足不同应用需求;
-
5.可裁剪:核心代码仅有 9000 多行,包含在 3 个 .c 文件中,非常容易裁剪和管理;
-
6.免费开源:FreeRTOS 是免费开源的,无潜在商业风险,无须担心版权问题;
-
7.模块化设计:FreeRTOS 采用模块化设计,使各个功能模块相互独立;
-
8.低功耗管理:FreeRTOS 支持进入各种低功耗模式,帮助延长电池寿命。
1.3 FreeRTOS与裸机的区别?
FreeRTOS与裸机的最大区别是:FreeRTOS在遇到突发情况的时候,可以进行程序的切换,然后再切换回来。举例来说:小王同学在打游戏,对象突然发来消息,并且过了一会儿肚子痛了。分别对应以下三种事件:
事件1:打游戏
事件2:对象消息
事件3:拉肚子
1.3.1 裸机中将如何处理?
裸机处理的方式就比较简单呆傻,会在完成一件事情之后再去完成另外一件事情。举例来说,程序会安排排列顺序依次运行。
对于裸机系统而言:
while(1)
{
打游戏();
回复信息();
上厕所();
}
在小王打完游戏之后,然后进行回复消息,然后进行上厕所。最后,回复对象消息不及时对象生气了,拉肚子也没有上厕所,忍着肚子痛打完设定时长的游戏。这个处理方式明显不合理,但裸机只会按照任务的顺序运行。于是有了我们的 FreeRTOS操作系统来改变这一方式。
1.3.2 FreeRTOS操作系统中将如何处理?
FreeRTOS的做法相对裸机来说会非常的聪明,首先创建三个任务
在打游戏的途中,如果收到对象的消息直接进行回复然后继续打游戏,肚子痛了就是上厕所然后回来可以继续打游戏。合理的将事情进行处理掉。 FreeRTOS处理的情况如下图:
1.4 FreeRTOS与裸机的特点
1.4.1 裸机
裸机系统,又称为前后台系统,由前台的中断服务函数和后台的主循环构成,运行时按照设定的任务顺序进行运行,以下是对裸机系统的一些问题的详细描述:
- 实时性差:应用程序轮流执行,导致实时性能不佳。
- 延迟:系统可能会空等待,浪费CPU时间。
- 结构臃肿:功能实现都在无限循环中,结构复杂且难维护。
1.4.2 FreeRTOS
RTOS特点:RTOS,全称为实时操作系统(Real Time OS),其主要特点是强调实时性。。具体特点如下:
- 延时函数:用于任务调度。
- 抢占式调度:高优先级任务可以抢占低优先级任务的执行。
- 任务堆栈:每个任务都有独立的栈空间。
- 分而治之:将功能划分为多个独立任务。
FreeRTOS其主要采用任务优先级的大小进行运行:任务优先级大的任务先运行,且可以打断任务优先级低的任务,在任务优先级高的任务运行完之后,低优先级任务继续执行。
本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。期待诸君的关注点赞!